Apache APISIX是一个动态、实时、高性能的 API 网关。
APISIX API网关提供丰富的流量管理功能,如负载均衡、动态上游、金丝雀发布、熔断、身份验证、可观察性等。
您可以使用APISIX API Gateway来处理传统的南北向流量,以及服务之间的东西向流量。它也可以用作k8s ingress controller。
Apache APISIX 的技术架构:
- 请写评论
- 邮件列表:发送邮件至dev-subscribe@apisix.apache.org,按照回复即可订阅邮件列表。
- Slack Workspace -邀请链接(如果此链接已过期,请打开一个问题),然后加入 #apisix 频道(频道 -> 浏览频道 -> 搜索“apisix”)。
- 使用主题标签关注我们并与我们互动
#ApacheAPISIX
- 文档
- 讨论
- 博客
您可以使用APISIX API网关作为流量入口,处理所有的业务数据,包括动态路由、动态上行、动态证书、A/B测试、金丝雀发布、蓝绿部署、限速、防御恶意攻击、指标、监控报警、服务可观测性、服务治理等。
-
所有平台
- 云原生:与平台无关,不受供应商锁定,APISIX API 网关可以从裸机运行到 Kubernetes。
- 支持ARM64:不必担心基础技术的锁定。
-
多协议
- TCP/UDP 代理:动态 TCP/UDP 代理。
- Dubbo 代理:动态 HTTP 到 Dubbo 代理。
- 动态 MQTT 代理:支持通过 MQTT 负载平衡
client_id
,均支持 MQTT 3.1.*、5.0。 - gRPC 代理:代理 gRPC 流量。
- gRPC Web 代理:将 gRPC Web 流量代理到 gRPC 服务。
- gRPC 转码:支持协议转码,以便客户端可以使用 HTTP/JSON 访问您的 gRPC API。
- 代理 Websocket
- 代理协议
- HTTP(S) 正向代理
- SSL:动态加载 SSL 证书。
-
全动态
-
细粒度路由
- 支持全路径匹配和前缀匹配
- 支持所有Nginx内置变量作为路由的条件,因此您可以使用
cookie
、args
等作为路由条件实现金丝雀发布、A/B测试等。 - 支持多种操作符作为路由的判断条件,例如
{"arg_age", ">", 24}
- 支持自定义路线匹配功能
- IPv6:使用IPv6匹配路由。
- 支持TTL
- 支持优先级
- 支持批量 Http 请求
- 支持通过 GraphQL 属性过滤路由
-
安全
-
操作友好
- Zipkin 追踪:Zipkin
- 开源APM:支持Apache SkyWalking
- 与外部服务发现配合使用:除了内置的 etcd 之外,还支持Consul、Consul_kv、Nacos、Eureka和Zookeeper (CP)。
- 监控和指标:Prometheus
- 集群:APISIX 节点是无状态的,创建配置中心的集群,请参考etcd 集群指南。
- 高可用性:支持在同一个集群中配置多个etcd地址。
- 仪表板
- 版本控制:支持操作回滚。
- CLI:通过命令行启动\停止\重新加载 APISIX。
- Standalone:支持从本地YAML文件加载路由规则,在kubernetes(k8s)等环境下更加友好。
- 全局规则:允许针对所有请求运行任何插件,例如:限制速率、IP 过滤器等。
- 高性能:单核QPS达到18k,平均延迟小于0.2毫秒。
- 故障注入
- REST Admin API:使用 REST Admin API 控制 Apache APISIX,默认只允许 127.0.0.1 访问,可以修改
allow_admin
中的字段conf/config.yaml
指定允许调用 Admin API 的 IP 列表。另外注意 Admin API 使用 key auth 来验证调用者的身份。需要在部署前修改中的字段以admin_key
conf/config.yaml
确保安全。 - 外部日志记录器:将访问日志导出到外部日志管理工具。(HTTP 日志记录器、TCP 日志记录器、Kafka 日志记录器、UDP 日志记录器、RocketMQ 日志记录器、SkyWalking 日志记录器、阿里云日志记录(SLS)、Google Cloud Logging、Splunk HEC Logging、文件日志记录器、SolarWinds Loggly Logging、腾讯云 CLS)。
- ClickHouse:将日志推送到 ClickHouse。
- Elasticsearch:将日志推送到 Elasticsearch。
- Datadog:通过 UDP 协议将自定义指标推送到 DogStatsD 服务器,与Datadog 代理捆绑在一起。DogStatsD 基本上是 StatsD 协议的一个实现,它收集 Apache APISIX 代理的自定义指标,将其聚合为单个数据点并将其发送到配置的 Datadog 服务器。
- Helm 图表
- HashiCorp Vault :支持机密管理解决方案,用于从低信任环境中支持的 Vault 安全存储访问机密。目前,可以使用APISIX Secret资源从 jwt-auth 身份验证插件中的 Vault 链接 RS256 密钥(公钥-私钥对)或密钥。
-
高度可扩展
- 自定义插件:允许挂接常见阶段,例如
rewrite
,,,和,还允许挂接阶段。access
header filter
body filter
log
balancer
- 插件可以用 Java/Go/Python 编写
- 可以使用 Proxy Wasm SDK 编写插件
- 自定义负载平衡算法:您可以在该阶段使用自定义负载平衡算法
balancer
。 - 自定义路由:支持用户自己实现路由算法。
- 自定义插件:允许挂接常见阶段,例如
-
多语言支持
- Apache APISIX 是一个用于插件开发的多语言网关,并通过
RPC
和提供支持Wasm
。 - RPC 方式,是目前的方式。开发者可以根据需求选择语言,通过 RPC 启动独立进程后,通过本地 RPC 通信与 APISIX 进行数据交互。目前 APISIX 已经支持Java、Golang、Python和 Node.js 。
- Wasm,即 WebAssembly,是一种实验性的方式。APISIX 可以通过使用Proxy Wasm SDK编写的APISIX wasm 插件来加载并运行 Wasm 字节码。开发者只需要按照 SDK 的说明编写代码,然后使用 APISIX 将其编译为可以在 Wasm VM 上运行的 Wasm 字节码即可。
- Apache APISIX 是一个用于插件开发的多语言网关,并通过
-
无服务器
- Lua 函数:调用 APISIX 中各个阶段的函数。
- AWS Lambda:与 AWS Lambda 功能集成,作为动态上游将特定 URI 的所有请求代理到 AWS API 网关端点。支持通过 api 密钥和 AWS IAM 访问密钥进行授权。
- Azure Functions:与 Azure Serverless Function 无缝集成,作为动态上游将对特定 URI 的所有请求代理到 Microsoft Azure 云。
- Apache OpenWhisk:与 Apache OpenWhisk 无缝集成,作为动态上游将对特定 URI 的所有请求代理到您自己的 OpenWhisk 集群。
-
安装
请参阅安装文档。
-
入门
入门指南是学习 APISIX 基础知识的绝佳方式。只需按照入门指南中的步骤操作即可。
此外,您可以按照文档尝试更多插件。
-
管理 API
Apache APISIX 提供REST Admin API来动态控制 Apache APISIX 集群。
-
插件开发
更多文档请参考Apache APISIX 文档站点
使用AWS的八核服务器,APISIX的QPS达到14万,延迟仅为0.2ms。
基准测试脚本已开源,欢迎尝试和贡献。
APISIX 在 AWS Graviton3 C7g 中也能完美运行。
访问此处以生成随时间推移的贡献者。
各种各样的公司和组织使用 APISIX API 网关进行研究、生产和商业产品,其中一些如下:
- 空中云汇
- 比利比利
- 视源电子
- 欧洲 eFactory 平台
- 欧洲哥白尼参考系
- 吉利
- 荣誉
- 地平线机器人
- 爱奇艺
- 联想
- 美国宇航局喷气推进实验室
- 奈雪
- OPPO
- 青云
- 瑞士电信
- 腾讯游戏
- 中国民航信息
- 活体
- 新浪微博
- 我们城市
- WPS
- 小鹏汽车
- 飞涨
APISIX 丰富了
CNCF API 网关环境。
受到金刚和橙子的启发。