百亿流量微服务网关的设计与实现(4)

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 百亿流量微服务网关的设计与实现(4)

Dromara soul

项目地址:https://github.com/Dromara/soul


Soul是一个异步的、高性能的、跨语言的、响应式的API网关,提供了统一的HTTP访问。


  • 支持各种语言,无缝集成Dubbo和SpringCloud;
  • 丰富的插件支持鉴权、限流、熔断、防火墙等;
  • 网关多种规则动态配置,支持各种策略配置;
  • 插件热插拔,易扩展;
  • 支持集群部署,支持A/B Test。


3. 基于Go语言的网关

fagongzi

项目地址:https://github.com/fagongzi/gateway


fagongzi Gateway是一个Go实现的功能全面的API网关,自带了一个Rails实现的Web UI管理界面。

功能特性:流量控制、熔断、负载均衡、服务发现、插件机制、路由(分流,复制流量)、API聚合、API参数校验、API访问控制(黑白名单)、API默认返回值、API定制返回值、API结果Cache、JWT认证、API Metric导入Prometheus、API失败重试、后端Server的健康检查、开放管理API(gRPC、RESTful)、支持WebSocket协议。


Janus

项目地址:https://github.com/hellofresh/janus


Janus是一个轻量级的API网关和管理平台,能实现控制谁、什么时候、如何访问这些REST API,同时它也记录了所有的访问交互细节和错误。使用Go实现API网关的一个好处在于,一般只需要一个单独的二进制文件即可运行,没有复杂的依赖关系。功能特性:


  • 热加载配置,不需要重启网关进程;
  • HTTP连接的优雅关闭;
  • 支持OpenTracing,从而可以进行分布式跟踪;
  • 支持HTTP/2;
  • 可以针对每一个API实现断路器;
  • 重试机制;
  • 流控,可以针对每一个用户或key;
  • CORS过滤,可以针对具体的API;
  • 多种开箱即用的验证协议支持,比如JWT、OAuth 2.0和Basic Auth;
  • Docker Image支持。


4. .NET

Ocelot

项目地址:https://github.com/ThreeMammals/Ocelot


功能特性:路由、请求聚合、服务发现(基于Consul或Eureka)、服务Fabric、WebSockets、验证与鉴权、流控、缓存、重试策略与QoS、负载均衡、日志与跟踪、请求头、Query字符串转换、自定义的中间处理、配置和管理REST API。


5. Node.js

Express Gateway

项目地址:

https://github.com/ExpressGateway/express-gatewayhttps://www.express-gateway.io/

Express Gateway是一个基于Node.js开发,使用Express和Express中间件实现的REST API网关。

功能特性:

  • 动态中心化配置;
  • API消费者和凭证管理;
  • 插件机制;
  • 分布式数据存储;
  • 命令行工具CLI。


MicroGateway

项目地址:

https://github.com/strongloop/microgatewayhttps://developer.ibm.com/apiconnect

StrongLoop是IBM的一个子公司,MicroGateway网关基于Node.js/Express和Nginx构建,作为IBM API Connect,同时也是IBM云生态的一部分。MicroGateway是一个聚焦于开发者,可扩展的网关框架,它可以增强我们对微服务和API的访问能力。

核心特性:

  • 安全和控制,基于Swagger(OpenAPI)规范;
  • 内置了多种网关策略,API Key验证、流控、OAuth 2.0、JavaScript脚本支持;
  • 使用Swagger扩展(API Assembly)实现网关策略(安全、路由、集成等);
  • 方便地自定义网关策略。


此外,MicroGateway还有几个特性:

  • 通过集成Swagger,实现基于Swagger API定义的验证能力;
  • 使用datastore来保持需要处理的API数据模型;
  • 使用一个流式引擎来处理多种策略,使API设计者可以更好地控制API的生命周期。


核心架构如图7-9所示。


image.png


四大开源网关的对比分析


1. OpenResty/Kong/Zuul 2/SpringCloud Gateway重要特性对比

各项指标对比如表7-1所示。


微信图片_20220123185621.jpg


以限流功能为例:

  • Spring Cloud Gateway目前提供了基于Redis的Ratelimiter实现,使用的算法是令牌桶算法,通过YAML文件进行配置;
  • Zuul2可以通过配置文件配置集群限流和单服务器限流,也可通过Filter实现限流扩展;
  • OpenResty可以使用resty.limit.count、resty.limit.conn、resty.limit.req来实现限流功能,可实现漏桶或令牌通算法;
  • Kong拥有基础限流组件,可在基础组件源代码基础上进行Lua开发。


