【云原生】Gateway网关选型

这篇具有很好参考价值的文章主要介绍了【云原生】Gateway网关选型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

网关一般分为流量网关和业务网关,流量网关负责接入所有的流量,并分发给不同的子系统,那在具体的业务接入之前,还有一层业务网关。

流量网关提供全局性的、与后端业务应用无关的策略,例如 HTTPS证书卸载、Web防火墙、全局流量监控、日志记录、黑白名单控制、接入请求到业务系统的负载均衡等,比如Kong。

业务网关业务紧耦合的、提供单个业务域级别的策略,如服务治理、身份认证,权限控制、日志输出、数据加密、熔断限流等等,比如K8s的Ingress。

流量网关负责南北向流量调度及安全防护,业务网关负责东西向流量调度及服务治理。

【云原生】Gateway网关选型

这张图展示了一个多层 Gateway 架构,其中有一个总的 Gateway 接入所有的流量(流量网关),并分发给不同的子系统,还有第二级 Gateway 用于做各个子系统的接入 Gateway(业务网关)。可以看到,网关所管理的服务力度可粗可细。通过网关,我们可以把分布式架构组织成一个星型架构,由网络对服务的请求进行路由和分发。但是随着k8s的普及,Ingress 成为 K8s 生态的网关标准,促使流量网关和业务网关,合二为一。

常见的网关

  • Nginx

k8s已经将Nginx与Ingress Controller合并为一个组件: ingress-nginx-controller

  • OpenResty

Nginx + Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

  • Kong

It is based on Nginx and OpenResty. Kong or Kong API Gateway is a cloud-native, platform-agnostic, scalable API Gateway distinguished for its high performance and extensibility via plugins.

By providing functionality for proxying, routing, load balancing, health checking, authentication (and more), Kong serves as the central layer for orchestrating microservices or conventional API traffic with ease.

Kong runs natively on Kubernetes thanks to its official Kubernetes Ingress Controller.

The top Kong features include:

  • Advanced routing, load balancing, health checking - all configurable via a RESTful admin API or declarative configuration.

  • Authentication and authorization for APIs using methods like JWT, basic auth, OAuth, ACLs and more.

  • Proxy, SSL/TLS termination, and connectivity support for L4 or L7 traffic.

  • Plugins for enforcing traffic controls, rate limiting, req/res transformations, logging, monitoring and including a plugin developer hub.

  • Sophisticated deployment models like Declarative Databaseless Deployment and Hybrid Deployment (control plane/data plane separation) without any vendor lock-in.

  • Native ingress controller support for serving Kubernetes.

【云原生】Gateway网关选型
【云原生】Gateway网关选型
  • Apisix

It is based on Nginx and OpenResty. APISIX 是一个微服务API网关,具有高性能、可扩展性等优点。它基于 nginx(openresty)和 Lua 实现功能,借鉴了Kong的思路,将Kong底层的关系型数据库(Postgres)替换成了NoSQL型的 etcd,这使得 APISIX 相较于 Kong 在性能上有了很大提升,在启用各类插件的情况下,Apache APISIX 的性能是 Kong 的 10 倍,且Apisix是100%开源的,它的功能和Kong收费版的功能相当。

【云原生】Gateway网关选型

功能

APISIX

KONG

反向代理和路由

支持

支持

负载均衡

支持

支持

身份验证和授权

支持

支持

IP列表白名单/黑名单

支持

支持

限速和流控

支持

支持

请求变形

支持

支持

版本控制

支持

支持

断路器

支持

支持

多协议支持

支持

支持

缓存

支持

支持

数据库存储

etcd

Postgres/Cassandra

  • Zuul

Zuul是Netflix公司开源的,使用了一系列不同类型的过滤器,被构建来支持动态路由、监视、弹性和安全性,使我们能够快速灵活地将功能应用到服务中。Zuul采用同步阻塞架构,依赖多线程来支持吞吐量的增长,性能较低。

  • Zuul2

Netflix宣布了通用API网关Zuul的架构转型。Zuul原本采用同步阻塞架构,转型后叫作Zuul2,采用异步非阻塞架构。Zuul2和Zuul1在架构方面的主要区别在于,Zuul2运行在异步非阻塞的框架上,比如Netty。性能比Zuul高20%左右。

  • Spring Cloud Gateway

SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。在于高并发 非阻塞式通信的话就非常有优势了。它的目标是提供统一的路由方式且也是基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流、反向代理、鉴权、流量控制、熔断、日志监控... 是SpringCloud团队研发的,能够很好的融入到SpringCloud产品中。

  • Envoy

Envoy was purpose-built to have a dynamic configuration API (no more config files and hot-reloads with dropped connections!), fine-grained visibility into backends with Service/Endpoint Discovery, and exceptional performance and tight tail-latency since it’s based on C++. These are very important considerations for organizations using modern proxy technology in performant and highly dynamic (ie, cloud) environments.

Lastly, Envoy is supported by hundreds of companies and is also where the innovation is happening in L7 proxies. Envoy was one of the first proxies to support HTTP2/gRPC on both sides of the connection, Web Assembly (for dynamic extension), and more recently, the HTTP 3 protocol.

【云原生】Gateway网关选型

性能对比

基于 Java 的异步化 API 网关
【云原生】Gateway网关选型
Kong
【云原生】Gateway网关选型
APISIX
【云原生】Gateway网关选型
Envoy Gateway
【云原生】Gateway网关选型

从以上性能数据可以看出,相同条件下:

  • Envoy 的 TPS 可以达到 12W 左右;

  • 基于 Java 的异步化 API 网关最高可到 2.8W 左右;

  • 基于 Nginx 的 Kong,TPS 可以到 5W 左右;

  • 基于 Nginx 并相较 Kong 有一定优化的 APISIX 可以到 9W 左右。

小结

1、Zuul2和SpringCloudGateway性能不够,且对应用框架有侵入,不考虑

2、Kong 和 Apisix 都是基于 Lua + nginx(OpenResty) 的,这在2010年之前是常见的方式,插件也丰富,非常实用,而且 Apisix 的性能也很强劲。但是随着不断拥抱云原生,他们的这种技术则变得过时老旧。

3、Envoy毕业于CNCF孵化器,是继Kubernetes和Prometheus之后的第三位CNCF毕业生,重新定义了网关的定位和能力,被誉为云原生网关,甚至被称之为下一代网关,已经有很多公司(Google、Alibaba、Wangyi)在积极布局做背书

  • 它是一个轻量级的7层服务代理,围绕应用程序运行,通常采用sidecar样式,并提供服务发现和动态配置功能以及支持gRpc的负载平衡功能。

  • 并且Envoy还对前端/边缘代理支持,在边缘使用相同的软件有很大的好处(可观察性、管理、相同的服务发现和负载平衡算法等)。 Envoy 具有一个功能集,使其非常适合作为大多数现代 Web 应用程序用例的边缘代理。这包括HTTP/1.1 HTTP/2 和 HTTP/3 支持,以及 HTTP L7 路由(能够根据路径、权限、内容类型、运行时及参数值等对请求进行路由和重定向)。

基于这两点,Envoy可以让南北和东西流量合并,不仅可以用做统一的流量网关,也可类似Service Mesh,采用sidecar样式,对应用做些基础设施的功能,比如负载均衡,降级熔断等。

【云原生】Gateway网关选型

但是后来我对Envoy做了超时、限流、协议转换的配置之后,被它复杂的配置搞得崩溃了,所以后面我放弃了Envoy而选择了Apisix,因为Apisix的dashboard真的很方便使用,且Apisix的性能虽然比不了Envoy但也还是很不错的。

Envoy

超时和请求转发:

【云原生】Gateway网关选型

限流:

【云原生】Gateway网关选型

协议转换(app -> HTTP -> 网关 -> gRpc -> 后端服务A -> gRpc -> 后端服务B)

【云原生】Gateway网关选型
【云原生】Gateway网关选型

看到没,Envoy的功能强大,但是难以配置,维护成本很高,很容易出错。下面我们看看Apisix

Apisix

超时和请求转发:

【云原生】Gateway网关选型
【云原生】Gateway网关选型
【云原生】Gateway网关选型

限流:

【云原生】Gateway网关选型
【云原生】Gateway网关选型

协议转换(app -> HTTP -> 网关 -> gRpc -> 后端服务A -> gRpc -> 后端服务B)

【云原生】Gateway网关选型
【云原生】Gateway网关选型

可以看到Apisix的dashboard非常好用,基本上点点点就能完成,限流和协议转换都有现成的插件,非常非常nice,在这里为国产软件打call!!!文章来源地址https://www.toymoban.com/news/detail-427983.html

到了这里,关于【云原生】Gateway网关选型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SpringCloud技术专题】「Gateway网关系列」(2)微服务网关服务的Gateway功能配置指南分析

    Spring Cloud Gateway简介 Spring Cloud Gateway是Spring Cloud体系的第二代网关组件,基于Spring 5.0的新特性WebFlux进行开发,底层网络通信框架使用的是Netty,所以其吞吐量高、性能强劲,未来将会取代第一代的网关组件Zuul。 Spring Cloud Gateway可以通过服务发现组件自动转发请求,默认集成了

    2024年02月11日
    浏览(37)
  • 【SpringCloud技术专题】「Gateway网关系列」(1)微服务网关服务的Gateway组件的原理介绍分析

    为什么要有服务网关? 我们都知道在微服务架构中,系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?难道要一个个的去调用吗?很显然这是不太实际的,我们需要有一个统一的接口与这些微服务打交道,这就是我们需要服务网关的原因。 我们

    2024年02月11日
    浏览(47)
  • 一文速通Nginx网关与gateway网关区分

    目录 API网关介绍  gateway基本介绍 Nginx基本介绍 Nginx与API gateway网关 API网关介绍  网关的角色是作为一个 API 架构,用来保护、增强和控制对于 API 服务的访问。API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,

    2024年02月01日
    浏览(56)
  • spring cloud gateway网关(一)之网关路由

    1、gateway相关介绍 在微服务架构中,系统往往由多个微服务组成,而这些服务可能部署在不同机房、不同地区、不同域名下。这种情况下,客户端(例如浏览器、手机、软件工具等)想要直接请求这些服务,就需要知道它们具体的地址信息,例如 IP 地址、端口号等。这种客户

    2024年02月08日
    浏览(41)
  • 如何理解 Istio Ingress, 它与 API Gateway 有什么区别?东西流量?南北流量?

    这三者都和流量治理密切相关,那么流量治理在过去和现在有什么区别呢?都是如何做的呢? 在学习istio的时候对流量管理加深了理解。什么是东西流量?什么是南北流量? 假如让你说出k8s中的服务暴露的方式? 你可以说几种? 我面试也遇到过这个问题。 东西流量 mesh(No

    2024年02月11日
    浏览(50)
  • springcloud Gateway网关

    地址:https://github.com/13thm/study_springcloud/tree/main/days9_Gateway Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2和 Project Reactor等技术。 Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能, 例如:熔断、限流、重试等 prin

    2024年01月24日
    浏览(46)
  • 04.SpringCloud网关-gateway

    Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。‘ 在SpringCloud中网关的实现包括两种: gateway zuul Zuul是基于Servlet的实

    2024年02月02日
    浏览(40)
  • 微服务整合Gateway网关

    ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 微服务探索之旅 ✨特色专栏: MySQL学习 🥭本文内容:微服务整合Gateway网关 🖥️个人小站 :个人博客,欢迎大家访问 📚个人知识库: 知识库

    2024年02月07日
    浏览(45)
  • 微服务网关 Gateway

    不同的微服务一般会有不同的网络地址,客户端在访问这些微服务时必须记住几十甚至几百个地址,这对于客户端方来说太复杂也难以维护。 如果让客户端直接与各个微服务通讯,可能会有很多问题: 客户端会请求多个不同的服务,需要维护不同的请求地址,增加开发难度

    2024年02月08日
    浏览(57)
  • 服务网关 Gateway

    在微服务架构中,一个大的系统被拆分成为了多个小的服务提供出来,每一个服务他们自成体系,每一个服务可以拥有自己的数据库,可以使用不同的技术框架和不同的语言进行开发,每一个服务都有自己的服务地址,服务之间通常以提供 Rest Api 风格的接口来相互调用。 客

    2024年02月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包