MCPcopy Index your code
hub / github.com/easegress-io/easegress

github.com/easegress-io/easegress @v2.11.0 sqlite

repository ↗ · DeepWiki ↗ · release v2.11.0 ↗
5,758 symbols 22,183 edges 552 files 2,664 documented · 46%
README

Easegress

Go Report Card GitHub Workflow Status (branch) codecov Docker pulls License GitHub go.mod Go version Join Easegress Slack

Easegress logo

Easegress 简介

Easegress是一个云原生流量协调系统,具有以下特性:

  • 高可用性: 内置 Raft 共识和选举算法,提供 99.99% 的可用性。
  • 流量编排: 支持多种流量过滤器,轻松编排流量处理流程(Pipeline)。
  • 高性能: 基础功能采用轻量级方法实现,性能优异。
  • 可观察性: 周期性报告多种统计数据,系统状态尽在掌握。
  • 可扩展性: 良好的 API 设计,不必知道底层细节,也能自己开发过滤器和控制器。
  • 集成性: 接口简单,易于与其他系统集成,如: Kubernetes Ingress Controller、EaseMesh 边车、工作流等。

下面是其架构图:

架构

你可以查看 Easegress DeepWiki页面,了解更多详细信息。

功能

  • 服务管理
  • 支持多种协议
    • HTTP/1.1
    • HTTP/2
    • HTTP/3(QUIC)
    • MQTT
  • 路由规则:精确路径、路径前缀、路径的正则表达式、方法、标头、客户端IP地址。
  • 弹性和容错
    • 断路器: 暂时阻止可能的故障。
    • 速率限制: 限制请求的速率。
    • 重试:重试失败的请求。
    • 时间限制:限制请求的执行时间。
  • 部署管理
    • 蓝绿部署:一次性切换流量。
    • 金丝雀部署:按着色编排流量。
  • API管理
    • API聚合:聚合多个API的结果。
    • API编排:编排API的处理流程。
  • 安全
    • IP过滤:限制对IP地址/地址段的访问。
    • 静态HTTPS:静态证书文件。
    • API签名:支持 HMAC 验证。
    • JWT验证:验证 JWT Token
    • OAuth2:验证 OAuth/2 请求。
    • Let's Encrypt: 自动管理证书文件。
  • 管道过滤机制
    • 过滤器管理:轻松开发新过滤器。
  • 服务网格
    • 网格主控:是管理网格服务生命周期的控制平面。
    • 边车:是数据平面,作为端点进行流量拦截和路由。
    • 网格入口控制器:是针对网格的入口控制器,将外部流量路由到网格服务。 > 注意,EaseMesh使用了此功能。
  • 第三方的集成
    • FaaS:与 ServerLess 平台 Knative 集成。
    • 服务发现:与 Eureka、Consul、Etcd 和 Zookeeper 集成。
    • 入口控制器:与 Kubernetes 集成,作为入口控制器。
  • 扩展性
  • WebAssembly:执行用户开发的 WebAssembly 代码。
  • 高性能和可用性
  • 改编:使用过滤器改编请求和应答。
  • 验证:标头验证、OAuth2、JWT 和 HMAC 验证。
  • 负载平衡:轮询、随机、加权随机、IP哈希、标头哈希,支持会话锁定。
  • 缓存:缓存后端服务的应答,减少对后端服务的请求量。
  • 压缩:减少应答数据的体积。
  • 热更新:线上更新 Easegress 的配置和二进制文件,服务不中断。
  • 操作
  • 易于集成:命令行(egctl)、Easegress Portal,以及 HTTP 客户端,如 curl、postman 等。
  • 分布式跟踪
  • 可观察性
    • 节点:角色(primary、secondary)、是不是Leader,健康状态、最后一次心跳时间,等等。
    • 多维度的服务器和后端流量数据
    • 吞吐量:请求数、TPS/m1、m5、m15 和错误百分比等。
    • 延迟:p25、p50、p75、p95、p98、p99、p999。
    • 数据大小:请求和响应大小。
    • 状态代码:HTTP状态代码。
    • TopN:按 API 聚合并排序(仅服务器维度)。
  • AI 集成
  • 代理: 支持将请求代理到 LLM 提供商,如 OpenAI、DeepSeek、Anthropic 等。
  • Anthropic API 适配: 将 Anthropic API 的请求和响应适配为 OpenAI 格式。
  • 向量数据库: 集成向量数据库以实现缓存。
  • 监控: 提供对 AI 模型性能和使用情况的监控。