对Zuul/Zuul 2/Spring Cloud Gateway的一些功能点分析可以参考Spring Cloud Gateway作者Spencer Gibb的文章:https://spencergibb.netlify.com/preso/detroit-cf-api-gateway-2017-03/


2. OpenResty/Kong/Zuul 2/SpringCloudGateway性能测试对比

分别使用3台4Core、16GB内存的机器,作为API服务提供者、Gateway、压力机,使用wrk作为性能测试工具,对OpenResty/Kong/Zuul 2/SpringCloud Gateway进行简单小报文下的性能测试,如图7-10所示。


微信图片_20220123185627.jpg


图7-10


图中纵坐标轴是QPS,横轴是一个Gateway的数据,每根线是一个场景下的不同网关数据,测试结论如下:


  • 实测情况是性能SCG~Zuul 2 << OpenResty~< Kong << Direct(直连);
  • Spring Cloud Gateway、Zuul 2的性能差不多,大概是直连的40%;
  • OpenResty、Kong的性能差不多,大概是直连的60%~70%;
  • 大并发下,例如模拟200并发用户、1000并发用户时,Zuul 2会有很大概率返回出错。
相关文章
|
24天前
|
Cloud Native API
微服务引擎 MSE 及云原生 API 网关 2024 年 9 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 9 月产品动态。
|
1月前
|
缓存 监控 API
探索微服务架构中的API网关模式
【10月更文挑战第5天】随着微服务架构的兴起,企业纷纷采用这一模式构建复杂应用。在这种架构下,应用被拆分成若干小型、独立的服务,每个服务围绕特定业务功能构建并通过HTTP协议协作。随着服务数量增加,统一管理这些服务间的交互变得至关重要。API网关作为微服务架构的关键组件,承担起路由请求、聚合数据、处理认证与授权等功能。本文通过一个在线零售平台的具体案例,探讨API网关的优势及其实现细节,展示其在简化客户端集成、提升安全性和性能方面的关键作用。
70 2
|
1月前
|
存储 缓存 监控
探索微服务架构中的API网关模式
【10月更文挑战第1天】探索微服务架构中的API网关模式
86 2
|
7天前
|
监控 负载均衡 API
Apache Apisix轻松打造亿级流量Api网关
Apache APISIX 是一个动态、实时、高性能的 API 网关,提供负载均衡、动态上行、灰度发布、熔断、鉴权、可观测等丰富的流量管理功能。适用于处理传统南北向流量、服务间东西向流量及 k8s 入口控制。Airflow 是一个可编程、调度和监控的工作流平台,基于有向无环图 (DAG) 定义和执行任务,提供丰富的命令行工具和 Web 管理界面,方便系统运维和管理。
Apache Apisix轻松打造亿级流量Api网关
|
5天前
|
监控 安全 应用服务中间件
微服务架构下的API网关设计策略与实践####
本文深入探讨了在微服务架构下,API网关作为系统统一入口点的设计策略、实现细节及其在实际应用中的最佳实践。不同于传统的摘要概述,本部分将直接以一段精简的代码示例作为引子,展示一个基于NGINX的简单API网关配置片段,随后引出文章的核心内容,旨在通过具体实例激发读者兴趣,快速理解API网关在微服务架构中的关键作用及实现方式。 ```nginx server { listen 80; server_name api.example.com; location / { proxy_pass http://backend_service:5000;
|
7天前
|
缓存 监控 API
探索微服务架构中的API网关模式
随着微服务架构的兴起,API网关成为管理和服务间交互的关键组件。本文通过在线零售公司的案例,探讨了API网关在路由管理、认证授权、限流缓存、日志监控和协议转换等方面的优势,并详细介绍了使用Kong实现API网关的具体步骤。
24 3
|
7天前
|
存储 缓存 监控
探索微服务架构中的API网关模式
探索微服务架构中的API网关模式
22 2
|
29天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 09 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
1月前
|
消息中间件 缓存 Java
亿级流量电商平台微服务架构详解
【10月更文挑战第2天】构建一个能够处理亿级流量的电商平台微服务架构是一个庞大且复杂的任务,这通常涉及到多个微服务、数据库分库分表、缓存策略、消息队列、负载均衡、熔断降级、分布式事务等一系列高级技术和架构模式。
76 3
|
1月前
|
API 微服务
Traefik 微服务 API 网关教程(全)
Traefik 微服务 API 网关教程(全)
下一篇
无影云桌面