转载

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

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

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

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

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

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

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

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

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

功能

  • 全平台

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

    • TCP/UDP 代理 : 动态 TCP/UDP 代理。
    • 动态 MQTT 代理 : 支持用 client_id 对 MQTT 进行负载均衡,同时支持 MQTT 3.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 的负载均衡。
    • 健康检查 :启用上游节点的健康检查,将在负载均衡期间自动过滤不健康的节点,以确保系统稳定性。
    • 熔断器: 智能跟踪不健康上游服务。
  • 精细化路由

    • 支持全路径匹配和前缀匹配
    • 支持使用 Nginx 所有内置变量做为路由的条件 ,所以你可以使用 cookie , args 等做为路由的条件,来实现灰度发布、A/B 测试等功能
    • 支持 各类操作符做为路由的判断条件 ,比如 {"arg_age", ">", 24}
    • 支持 自定义路由匹配函数
    • IPv6:支持使用 IPv6 格式匹配路由
    • 支持路由的 自动过期(TTL)
    • 支持路由的优先级
  • 安全防护

    • 多种身份认证方式: key-auth , JWT , basic-auth , wolf-rbac 。
    • IP 黑白名单
    • IdP 支持 : 支持外部的身份认证服务,比如 Auth0,Okta,Authing 等,用户可以借此来对接 Oauth2.0 等认证方式。
    • 限制速率
    • 限制请求数
    • 限制并发
    • 防御 ReDoS(正则表达式拒绝服务):内置策略,无需配置即可抵御 ReDoS。
    • CORS
  • 运维友好

    • 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, ARM64 Ubuntu 18.04

安装 APISIX 的步骤:

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

    • 通过 源码包安装 ;
    • 如果你在使用 CentOS 7,可以使用 RPM 包安装 ;
    • 其它 Linux 操作系统,可以使用 Luarocks 安装方式 ;
    • 你也可以使用 Docker 镜像 来安装。

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

原文  https://segmentfault.com/a/1190000022308288
正文到此结束
Loading...