Apache Apisix轻松打造亿级流量Api网关

2023-10-24 11:11:43 浏览数 (2)

Apache APISIX 是一个动态、实时、高性能的 API 网关。

APISIX API 网关提供负载均衡、动态上行、灰度发布、熔断、鉴权、可观测等丰富的流量管理功能。

您可以使用 APISIX API 网关来处理传统的南北向流量, 以及服务之间的东西向流量。它也可以用作 k8s 入口控制器。

Apache APISIX 的技术架构:

特征

您可以使用 APISIX API 网关作为流量入口来处理所有业务数据,包括动态路由、动态上游、动态证书、 A/B测试、金丝雀发布、蓝绿部署、限速、恶意攻击防御、指标、监控告警、服务可观测性、服务治理等。

  • 所有平台
    • 云原生:与平台无关,无厂商锁定,APISIX API 网关可以从裸机运行到 Kubernetes。
    • 支持 ARM64:不用担心基础设施技术的锁定。
  • 多协议
    • TCP/UDP 代理:动态 TCP/UDP 代理。
    • Dubbo Proxy:动态 HTTP 到 Dubbo 代理。
    • 动态 MQTT 代理:支持通过 MQTT 进行负载均衡,均支持 MQTT 3.1.*、5.0。client_id
    • gRPC 代理:代理 gRPC 流量。
    • gRPC Web 代理:将 gRPC Web 流量代理到 gRPC 服务。
    • gRPC 转码:支持协议转码,以便客户端可以使用 HTTP/JSON 访问 gRPC API。
    • 代理网络套接字
    • 代理协议
    • HTTP(S) 转发代理
    • SSL:动态加载 SSL 证书。
  • 全动态
    • 热更新和热插件:持续更新其配置和插件,无需重新启动!
    • 代理重写:支持在发送到上游之前重写请求的、、、。hosturischemamethodheaders
    • 响应重写:为客户端设置自定义的响应状态代码、正文和标头。
    • 动态负载平衡:循环负载平衡与权重。
    • 基于哈希的负载平衡:通过一致的哈希会话进行负载平衡。
    • 健康检查:在上游节点上开启健康检查,在负载均衡过程中自动过滤不健康的节点,保证系统稳定性。
    • 断路器:智能跟踪不正常的上游服务。
    • 代理镜像:提供镜像客户端请求的功能。
    • 流量拆分:允许用户在各个上游之间增量定向流量百分比。
  • 细粒度路由
    • 支持全路径匹配和前缀匹配
    • 支持所有 Nginx 内置变量作为路由条件,因此可以使用 、 等作为路由条件来实现金丝雀发布、A/B 测试等。cookieargs
    • 支持各种算子作为路由的判断条件,例如{"arg_age", ">", 24}
    • 支持自定义路由匹配功能
    • IPv6:使用 IPv6 匹配路由。
    • 支持TTL
    • 支持优先级
    • 支持批量 http 请求
    • 支持按 GraphQL 属性过滤路由
  • 安全
    • 密钥身份验证
    • 智威汤逊
    • 基本身份验证
    • 沃尔夫-RBAC
    • 卡斯宾
    • 钥匙斗篷
    • 卡斯多尔
    • 丰富的身份验证和授权支持:
    • IP 白名单/黑名单
    • 推荐人白名单/黑名单
    • IdP:支持外部身份平台,如Auth0、okta等。
    • 限制要求
    • 限制计数
    • 限制并发
    • 反重做(正则表达式拒绝服务):无需配置的反重做S的内置策略。
    • 科尔斯为您的 API 启用 CORS(跨域资源共享)。
    • URI 阻止程序:通过 URI 阻止客户端请求。
    • 请求验证器
    • 企业社会责任基于双重提交 Cookie 的方式,保护您的 API 免受 CSRF 攻击。
  • 运维友好
    • 齐普金追踪:齐普金
    • 开源APM:支持Apache SkyWalking
    • 与外部服务发现一起工作:除了内置的etcd,它还支持Consul,Nacos,Eureka和Zookeeper(CP)。
    • 监控和指标:普罗米修斯
    • 集群:APISIX 节点是无状态的,创建集群的配置中心,请参考 etcd 集群指南。
    • 高可用:支持在同一集群中配置多个 etcd 地址。
    • 挡泥板
    • 版本控制:支持操作回滚。
    • CLI:通过命令行启动停止重新加载 APISIX。
    • 单机:支持从本地 YAML 文件加载路由规则,在 kubernetes(k8s) 下更友好。
    • 全局规则:允许为所有请求运行任何插件,例如:限制速率,IP过滤器等。
    • 高性能:单核QPS达到18k,平均时延小于0.2毫秒。
    • 故障注入
    • REST 管理员 API:使用 REST 管理 API 控制 Apache APISIX,默认只允许 127.0.0.1 访问,您可以修改 中的字段以指定允许调用管理 API 的 IP 列表。另请注意,管理 API 使用密钥身份验证来验证调用方的身份。在部署之前,需要修改 conf/config.yaml 中的admin_key字段以确保安全性。allow_adminconf/config.yaml
    • 外部记录器:将访问日志导出到外部日志管理工具。(HTTP Logger,TCP Logger,Kafka Logger,UDP Logger,RocketMQ Logger,SkyWalking Logger,Alibaba Cloud Logging(SLS),Google Cloud Logging,Splunk HEC Logging,File Logger,SolarWinds Loggly Logging,TencentCloud CLS)。
    • ClickHouse:将日志推送到ClickHouse。
    • Elasticsearch:将日志推送到 Elasticsearch。
    • Datadog:通过UDP协议将自定义指标推送到DogStatsD服务器,与Datadog代理捆绑在一起。DogStatsD基本上是StatsD协议的实现,它收集Apache APISIX代理的自定义指标,将其聚合到单个数据点中,并将其发送到配置的Datadog服务器。
    • 掌舵图
    • HashiCorp Vault:支持机密管理解决方案,用于从低信任环境中支持的 Vault 安全存储访问机密。目前,可以使用 APISIX 密钥资源从 jwt-auth 身份验证插件中的保管库链接 RS256 密钥(公钥-私钥对)或密钥。
  • 高度可扩展
    • 自定义插件:允许钩接常见阶段,例如、、、和,也允许挂钩舞台。rewriteaccessheader filterbody filterlogbalancer
    • 插件可以用Java/Go/Python编写
    • 插件可以用代理 Wasm SDK 编写
    • 自定义负载均衡算法:您可以在该阶段使用自定义负载均衡算法。balancer
    • 自定义路由:支持用户自行实现路由算法。
  • 多语言支持
    • Apache APISIX 是一个用于插件开发的多语言网关,并通过 和 提供支持。RPCWasm
    • RPC 方式,是当前的方式。开发者可以根据自己的需求选择语言,在与 RPC 启动独立进程后,通过本地 RPC 通信与 APISIX 交换数据。到目前为止,APISIX 还支持 Java、Golang、Python 和 Node.js。
    • Wasm或WebAssembly是一种实验性的方式。APISIX 可以通过使用 Proxy Wasm SDK 编写的 APISIX wasm 插件加载和运行 Wasm 字节码。开发者只需要根据 SDK 编写代码,然后使用 APISIX 编译成在 Wasm VM 上运行的 Wasm 字节码。
  • 无服务器
    • 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集群。

0 人点赞