用户案例

下面的例子展示了如何在不同场景下使用 Easegress。

完整的列表请参见 TutorialsCookbook

入门

文档

社区

许可证

Easegress 采用 Apache 2.0 许可证。详见 LICENSE 文件。

Extension points exported contracts — how you extend this code

Validator (Interface)
Validator stands for the types which needs its own Validate function. NOTE: Please always define Validate on non-pointer [59 …
pkg/v/validaterecorder.go
Object (Interface)
Object is the common interface for all objects whose lifecycle supervisor handles. [23 implementers]
pkg/supervisor/registry.go
Handler (Interface)
Handler is the common interface for all traffic handlers, which handle the traffic represented by ctx. [44 implementers]
pkg/context/context.go
Filter (Interface)
Filter is the interface of filters handling traffic of various protocols. [32 implementers]
pkg/filters/filters.go
WAFHandler (Interface)
WAFHandler is used to handle WAF requests. [44 implementers]
pkg/object/wafcontroller/wafcontroller.go
Mutex (Interface)
Mutex is a cluster level mutex. [7 implementers]
pkg/cluster/mutex.go
Metricer (Interface)
Metricer is the interface to convert metrics to EaseMonitor format. [5 implementers]
pkg/util/easemonitor/easemonitor.go
YAMLVisitor (Interface)
YAMLVisitor walk through multiple YAML documents [4 implementers]
cmd/client/command/visitor.go

Core symbols most depended-on inside this repo

Errorf
called by 568
pkg/logger/export.go
Set
called by 360
pkg/protocols/protocols.go
HandleAPIError
called by 227
pkg/api/error.go
Add
called by 202
pkg/protocols/protocols.go
Get
called by 184
pkg/protocols/protocols.go
Error
called by 169
pkg/object/aigatewaycontroller/middlewares/vectordb/pgvector/errors.go
Name
called by 160
pkg/object/wafcontroller/rulegroup.go
Unlock
called by 149
pkg/object/meshcontroller/storage/storage.go

Shape

Method 3,064
Function 1,704
Struct 813
Interface 70
TypeAlias 61
FuncType 46

Languages

Go100%

Modules by API surface

pkg/object/meshcontroller/informer/informer.go84 symbols
pkg/object/meshcontroller/service/service.go68 symbols
pkg/filters/wasmhost/hostfunc.go59 symbols
pkg/object/mqttproxy/mock_test.go55 symbols
pkg/object/mqttproxy/mqtt_test.go52 symbols
pkg/object/trafficcontroller/trafficcontroller.go43 symbols
pkg/tracing/tracing.go42 symbols
pkg/util/signer/signer.go41 symbols
pkg/object/serviceregistry/serviceregistry.go41 symbols
pkg/object/meshcontroller/spec/spec.go40 symbols
pkg/object/serviceregistry/watcher.go39 symbols
pkg/object/mqttproxy/broker.go39 symbols

Dependencies from manifests, versioned

contrib.go.opencensus.io/exporter/ocagentv0.7.1-0.20200907061 · 1×
dario.cat/mergov1.0.1 · 1×
github.com/ArthurHlt/go-eureka-clientv1.1.0 · 1×
github.com/Azure/azure-sdk-for-go/sdk/azcorev1.8.0 · 1×
github.com/Azure/azure-sdk-for-go/sdk/azidentityv1.4.0 · 1×
github.com/Azure/azure-sdk-for-go/sdk/internalv1.4.0 · 1×
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/dns/armdnsv1.1.0 · 1×
github.com/Azure/go-ansitermv0.0.0-2021061722524 · 1×
github.com/AzureAD/microsoft-authentication-library-for-gov1.2.0 · 1×
github.com/GehirnInc/cryptv0.0.0-2023032006175 · 1×
github.com/Masterminds/goutilsv1.1.1 · 1×

Datastores touched

postgresDatabase · 1 repos

For agents

$ claude mcp add easegress \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact