网关选型对比

网关选型

网关简介

  • 网关是将一个网络与另一个网络进行相互连通,提供特定应用的网络间设备,应用网关必须能实现相应的应用协议。应用网关可以看做是运行于要求特定业务的客户机与提供所需业务的服务器之间的中间过程。应用网关在这类过程中,从用户侧来看它起着服务器的作用,从服务器侧来看它是一个客户机。

网关能力要求

  • 异步的,高性能的,跨语言的。
  • 支持多种语言和协议。
  • 插件化设计思想,插件热插拔,易扩展。
  • 丰富的插件种类,如鉴权、分流、限流、熔断等等。
  • 流量配置动态化,实例无需下线。
  • 支持集群部署,支持 A/B Test,蓝绿发布。

网关类型

  • 脚本型(Kong、Apache apisix )

    • Kong
      • 是一款基于OpenResty(Nginx + Lua模块)编写的高可用、易扩展的,开源的API Gateway项目。

      • Kong是基于NGINX和Apache Cassandra或PostgreSQL构建的,能提供易于使用的RESTful API来操作和配置API管理系统,所以它可以水平扩展多个Kong服务器,通过前置的负载均衡配置把请求均匀地分发到各个Server,来应对大批量的网络请求。

        • 整体架构:

          Kong

  • Apache apisix
    • APISIX 是一个云原生、高性能、可扩展的微服务 API 网关。

    • 它是基于 Nginx 和 etcd 来实现。

    • APISIX 具备动态路由和插件热加载,特别适合微服务体系下的 API 管理。

    • APISIX 是基于云原生的微服务 API 网关,它是所有业务流量的入口,可以处理传统的南北向流量,也可以处理服务间的东西向流量,也可以当做 k8s ingress controller 来使用。

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

      • 整体架构:

        flow-software-architecture

      • 插件加载过程:

        flow-load-plugin

      • 插件顺序:

      flow-plugin-internal

  • 应用型(Spring Cloud Gateway 、Apache ShenYu)

    • Spring Cloud Gateway
      • 基于Spring Framework 5、Project Reactor和Spring Boot 2.0。

      • 能够在任何请求属性上匹配路由。

      • 谓词和过滤器是特定于路由的。

      • 断路器的集成。

      • Spring Cloud DiscoveryClient集成。

      • 易于编写谓词和过滤器。请求速率限制。

      • 路径重写。

        • 整体架构:

          spring_cloud_gateway_diagram

    • Apache ShenYu
      • 是一个异步的,高性能的,跨语言的,响应式的 API 网关。

      • 支持各种语言(http 协议),支持 Dubbo、 Spring Cloud、 gRPC、 Motan、 Sofa、 Tars 等协议。

      • 插件化设计思想,插件热插拔,易扩展。

      • 灵活的流量筛选,能满足各种流量控制。

      • 内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。

      • 流量配置动态化,性能极高。

      • 支持集群部署,支持 A/B Test,蓝绿发布。

        • 整体架构:

          shenyu-framework-0a0c9cfb4419185cca8bbeeecdf57b06

              

        • 网关后台流程:

          68747470733a2f2f7368656e79752e6170616368652e6f72672f696d672f7368656e79752f6461746153796e632f7368656e79752d636f6e6669672d70726f636573736f722d656e2e706e67

        • 网关配置变更同步流程:

          1

网关对比

注:此对比为综合功能对比,除去后续研发插件、服务日常维护操作

  • 对比内容
    • 多语言支持

    • 多协议支持
    • 插件机制、易扩展、维护
    • 动态路由
    • ACL、Auth2 等鉴权机制
    • 流控规则
    • 请求转发、重写、重定向、指定负载
    • 集群与SpringCloud 生态易集成
    • 监控集成(Skywalking、Prometheus)
    • 网关界面化
    • 与Nacos集成
  • 综合功能对比

功能名称

支持的网关

功能优先级

多语言支持一般
多协议支持Apache Apisix、Apache ShenYu
插件机制、易扩展、维护Apache ShenYu、Apache Apisix、SpringCloud Gateway极高
动态路由Apache ShenYu、Apache Apisix、Kong极高
ACL、Auth2 等鉴权机制Apache ShenYu、Apache Apisix极高
流控规则Apache ShenYu、Apache Apisix、SpringCloud Gateway一般
请求转发、重写、重定向、指定负载Apache ShenYu、Apache Apisix、SpringCloud Gateway极高
集群与SpringCloud 生态易集成Apache ShenYu、SpringCloud Gateway
监控集成(Skywalking、Prometheus)Apache ShenYu、Apache Apisix极高
网关界面化Apache ShenYu、Apache Apisix极高
与Nacos集成SpringCloud Gateway、Apache Apisix(不满足生产要求)、Apache ShenYu(待验证)极高
  • 脚本类型对比

