GithubHelp home page GithubHelp logo

ryan-eng-del / forest Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 0.0 188.01 MB

Forest is a GRPC | TCP | HTTP protocol gateway ⚡️ high-performance microservices gateway

License: Apache License 2.0

Go 98.00% Shell 1.41% Batchfile 0.59%
gateway go grpc high-perfomance http proxy proxy-server server

forest's Introduction

Forest

icon Forest is a high-performance gateway.

✨ Features

  • Supports multiple downstream node load balancing and provides a variety of load balancing strategies, such as random rounds, sequential rounds, consistent hash and weighted rounds.
  • Supports Grpc, Tcp and Http protocol request forwarding with minimal overhead.
  • Supports actively monitoring and probing the status of downstream nodes and updating the node status in real time.
  • Supports distributed flow limiting in different level, such as second level flow limiting, hour level flow limiting and day level flow limiting.
  • Supports multi-tenant authentication and authorization
  • Supports protocol headers conversion
  • Supports QPS statistics
  • Support one-dimensional RPC and streaming RPC middleware.

System Architecture

icon

🚀 Deploy

Binary Executables

Mac/Linux:

sh goBuildUnix.sh

Windows:

./goBuildWin.bat

K8s (Without Persistent Storage)

kubectl apply -f KubernetesDashboard.yaml
kubectl apply -f KubernetesProxy.yaml

K8s (With Persistent Storage)

PV and PVC is used to persistent storage log files.

kubectl apply -f KubernetesDashboardWithPv.yaml
kubectl apply -f KubernetesProxyWithPv.yaml

Docker

  • forest-gateway-dashboard:latest
  • forest-gateway:latest
sh linuxDockerBuild.sh

🛠️ Install

  1. git clone
git clone https://github.com/Ryan-eng-del/Forest.git
  1. install dependencies
export GO111MODULE=on && export GOPROXY=https://goproxy.cn
cd Forest
go mod tidy
  1. customize config file in conf/dev | conf/prod
mysql.toml
redis.toml
proxy.toml
base.toml
  1. start server

start control panel server

go run main.go run -c ./conf/dev/ -p control

start proxy server

go run main.go run -c ./conf/dev/ -p proxy

start proxy server and panel server

go run main.go run -c ./conf/dev/ -p both

📜 Representations

Forest gateway project is extracted from my company's gateway business, of course, at the same time, also refer to the online implementation of many gateway components, special thanks to the didi company's GateKeeper, gave me a lot of reference ideas. The future plan is to add business testing, and already performance testing.

License

forest gateway is released under the Apache 2.0 license. See LICENSE.txt.

forest's People

Contributors

ryan-eng-del avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

forest's Issues

Desire for a Chinese README

I'm not a native English speaker, but I really appreciate your project and would like to have a Chinese version of the README.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.