Apache APISIX API 网关
Apache APISIX是一个动态、实时、高性能的 API 网关。
APISIX API网关提供负载均衡、动态上行、金丝雀发布、熔断、认证、可观察性等丰富的流量管理功能。
您可以使用APISIX API Gateway处理传统的南北向流量以及服务之间的东西向流量。它还可以用作 k8s 入口控制器。
Apache APISIX的技术架构:
社区
- 请为 G2 中的 APISIX 撰写评论。
- 邮件列表:发送邮件至 [email protected],按照回复订阅邮件列表。
- Slack Workspace - 邀请链接(如果此链接已过期,请打开问题),然后加入 #apisix 频道(频道 -> 浏览频道 -> 搜索“apisix”)。
- - 使用主题标签
#ApacheAPISIX
关注我们并与我们互动 - 文档
- 讨论
- 博客
特征
您可以使用APISIX API网关作为流量入口来处理所有业务数据,包括动态路由、动态上行、动态证书、A/B测试、金丝雀发布、蓝绿部署、限速、恶意攻击防御、指标、监控报警、服务可观测性、服务治理等。
所有平台
- 云原生:与平台无关,没有供应商锁定,APISIX API 网关可以从裸机运行到 Kubernetes。
- 支持ARM64:不用担心基础设施技术的锁定。
多协议
- TCP/UDP 代理:动态 TCP/UDP 代理。
- Dubbo 代理:动态 HTTP 到 Dubbo 代理。
- 动态MQTT代理:支持通过
client_id
负载均衡MQTT,均支持MQTT 3.1.*、5.0。 - gRPC 代理:代理 gRPC 流量。
- gRPC Web 代理:将 gRPC Web 流量代理到 gRPC 服务。
- gRPC转码:支持协议转码,以便客户端可以通过HTTP/JSON访问您的gRPC API。
- 代理Websocket
- 代理协议
- HTTP(S) 转发代理
- SSL:动态加载SSL证书
- 带有 QUIC 的 HTTP/3
全动态
- 热更新和热插件:持续更新其配置和插件,无需重启!
- 代理重写:支持在发送到上游之前重写请求的
host
、 uri
、 schema
、 method
、 headers
。 - 响应重写:向客户端设置自定义响应状态代码、正文和标头。
- 动态负载平衡:根据权重进行循环负载平衡。
- 基于哈希的负载平衡:使用一致的哈希会话进行负载平衡。
- 健康检查:对上游节点启用健康检查,负载均衡时会自动过滤不健康的节点,保证系统稳定性。
- 断路器:智能跟踪不健康的上游服务。
- 代理镜像:提供镜像客户端请求的能力。
- 流量分割:允许用户逐步引导各个上游之间的流量百分比。
细粒度路由
- 支持全路径匹配和前缀匹配
- 支持所有 Nginx 内置变量作为路由条件,因此您可以使用
cookie
、 args
等作为路由条件来实现金丝雀发布、A/B 测试等。 - 支持各种运算符作为路由的判断条件,例如
{"arg_age", ">", 24}
- 支持自定义路由匹配功能
- IPv6:使用IPv6来匹配路由。
- 支持TTL
- 支持优先
- 支持批量Http请求
- 支持通过GraphQL属性过滤路由
安全
- 丰富的身份验证和授权支持:
- 密钥认证
- 智威汤逊
- 基本认证
- 沃尔夫-rbac
- 卡宾
- 钥匙斗篷
- 卡斯多尔
- IP白名单/黑名单
- 引用者白名单/黑名单
- IdP:支持外部身份平台,如Auth0、okta等。
- 限制要求
- 限制计数
- 限制并发
- Anti-ReDoS(正则表达式拒绝服务):内置反ReDoS策略,无需配置。
- CORS 为您的 API 启用 CORS(跨源资源共享)。
- URI 阻止程序:通过 URI 阻止客户端请求。
- 请求验证器
- CSRF 基于
Double Submit Cookie
方式,保护您的 API 免受 CSRF 攻击。
操作友好
- 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访问,可以修改
conf/config.yaml
中的allow_admin
字段来指定允许调用Admin API的IP列表。另请注意,管理 API 使用密钥身份验证来验证调用者的身份。 - 外部记录器:将访问日志导出到外部日志管理工具。 (HTTP 记录器、TCP 记录器、Kafka 记录器、UDP 记录器、RocketMQ 记录器、SkyWalking 记录器、阿里云记录器(SLS)、Google Cloud 记录器、Splunk HEC 记录器、文件记录器、SolarWinds Loggly 记录器、腾讯云 CLS)。
- ClickHouse:将日志推送到ClickHouse。
- Elasticsearch:将日志推送到Elasticsearch。
- Datadog:通过 UDP 协议将自定义指标推送到 DogStatsD 服务器,与 Datadog 代理捆绑在一起。 DogStatsD 基本上是 StatsD 协议的实现,它收集 Apache APISIX 代理的自定义指标,将其聚合成单个数据点并将其发送到配置的 Datadog 服务器。
- 舵图
- HashiCorp Vault:支持秘密管理解决方案,用于从低信任环境中支持的 Vault 安全存储访问秘密。目前,可以使用 APISIX Secret 资源从 jwt-auth 身份验证插件中的保管库链接 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编写代码,然后编译成Wasm字节码,在带有APISIX的Wasm VM上运行。
无服务器
- 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 基础知识的好方法。只需按照入门中的步骤操作即可。
此外,您可以按照文档尝试更多插件。
管理接口
Apache APISIX 提供 REST Admin API 来动态控制 Apache APISIX 集群。
插件开发
您可以参考插件开发指南,以及示例插件example-plugin
的代码实现。阅读插件概念将帮助您了解有关插件的更多信息。
更多文档请参考 Apache APISIX 文档站点
基准
使用AWS的八核服务器,APISIX的QPS达到14万,延迟仅为0.2毫秒。
Benchmark脚本已经开源,欢迎尝试和贡献。
APISIX 也可以在 AWS graviton3 C7g 中完美运行。
用户故事
- 欧洲 eFactory 平台:API 安全网关 – 在 eFactory 平台中使用 APISIX
- 哥白尼参考系统软件
- 更多故事
谁使用 APISIX API 网关?
各种各样的公司和组织使用 APISIX API Gateway 进行研究、生产和商业产品,以下是其中的一些:
- 空中云汇
- 哔哩哔哩
- 视源股份
- 欧洲电子工厂平台
- 欧洲哥白尼参考系统
- 吉利
- 荣誉
- 地平线机器人
- 爱奇艺
- 联想
- 美国宇航局喷气推进实验室
- 奈雪
- OPPO
- 青云
- 瑞士电信
- 腾讯游戏
- 环球旅天
- 体内
- 新浪微博
- 微城
- WPS
- 小鹏
- 飞涨
标志
- Apache APISIX 徽标(PNG)
- Apache APISIX 徽标源
致谢
灵感来自孔和橙色。
执照
阿帕奇 2.0 许可证