Easegress 是一个云原生流量编排系统,设计用于:
- 高可用性:内置的 Raft 共识和领导者选举提供 99.99% 的可用性。
- 流量编排:对每个流量管道的各种过滤器进行简单的编排。
- 高性能:轻量级和基本功能可加快性能。
- 可观察性:以可读的方式周期性地有许多有意义的统计数据。
- 可扩展性:使用高级编程语言可以轻松开发自己的过滤器或控制器。
- 集成:简单的接口使其易于与其他系统集成,例如 Kubernetes Ingress、EaseMesh sidecar、Workflow 等。
Easegress 的基本常见用法是为后端服务器快速设置代理。
Easegress 的架构:
特性:
-
服务管理
-
多种协议:
- HTTP/1.1
- HTTP/2
- HTTP/3(QUIC)
- MQTT(即将推出)
- 丰富的路由规则:精确路径、路径前缀、路径的正则表达式、方法、标头。
-
弹性和容错
- 断路器:暂时阻断可能的故障。
- 速率限制器:限制传入请求的速率。
- 重试器:重复失败的执行。
- 时间限制器:限制执行的持续时间。
-
部署管理
- 蓝绿策略:一次切换流量。
- Canary 策略:稍微安排流量。
-
API 管理
- API聚合:聚合多个API的结果。
- API 编排:编排API的流程。
- 安全
-
管道过滤机制
- 责任链模式:编排过滤器链。
- 过滤器管理:使开发新过滤器变得容易。
-
服务网格
- Mesh Master:是管理网格服务生命周期的控制平面。
- Mesh Sidecar:以数据平面为端点,做流量拦截和路由。
-
Mesh Ingress Controller:是特定于网格的入口控制器,用于将外部流量路由到网格服务。
注意:此功能由EaseMesh利用
-
第三方集成
- FaaS与无服务器平台 Knative 集成。
- 服务发现与 Eureka、Consul、Etcd 和 Zookeeper 集成。
- 入口控制器作为入口控制器与 Kubernetes 集成。
-
多种协议:
-
可扩展性
- WebAssembly执行用户开发的WebAssembly代码。
-
高性能和可用性
- 适应:在处理链中适应请求、响应。
- 验证:标头验证、OAuth2、JWT 和 HMAC 验证。
- 负载均衡:循环、随机、加权随机、ip 哈希、头部哈希。
- 缓存:用于后端服务器。
- 压缩:压缩响应体。
- 热更新:在不丢失连接的情况下更新 Easegress 的配置和二进制文件。
-
Operation
-
易于集成:命令行(
egctl
)、MegaEase Portal、HTTP 客户端如 curl、postman 等。 -
分布式追踪
- 内置开放式 Zipkin
- 供应商中立 API 的开放跟踪
-
可观察性
- 节点:角色(leader、writer、reader)、健康与否、上次心跳时间等
-
流量:多维度:服务器和后端。
- 吞吐量:请求计数、TPS/m1、m5、m15、错误百分比等的总数和错误统计。
- 延迟: p25、p50、p75、p95、98、p99、p999。
- 数据大小:请求和响应大小。
- 状态代码: HTTP 状态代码。
- TopN:按聚合API排序(仅在服务器维度)。
-
易于集成:命令行(