您可以使用Apache APISIX作为流量入口来处理所有的业务数据,包括动态路由、动态上游、动态证书、A/B测试、金丝雀发布、蓝绿部署、极限速率、防御恶意攻击、指标、监控警报、服务可观察性、服务治理等。
所有平台
云原生。平台不可知,没有厂商锁定,APISIX可以从裸机到Kubernetes运行。
运行环境。同时支持OpenResty和Tengine。
支持ARM。不用担心对infra技术的锁定。
多种协议
TCP/UDP代理。动态TCP/UDP代理。
Dubbo代理。动态HTTP到Dubbo代理。
动态MQTT代理。支持通过客户端_id来平衡MQTT的负载,都支持MQTT 3.1.*, 5.0。
gRPC代理。代理gRPC流量。
gRPC转码。支持协议转码,使客户可以通过使用HTTP/JSON访问你的gRPC API。
代理Websocket
代理协议
代理Dubbo。基于Tengine的Dubbo代理。
HTTP(S)转发代理
SSL:动态加载一个SSL证书。
完全动态
热更新和热插件。持续更新其配置和插件,而无需重新启动!
代理重写。支持重写主机、URI、模式、启用网络接口、请求的头文件,然后再发送到上游。
响应重写。设置自定义的响应状态代码、正文和头信息给客户端。
无服务器。在APISIX的每个阶段调用函数。
动态负载平衡。循环式负载平衡,有权重。
基于哈希的负载平衡。用一致的散列会话进行负载平衡。
健康检查。在上游节点上启用健康检查,并将在负载平衡期间自动过滤不健康的节点,以确保系统稳定。
断路器。对不健康的上游服务进行智能跟踪。
代理镜像。提供镜像客户端请求的能力。
流量分割。允许用户在各种上游之间逐步引导一定比例的流量。
细粒度的路由
支持全路径匹配和前缀匹配
支持所有Nginx内置变量作为路由的条件,因此可以使用cookie、args等作为路由条件,实现金丝雀发布、A/B测试等。
支持各种运算符作为路由的判断条件,例如{arg_age, >, 24}。
支持自定义路由匹配功能
IPv6:使用IPv6来匹配路由。
支持TTL
支持优先级
支持批量Http请求
安全性
认证:密钥认证、JWT、基本认证、wolf-rbac
IP白名单/黑名单
引用者白名单/黑名单
IdP:支持外部认证服务,如Auth0、okta等,用户可以借此连接到OAuth 2.0和其他认证方式。
限制要求
限额-计数
限额货币(Limit-currency
反ReDoS(正则表达式拒绝服务)。内置政策,无需配置就可以反ReDoS。
CORS 为你的API启用CORS(跨源资源共享)。
URI阻止器:通过URI阻止客户端请求。
请求验证器
OPS友好型
OpenTracing:支持Apache Skywalking和Zipkin。
与外部服务发现一起工作:除了内置的etcd,它还支持Consul和Nacos,以及Eureka。
监测和度量。普罗米修斯
集群。APISIX节点是无状态的,创建配置中心的集群,请参考etcd集群指南。
高可用性。支持在同一个集群中配置多个etcd地址。
仪表板
版本控制。支持操作的回滚。
CLI:通过命令行启动/停止/重新加载APISIX。
独立的。支持从本地YAML文件加载路由规则,这对kubernetes(k8s)来说更友好。
全局规则。允许对所有请求运行任何插件,例如:限制速率、IP过滤等。
高性能。单核QPS达到18k,平均延迟小于0.2毫秒。
故障注入
REST管理API。使用REST Admin API控制Apache APISIX,默认只允许127.0.0.1访问,你可以修改conf/config.yaml中的allow_admin字段,指定允许调用Admin API的IP列表。另外,请注意,Admin API使用密钥认证来验证调用者的身份。conf/config.yaml中的admin_key字段需要在部署前进行修改以确保安全。
外部记录器。将访问日志导出到外部日志管理工具。(HTTP Logger, TCP Logger, Kafka Logger, UDP Logger)
舵手图
高度的可扩展性
自定义插件。允许钩住常见的阶段,如重写、访问、标题过滤、正文过滤和日志,也允许钩住平衡器阶段。
自定义负载平衡算法。你可以在平衡器阶段使用自定义负载平衡算法。
自定义路由。支持用户自己实现路由算法。
巴西对喀麦隆首发