网关名称

网关类型

对比结论

建议选型

文档地址

Kong脚本型详见最下方官方对比Kong Gateway - v3.3.x | Kong Docs
Apache Apisix脚本型详见最下方官方对比Apache APISIX® -- Cloud-Native API Gateway
  • 应用类型对比

网关名称

网关类型

对比结论

建议选型

文档地址

SpringCloud Gateway应用型无界面化,仅简单插件,高级特性需要定制(spring默认粗实现,更多业务需求需要自己开发),不支持局部处理,每次请求需要执行所有filter效率低Spring Cloud Gateway
Apache ShenYu应用型多语言支持,界面化,支持多维度自定义插件Overview | Apache ShenYu
  • 网关功能使用验证

网关功能

网关名称(应用型简称AS)

网关名称(脚本型简称AA)

要求

对比结论

验证结果

路由Apache ShenYuApache Apisix应用型进行请求路由到配置ID服务均支持AA ✅ AS ✅
请求重写将请求重写进行调用AS 通过请求参数替换支持AA ✅ AS ❌
重定向将请求重新转发到指定的URLAA ✅ AS ✅
请求参数替换将请求路径中部分参数进行对应替换AA 通过请求重写支持AA ❌ AS ✅
静态负载AA ✅ AS ✅
动态负载AA 基于Ng upstram ,AS基于注册中心AA ✅ AS ✅
插件机制均类似基于责任链,按顺序调用插件处理AA ✅ AS ✅
与Nacos集成AA 界面支持实际功能不支持 AS多种注册中心支持,如Nacos、Eureka、Zookeeper 等AA ❌ AS ✅
与Skywalking集成均支持AA ✅ AS ✅
与Prometheus集成均支持,AS 刚开始支持,还需要迭代AA ✅ AS ✅
限流AA 基于NG ,AS 基于Sentinel 、RedisAA ✅ AS ✅
语言支持最好Java,有多语言客户端AA Lua ,AS Java 社区有 go、python sdk 计划AA ❌ AS ✅
  • 多类型多维度对比

网关名称

网关类型

对比结论

建议选型

Apache ShenYu应用型可与Eureka、Nacos等注册中心结合使用,用过bootstart方式依赖插件,与Apisix一样支持多维度自定义插件路由使用,Java语言开发 https://github.com/apache/incubator-shenyu/releases
Apache Apisix脚本型满足于ShenYu相同功能,与Nacos集成(当前版本不满足生产使用,刚支持Nacos做发现,存在Bug,https://github.com/apache/apisix/blob/release/2.12/CHANGELOG.md#2121),lua语言开发,属于云原生网关

参考文章

  • 官方Apache Apisix 与 Kong 对比图

    • 基础功能对比:

      Features

      Apache APISIX

      KONG

      Dynamic upstreamYesYes
      Dynamic routerYesYes
      Health checkYesYes
      Dynamic SSLYesYes
      L4 and L7 proxyYesYes
      OpentracingYesYes
      Custom pluginYesYes
      REST APIYesYes
      CLIYesYes
    • 高级功能对比:

    Features

    Apache APISIX

    Kong

    Features

    Apache APISIX

    Kong

    Belongs toApache Software FoundationKong Inc.
    Tech ArchitectureNginx + etcdNginx + Postgres
    Communication channelsMail list, Wechat group, QQ group, GitHubSlack, meetupGitHub, Freenode, forum
    Single-core CPU, QPS(enable limit-count and Prometheus plugins)180001700
    Latency0.2 ms2 ms
    DubboYesNo
    Configuration rollbackYesNo
    Route with TTLYesNo
    Plug-in hot loadingYesNo
    Custom LB and routeYesNo
    REST API <--> gRPC transcodingYesNo
    MQTTYesNo
    Configuration effective timeEvent-driven, < 1mspolling, 5 seconds
    DashboardYesNo
    IdPYesNo
    Configuration Center HAYesNo
    Speed limit for a specified time windowYesNo
    Support any Nginx variable as routing conditionYesNo
  • Apache 基金会开源项目活跃排名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值