国产开源项目 APISIX:基于云原生的微服务 API 网关

技术编辑:鸣飞 发自北京
SegmentFault 思否报道丨公众号:SegmentFault


apisix.jpg

APISIX 是基于云原生的微服务 API 网关,它是所有业务流量的入口,可以处理传统的南北向流量,也可以处理服务间的东西向流量,也可以当做 k8s ingress controller 来使用。APISIX 由深圳支流科技团队研发并且进入 Apache 基金会开始孵化。

APISIX 通过插件机制,提供动态负载平衡、身份验证、限流限速等功能,并且支持你自己开发的插件。

更多详细的信息,可以查阅APISIX 的白皮书

你可以把 Apache APISIX 当做流量入口,来处理所有的业务数据,包括动态路由、动态上游、动态证书、 A/B 测试、金丝雀发布(灰度发布)、蓝绿部署、限流限速、抵御恶意攻击、监控报警、服务可观测性、服务治理等。

项目地址:https://github.com/apache/inc...

功能

  • 全平台

    • 云原生: 平台无关,没有供应商锁定,无论裸机还是 Kubernetes,APISIX 都可以运行。
    • 运行环境: OpenResty 和 Tengine 都支持。
    • 支持ARM64: 不用担心底层技术的锁定。
  • 多协议

    • TCP/UDP 代理: 动态 TCP/UDP 代理。
    • 动态 MQTT 代理: 支持用client_id对 MQTT 进行负载均衡,同时支持 MQTT3.1.*5.0两个协议标准。
    • gRPC 代理:通过 APISIX 代理 gRPC 连接,并使用 APISIX 的大部分特性管理你的 gRPC 服务。
    • gRPC 协议转换:支持协议的转换,这样客户端可以通过 HTTP/JSON 来访问你的 gRPC API。
    • Websocket 代理
    • Proxy Protocol
    • Dubbo 代理:基于 Tengine,可以实现 Dubbo 请求的代理。
    • HTTP(S) 反向代理
    • SSL:动态加载 SSL 证书。
  • 全动态能力

    • 热更新和热插件: 无需重启服务,就可以持续更新配置和插件。
    • 代理请求重写: 支持重写请求上游的hosturischemaenable_websocketheaders信息。
    • 输出内容重写: 支持自定义修改返回内容的status codebodyheaders
    • Serverless: 在 APISIX 的每一个阶段,你都可以添加并调用自己编写的函数。
    • 动态负载均衡:动态支持有权重的 round-robin 负载平衡。
    • 支持一致性 hash 的负载均衡:动态支持一致性 hash 的负载均衡。
    • 健康检查:启用上游节点的健康检查,将在负载均衡期间自动过滤不健康的节点,以确保系统稳定性。
    • 熔断器: 智能跟踪不健康上游服务。
  • 精细化路由

  • 安全防护

  • 运维友好

    • OpenTracing 可观测性:支持 Apache Skywalking 和 Zipkin
    • 监控和指标:Prometheus
    • 集群:APISIX 节点是无状态的,创建配置中心集群请参考etcd Clustering Guide
    • 高可用:支持配置同一个集群内的多个 etcd 地址。
    • 控制台: 内置控制台来操作 APISIX 集群。
    • 版本控制:支持操作的多次回滚。
    • CLI: 使用命令行来启动、关闭和重启 APISIX。
    • 单机模式: 支持从本地配置文件中加载路由规则,在 kubernetes(k8s) 等环境下更友好。
    • 全局规则:允许对所有请求执行插件,比如黑白名单、限流限速等。
    • 高性能:在单核上 QPS 可以达到 18k,同时延迟只有 0.2 毫秒。
    • 故障注入
    • REST Admin API
    • Python SDK
  • 高度可扩展

    • 自定义插件: 允许挂载常见阶段,例如init,rewriteaccessbalancer,header filerbody filterlog阶段。
    • 自定义负载均衡算法:可以在balancer阶段使用自定义负载均衡算法。
    • 自定义路由: 支持用户自己实现路由算法。

安装

APISIX 在以下操作系统中可顺利安装并做过运行测试,需要注意的是:OpenResty 的版本必须 >= 1.15.8.1:

CentOS 7, Ubuntu 16.04, Ubuntu 18.04, Debian 9, Debian 10, macOS,ARM64Ubuntu 18.04

安装 APISIX 的步骤:

  1. 安装运行时依赖:OpenResty 和 etcd,参考依赖安装文档
  2. 有以下几种方式来安装 Apache APISIX:

SegmentFault思否微信公众号

阅读 1.2k

推荐阅读

第一时间为开发者提供行业相关的实时热点资讯

20443 人关注
1871 篇文章
专栏主页