{"id":24767332,"url":"https://github.com/lunarianss/forest","last_synced_at":"2025-07-27T07:37:16.774Z","repository":{"id":223478620,"uuid":"759740122","full_name":"lunarianss/Forest","owner":"lunarianss","description":"Forest is a GRPC | TCP | HTTP protocol gateway ⚡️  high-performance microservices gateway","archived":false,"fork":false,"pushed_at":"2024-04-30T11:51:20.000Z","size":192520,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T19:21:56.099Z","etag":null,"topics":["gateway","go","grpc","high-perfomance","http","proxy","proxy-server","server"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lunarianss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-19T08:46:55.000Z","updated_at":"2024-08-02T19:55:49.000Z","dependencies_parsed_at":"2024-04-30T13:07:56.361Z","dependency_job_id":null,"html_url":"https://github.com/lunarianss/Forest","commit_stats":null,"previous_names":["ryan-eng-del/go-gateway","lunarianss/forest"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lunarianss/Forest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lunarianss%2FForest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lunarianss%2FForest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lunarianss%2FForest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lunarianss%2FForest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lunarianss","download_url":"https://codeload.github.com/lunarianss/Forest/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lunarianss%2FForest/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267325115,"owners_count":24069403,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-27T02:00:11.917Z","response_time":82,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gateway","go","grpc","high-perfomance","http","proxy","proxy-server","server"],"created_at":"2025-01-29T00:53:17.469Z","updated_at":"2025-07-27T07:37:16.736Z","avatar_url":"https://github.com/lunarianss.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Forest\n\n![icon](icon/forest.svg) Forest is a high-performance\ngateway.\n\n## ✨ Features\n\n- 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.\n- Supports Grpc, Tcp and Http protocol request forwarding with minimal overhead.\n- Supports actively monitoring and probing the status of downstream nodes and updating the node status in real time.\n- Supports distributed flow limiting in different level, such as second level flow limiting, hour level flow limiting and day level flow limiting.\n- Supports multi-tenant authentication and authorization\n- Supports protocol headers conversion\n- Supports QPS statistics\n- Support one-dimensional RPC and streaming RPC middleware.\n\n## System Architecture\n\n![icon](icon/gateway.png)\n\n## 🚀 Deploy\n\n### Binary Executables\n\nMac/Linux:\n\n```shell\nsh goBuildUnix.sh\n```\n\nWindows:\n\n```shell\n./goBuildWin.bat\n```\n\n### K8s (Without Persistent Storage)\n\n```shell\nkubectl apply -f KubernetesDashboard.yaml\nkubectl apply -f KubernetesProxy.yaml\n```\n\n### K8s (With Persistent Storage)\n\nPV and PVC is used to persistent storage log files.\n\n```shell\nkubectl apply -f KubernetesDashboardWithPv.yaml\nkubectl apply -f KubernetesProxyWithPv.yaml\n```\n\n### Docker\n\n- **forest-gateway-dashboard:latest**\n- **forest-gateway:latest**\n\n```shell\nsh linuxDockerBuild.sh\n```\n\n## 🛠️ Install\n\n1. git clone\n\n```shell\ngit clone https://github.com/Ryan-eng-del/Forest.git\n```\n\n2. install dependencies\n\n```shell\nexport GO111MODULE=on \u0026\u0026 export GOPROXY=https://goproxy.cn\ncd Forest\ngo mod tidy\n```\n\n3. customize config file in conf/dev | conf/prod\n\n```shell\nmysql.toml\nredis.toml\nproxy.toml\nbase.toml\n```\n\n4. start server\n\n**start control panel server**\n\n```shell\ngo run main.go run -c ./conf/dev/ -p control\n```\n\n**start proxy server**\n\n```shell\ngo run main.go run -c ./conf/dev/ -p proxy\n\n```\n\n**start proxy server and panel server**\n\n```shell\ngo run main.go run -c ./conf/dev/ -p both\n```\n\n## 📜 Representations\n\nForest 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.\n\n## License\n\n`forest gateway` is released under the Apache 2.0 license. See [LICENSE.txt](LICENSE.txt).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flunarianss%2Fforest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flunarianss%2Fforest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flunarianss%2Fforest/lists"}