前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache Apisix轻松打造亿级流量Api网关

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

作者头像
架构狂人
发布2023-10-24 11:11:43
7260
发布2023-10-24 11:11:43
举报
文章被收录于专栏:架构狂人架构狂人

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集群。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 顶尖架构师栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 特征
相关产品与服务
API 网关
腾讯云 API 网关(API Gateway)是腾讯云推出的一种 API 托管服务,能提供 API 的完整生命周期管理,包括创建、维护、发布、运行、下线等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档