[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9958":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":44,"readmeContent":45,"aiSummary":46,"trendingCount":16,"starSnapshotCount":16,"syncStatus":47,"lastSyncTime":48,"discoverSource":49},9958,"easegress","easegress-io\u002Feasegress","easegress-io","A Cloud Native traffic orchestration system","https:\u002F\u002Fmegaease.com\u002Feasegress\u002F",null,"Go",5872,496,98,8,0,1,4,3,39.09,"Apache License 2.0",false,"main",[25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"api-gateway","cloud-native","distributed-systems","etcd","gateway","go","golang","http","kubernetes","load-balancer","mesh","microservice","microservices","proxy-server","raft","reverse-proxy","service-mesh","sidecar","traffic","2026-06-12 02:02:15","# Easegress  \u003C!-- omit from toc -->\n\n[![Go Report Card](https:\u002F\u002Fgoreportcard.com\u002Fbadge\u002Fgithub.com\u002Feasegress-io\u002Feasegress)](https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Feasegress-io\u002Feasegress)\n[![GitHub Workflow Status (branch)](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Feasegress-io\u002Feasegress\u002Ftest.yml?branch=main)](https:\u002F\u002Fgithub.com\u002Feasegress-io\u002Feasegress\u002Factions\u002Fworkflows\u002Ftest.yml)\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Feasegress-io\u002Feasegress\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg?token=5Q80B98LPI)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Feasegress-io\u002Feasegress)\n[![Docker pulls](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Fmegaease\u002Feasegress.svg)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fmegaease\u002Feasegress)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache%202.0-blue.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FApache-2.0)\n[![GitHub go.mod Go version](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fgo-mod\u002Fgo-version\u002Feasegress-io\u002Feasegress)](https:\u002F\u002Fgithub.com\u002Feasegress-io\u002Feasegress\u002Fblob\u002Fmain\u002Fgo.mod)\n[![Join Easegress Slack](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fslack-megaease-brightgreen?logo=slack)](https:\u002F\u002Fcloud-native.slack.com\u002Fmessages\u002Feasegress)\n[![OpenSSF Best Practices](https:\u002F\u002Fwww.bestpractices.dev\u002Fprojects\u002F8265\u002Fbadge)](https:\u002F\u002Fwww.bestpractices.dev\u002Fprojects\u002F8265)\n[![FOSSA Status](https:\u002F\u002Fapp.fossa.com\u002Fapi\u002Fprojects\u002Fgit%2Bgithub.com%2Feasegress-io%2Feasegress.svg?type=shield)](https:\u002F\u002Fapp.fossa.com\u002Fprojects\u002Fgit%2Bgithub.com%2Feasegress-io%2Feasegress?ref=badge_shield)\n\n\u003Ca href=\"https:\u002F\u002Fmegaease.com\u002Feasegress\">\n    \u003Cimg src=\".\u002Fdocs\u002Fimgs\u002Feasegress.svg\"\n        alt=\"Easegress logo\" title=\"Easegress\" height=\"175\" width=\"175\" align=\"right\"\u002F>\n\u003C\u002Fa>\n\n- [What is Easegress](#what-is-easegress)\n- [Features](#features)\n- [Getting Started](#getting-started)\n  - [Launch Easegress](#launch-easegress)\n  - [Reverse Proxy](#reverse-proxy)\n- [Use Cases](#use-cases)\n- [Documentation](#documentation)\n- [Easegress Portal](#easegress-portal)\n  - [Screenshots](#screenshots)\n- [Community](#community)\n- [Contributing](#contributing)\n- [License](#license)\n\n## What is Easegress\n\n`Easegress` is a Cloud Native traffic orchestration system designed for:\n\n- **High Availability:** Built-in Raft consensus & leader election provides 99.99% availability.\n- **Traffic Orchestration:** Simple orchestration of various filters for each traffic pipeline.\n- **High Performance:** Lightweight and essential features speed up the performance.\n- **Observability:** There are many meaningful statistics periodically in a readable way.\n- **Extensibility:** It's easy to develop your own filter or controller with high-level programming language.\n- **Integration:** The simple interfaces make it easy to integrate with other systems, such as Kubernetes Ingress, [EaseMesh](https:\u002F\u002Fgithub.com\u002Fmegaease\u002Feasemesh) sidecar, Workflow, etc.\n\nThe architecture of Easegress:\n\n![architecture](.\u002Fdocs\u002Fimgs\u002Farchitecture.png)\n\nAnd you can check [Easegress DeepWiki Page](https:\u002F\u002Fdeepwiki.com\u002Feasegress-io\u002Feasegress) to dive into more details.\n\n## Features\n\n- **Service Management**\n  - **Multiple protocols:**\n    - HTTP\u002F1.1\n    - HTTP\u002F2\n    - HTTP\u002F3(QUIC)\n    - MQTT\n  - **Rich Routing Rules:** exact path, path prefix, regular expression of the path, method, headers, clientIPs.\n  - **Resilience&Fault Tolerance**\n    - **CircuitBreaker:** temporarily blocks possible failures.\n    - **RateLimiter:** limits the rate of incoming requests.\n    - **Retry:** repeats failed executions.\n    - **TimeLimiter:** limits the duration of execution.\n  - **Deployment Management**\n    - **Blue-green Strategy:** switches traffic at one time.\n    - **Canary Strategy:** schedules traffic slightly.\n  - **API Management**\n    - **API Aggregation:** aggregates results of multiple APIs.\n    - **API Orchestration:** orchestrates the flow of APIs.\n  - **Security**\n    - **IP Filter:** Limits access to IP addresses.\n    - **Static HTTPS:** static certificate files.\n    - **API Signature:** supports [HMAC](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHMAC) verification.\n    - **JWT Verification:** verifies [JWT Token](https:\u002F\u002Fjwt.io\u002F).\n    - **OAuth2:** validates [OAuth\u002F2](https:\u002F\u002Fdatatracker.ietf.org\u002Fdoc\u002Fhtml\u002Frfc6749) requests.\n    - **Let's Encrypt:** automatically manage certificate files.\n  - **Pipeline-Filter Mechanism**\n    - **Filter Management:** makes it easy to develop new filters.\n  - **Service Mesh**\n    - **Mesh Master:** is the control plane to manage the lifecycle of mesh services.\n    - **Mesh Sidecar:** is the data plane as the endpoint to do traffic interception and routing.\n    - **Mesh Ingress Controller:** is the mesh-specific ingress controller to route external traffic to mesh services.\n        > Notes: This feature is leveraged by [EaseMesh](https:\u002F\u002Fgithub.com\u002Fmegaease\u002Feasemesh)\n  - **Third-Part Integration**\n    - **FaaS** integrates with the serverless platform Knative.\n    - **Service Discovery** integrates with Eureka, Consul, Etcd, and Zookeeper.\n    - **Ingress Controller** integrates with Kubernetes as an ingress controller.\n- **Extensibility**\n  - **WebAssembly** executes user developed [WebAssembly](https:\u002F\u002Fwebassembly.org\u002F) code.\n- **High Performance and Availability**\n  - **Adaption**: adapts request, response in the handling chain.\n  - **Validation**: headers validation, OAuth2, JWT, and HMAC verification.\n  - **Load Balance:** round-robin, random, weighted random, IP hash, header hash and support sticky sessions.\n  - **Cache:** for the backend servers.\n  - **Compression:** compresses body for the response.\n  - **Hot-Update:** updates both config and binary of Easegress in place without losing connections.\n- **Operation**\n  - **Easy to Integrate:** command line([egctl](docs\u002F02.Tutorials\u002F2.1.egctl-Usage.md)), Easegress Portal, HTTP clients such as curl, postman, etc.\n  - **Distributed Tracing**\n    - Built-in [OpenTelemetry](https:\u002F\u002Fopentelemetry.io\u002F), which provides a vendor-neutral API.\n  - **Observability**\n    - **Node:** role(primary, secondary), raft leader status, healthy or not, last heartbeat time, and so on\n    - **Traffic:** in multi-dimension: server and backend.\n      - **Throughput:** total and error statistics of request count, TPS\u002Fm1, m5, m15, and error percent, etc.\n      - **Latency:** p25, p50, p75, p95, p98, p99, p999.\n      - **Data Size:** request and response size.\n      - **Status Codes:** HTTP status codes.\n      - **TopN:** sorted by aggregated APIs(only in server dimension).\n- **AI Integration**\n  - **Proxy:** proxy requests to LLM providers like OpenAI, DeepSeek, Anthropic, etc.\n  - **Anthropic API Adaption:** adapts requests and responses in Anthropic API to OpenAI format.\n  - **Vector Database:** integrates with vector databases for caching.\n  - **Monitoring:** provides insights into the performance and usage of AI models.\n\n## Getting Started\n\nThe basic usage of Easegress is to quickly set up a proxy for the backend servers.\n\n### Launch Easegress\n\nEasegress can be installed from pre-built binaries or from source. For details, see [Install](docs\u002F01.Getting-Started\u002F1.2.Install.md).\n\nThen we can execute the server:\n\n```bash\n$ easegress-server\n2023-09-06T15:12:49.256+08:00   INFO    cluster\u002Fconfig.go:110   config: advertise-client-urls: ...\n...\n```\n\nBy default, Easegress opens ports 2379, 2380, and 2381; however, you can modify these settings along with other arguments either in the configuration file or via command-line arguments. For a complete list of arguments, please refer to the `easegress-server --help` command.\n\nAfter launching successfully, we could check the status of the one-node cluster.\n\n```bash\n$ egctl get member\n...\n\n$ egctl describe member\n...\n```\n\n### Reverse Proxy\n\nAssuming you have two backend HTTP services running at `127.0.0.1:9095` and `127.0.0.1:9096`, you can initiate an HTTP proxy from port 10080 to these backends using the following command:\n\n```bash\n$ egctl create httpproxy demo --port 10080 \\\n  --rule=\"\u002Fpipeline=http:\u002F\u002F127.0.0.1:9095,http:\u002F\u002F127.0.0.1:9096\"\n```\n\nThen try it:\n\n```bash\ncurl -v 127.0.0.1:10080\u002Fpipeline\n```\n\nThe request will be forwarded to either `127.0.0.1:9095\u002Fpipeline` or `127.0.0.1:9096\u002Fpipeline`, utilizing a round-robin load-balancing policy.\n\nMore about getting started with Easegress:\n\n- [Quick Start](docs\u002F01.Getting-Started\u002F1.1.Quick-Start.md)\n- [Install Easegress](docs\u002F01.Getting-Started\u002F1.2.Install.md)\n- [Main Concepts](docs\u002F01.Getting-Started\u002F1.3.Concepts.md)\n\n## Use Cases\n\nThe following examples show how to use Easegress for different scenarios.\n\n- [API Aggregation](docs\u002F02.Tutorials\u002F2.3.Pipeline-Explained.md#api-aggregation) - Aggregating many APIs into a single API.\n- [Cluster Deployment](docs\u002F05.Administration\u002F5.1.Config-and-Cluster-Deployment.md) - How to deploy multiple Easegress cluster nodes.\n- [Canary Release](docs\u002F03.Advanced-Cookbook\u002F3.04.Canary-Release.md) - How to do canary release with Easegress.\n- [Distributed Tracing](docs\u002F03.Advanced-Cookbook\u002F3.05.Distributed-Tracing.md) - How to do APM tracing  - Zipkin.\n- [FaaS](docs\u002F03.Advanced-Cookbook\u002F3.09.FaaS.md) - Supporting Knative FaaS integration\n- [Flash Sale](docs\u002F03.Advanced-Cookbook\u002F3.09.FaaS.md) - How to do high concurrent promotion sales with Easegress\n- [Kubernetes Ingress Controller](docs\u002F04.Cloud-Native\u002F4.1.Kubernetes-Ingress-Controller.md) - How to integrate with Kubernetes as ingress controller\n- [LoadBalancer](docs\u002F02.Tutorials\u002F2.3.Pipeline-Explained.md#load-balancer) - A number of the strategies of load balancing\n- [MQTTProxy](docs\u002F03.Advanced-Cookbook\u002F3.01.MQTT-Proxy.md) - An Example to MQTT proxy with Kafka backend.\n- [Multiple API Orchestration](docs\u002F03.Advanced-Cookbook\u002F3.03.Multiple-API-Orchestration.md) - An Telegram translation bot.\n- [Performance](docs\u002F03.Advanced-Cookbook\u002F3.11.Performance.md) - Performance optimization - compression, caching etc.\n- [Pipeline](docs\u002F02.Tutorials\u002F2.3.Pipeline-Explained.md) - How to orchestrate HTTP filters for requests\u002Fresponses handling\n- [Resilience and Fault Tolerance](docs\u002F02.Tutorials\u002F2.4.Resilience.md) - CircuitBreaker, RateLimiter, Retry, TimeLimiter, etc. (Porting from [Java resilience4j](https:\u002F\u002Fgithub.com\u002Fresilience4j\u002Fresilience4j))\n- [Security](docs\u002F02.Tutorials\u002F2.5.Traffic-Verification.md) - How to do authentication by Header, JWT, HMAC, OAuth2, etc.\n- [Service Registry](docs\u002F03.Advanced-Cookbook\u002F3.06.Service-Registry.md) - Supporting the Microservice registries - Zookeeper, Eureka, Consul, Nacos, etc.\n- [WebAssembly](docs\u002F03.Advanced-Cookbook\u002F3.07.WasmHost.md) - Using AssemblyScript to extend the Easegress\n- [WebSocket](docs\u002F02.Tutorials\u002F2.6.Websocket.md) - WebSocket proxy for Easegress\n- [Workflow](docs\u002F03.Advanced-Cookbook\u002F3.10.Workflow.md) - An Example to make a workflow for a number of APIs.\n\nFor full list, see [Tutorials](docs\u002F02.Tutorials\u002FREADME.md) and [Cookbook](docs\u002F03.Advanced-Cookbook\u002FREADME.md).\n\n## Documentation\n\n- [Getting Started](docs\u002F01.Getting-Started\u002FREADME.md)\n- [Tutorials](docs\u002F02.Tutorials\u002FREADME.md)\n- [Advanced Cookbook](docs\u002F03.Advanced-Cookbook\u002FREADME.md)\n- [Cloud Native](docs\u002F04.Cloud-Native\u002FREADME.md)\n- [Administration](docs\u002F05.Administration\u002FREADME.md)\n- [Development](docs\u002F06.Development-for-Easegress\u002FREADME.md)\n- [Reference](docs\u002F07.Reference\u002FREADME.md)\n\n## Easegress Portal\n\n[Easegress Portal](https:\u002F\u002Fgithub.com\u002Feasegress-io\u002Feasegress-portal) is an intuitive, open-source user interface for the Easegress traffic orchestration system. Developed with React.js, this portal provides config management, metrics, and visualizations, enhancing the overall Easegress experience.\n\n### Screenshots\n\n**1. Cluster Management**\n\n![cluster](.\u002Fdocs\u002Fimgs\u002Fportal\u002Fcluster.png)\n\n**2. Traffic Management**\n\n![traffic http server](.\u002Fdocs\u002Fimgs\u002Fportal\u002Ftraffic-http-server.png)\n\n**3. Pipeline Management**\n\n![pipeline detail](.\u002Fdocs\u002Fimgs\u002Fportal\u002Fpipeline-detail.png)\n\n## Community\n\n- [Join Slack Workspace](https:\u002F\u002Fcloud-native.slack.com\u002Fmessages\u002Feasegress) for requirement, issue and development.\n- [MegaEase on Twitter](https:\u002F\u002Ftwitter.com\u002Fmegaease)\n\n### Community Tools\n\n- [KubeStellar Console Guided Install](https:\u002F\u002Fconsole.kubestellar.io\u002Fmissions\u002Finstall-easegress) - Step-by-step guided installation with pre-flight checks, validation, troubleshooting, and rollback.\n\n## Contributing\n\nSee [Contributing guide](.\u002FCONTRIBUTING.md#contributing). The project welcomes contributions and suggestions that abide by the [CNCF Code of Conduct](.\u002FCODE_OF_CONDUCT.md).\n\n## License\n\nEasegress is under the Apache 2.0 license. See the [LICENSE](.\u002FLICENSE) file for details.\n\n[![FOSSA Status](https:\u002F\u002Fapp.fossa.com\u002Fapi\u002Fprojects\u002Fgit%2Bgithub.com%2Feasegress-io%2Feasegress.svg?type=large)](https:\u002F\u002Fapp.fossa.com\u002Fprojects\u002Fgit%2Bgithub.com%2Feasegress-io%2Feasegress?ref=badge_large)\n","Easegress 是一个云原生流量编排系统，旨在提供高可用性、高性能的流量管理和路由功能。它基于 Go 语言开发，支持 Raft 共识算法和领导者选举机制以确保系统的高可用性（99.99%）。核心功能包括但不限于：流量编排、服务发现与管理、负载均衡以及丰富的可观测性特性。此外，Easegress 提供了高度可扩展性和易于集成的能力，允许用户通过高级编程语言自定义过滤器或控制器，并且可以方便地与 Kubernetes Ingress 等其他系统整合。适用于需要高效处理大规模网络请求、微服务架构下的流量控制以及希望提升系统整体可靠性的场景。",2,"2026-06-11 03:25:49","top_topic"]