微服务架构学习与思考(11):开源 API 网关02-以 Java 为基础的 API 网关详细介绍

Java Web架构篇之API网关 什么是API网关 API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。 API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访... 阅读详情

微服务架构学习与思考(11):开源 API 网关02-以 Java 为基础的 API 网关详细介绍

上一篇关于网关的文章:

微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍,介绍了为什么会有网关及以 Nginx 为基础的网关。

一、网关 zuul

zuul 网关使用 java 语言开发,是 Netflix 公司出品的开源网关。它是 SpringCloud 的组件之一。zuul 有 2 个大的版本:

1.1 zuul1 架构

zuul1 是基于 Servlet 构建的,采用的是阻塞和多线程方式,它一个线程处理一次连接。I/O 操作是通过从线程池中选择一个工作线程执行 I/O 来完成的,并且请求线程将阻塞,直到工作线程完成为止。工作线程在其工作完成时通知请求线程。如下图:

image-20221020180421586

(netflix blog: https://netflixtechblog.com/zuul-2-the-netflix-journey-to-asynchronous-non-blocking-systems-45947377fb5c)

这种处理线程模型,当后端API延迟增加或错误导致重试,线程数也会随之增加。这种情况发生时,就会给节点服务器带来麻烦,使服务器负载激增,为了消除这种麻烦,构建了限流机制(比如hystrix)保持系统的稳定。

zuul1 中网关功能怎么实现,在请求周期通过 Filter 实现,如下图:

image-20221020192446102

​ (from:https://github.com/Netflix/zuul/wiki/How-it-Works)

1.2 zuul2 架构

zuul2 对 zuul1 进行了重大的重构,采用异步和事件驱动模式处理程序。请求和响应的生命周期通过事件和回调机制来处理。没有像 zuul1 那样针对每个请求使用一个线程,不需要大量的线程成本,只需要一个文件描述符和一个监听器。而且像 zuul1 发生后端延迟和“重试风暴”,不是增加线程,zuul2 中是在队列中增加事件,这个开销比多个线程开销小得多。

image-20221020191710767

(netflix blog: https://netflixtechblog.com/zuul-2-the-netflix-journey-to-asynchronous-non-blocking-systems-45947377fb5c)

关于高性能网络IO编程模型,可以看我之前的文章,点击这里看文章

zuul2 网关中那么多功能是怎么实现的呢?是在请求周期(request cycle)中,通过 Filter 来处理实现。

image-20221020192540998

​ (from:https://github.com/Netflix/zuul/wiki/How-It-Works-2.0)

Filter:

Filter 过滤器是 zuul2 业务逻辑处理的核心,它可以在请求-响应周期的不同部分运行。分为 3 个 Filter:

  1. Inbound Filters:Inbound 过滤器,在请求到源之前执行,可用于身份验证、路由和装饰请求等处理操作
  2. Endpoint Filters:Endpoint 过滤器,可用于返回静态响应,否则内置的 ProxyEndpoint 过滤器会将请求路由到源。
  3. Outbound Filters:Outbound 过滤器,请求处理之后执行,可用于度量、装饰处理之后的请求或增加自定义 header。

更多 zuul2 Filter 用法请查看 Filter wiki。

说明:在 zuul2 中编写 Filter,使用的是 groovy 语言,它可以动态更新,不需要重启服务器。

1.3 zuul2 特性

二、SpringCloud Gateway

2.1 介绍

Spring Cloud Gateway3.1.x 旨在提供一种简单而有效的方式路由到 API,并为它们它们提供横切关注,比如:安全、监控和弹性。

它是构建在 Spring 生态之上,包括 Spring5、Spring2 和 Project Reactor(Spring WebFlux)。

Spring WebFlux 框架底层使用了 Reactor 模式高性能通信框架 Netty。

官网:官网地址

github: github 地址

Spring Cloud Gateway 是用来替代 zuul 网关,因为 zuul2 开发进度落后。

2.2 Spring Cloud Gateway 特性

Features:

  1. 基于 Spring Framework 5、Project Reactor 和 Spring 2.0 构建
  2. 能够在任何请求属性上匹配路由
  3. Predicates 和 Filters 作用于特定路由,易于编写的 Predicates 和 Filters
  4. 集成了断路器
  5. 集成了 Spring Cloud DiscoveryClient
  6. 很容易编写 Predicates 和 Filters
  7. 具备网关一些高级功能:动态路由、限流、路由重写

Spring Cloud Gateway 与 Eureka、Ribbon、Hystrix 等组件配合使用,实现路由转发、负载均衡、鉴权、熔断、路由重写、日志监控等功能。

Spring Cloud Gateway 中的重要概念:

(1) Filter(过滤器)

可以使用它来拦截和修改请求,并且对它的上文的响应进行处理。

(2) Route(路由)

网关配置的基本组成模块。一个 Route 模块由一个 ID,一个目标 URI,一组断言(Predicate)和一组过滤器(Filter)组成。如果断言为真,则路由匹配,目标 URI 会被访问。

(3)Predicate(断言):

路由转发的判断条件,可以使用它来匹配来自 HTTP 请求的任何内容,例如修改请求方式、请求头内容、请求路径、请求参数等。如果匹配成功,则转发到相应的服务里。

Predicate 是路由的匹配条件,匹配之后,Filter 就对请求和响应进行精细化处理。有了这两个工具,再加上目标 URI 可以实现一个具体的路由,就可以对具体的路由进行处理操作。

2.3 Gateway 处理流程

流程图:

image-20221020205002616

  1. 客户端向 Spring Cloud Gateway 发出请求
  2. Spring Cloud Gateway 通过 Gateway Handler Mapping 找到与请求相匹配的路由,将其发送到 Gateway Web Handler。
  3. Gateway Web Handler 通过指定的过滤器链(Filter Chain)来处理请求,然后发送到实际的执行业务服务中,业务逻辑执行完后返回。
  4. 业务逻辑执行完成后,又经过了过滤器链(Filter Chain),这里又可以对执行完后的业务逻辑进行加工处理。

说明:过滤器链中的虚线分开过过滤器,是表示过滤器会在业务逻辑处理之前进行 Filter 或处理完之后在进行 Filter。

在请求转发到服务端前(Proied Service 前),可以进行 Filter 处理(上图中虚线左边部分),例如权限检查、参数效验、流量监控、协议转换等处理。

在服务端处理完业务逻辑后,也可以进行 Filter 处理(上图中虚线右边部分),例如修改响应头、日志输出、流量监控等处理。

三、Apache ShenYu(神禹)

3.1 介绍

Apache ShenYu 是使用 Java reactor 编程方式开发的,是一个可扩展、高性能、响应式的 API 网关。

官网:ShenYu 官网

Doc: ShenYu Doc

3.2 架构

ShenYu version:2.5.0

整体架构流程图

image-20221021165518311

(来自:https://github.com/apache/shenyu)

  • ShenYu Cluster
  • ShenYu Admin,管理 ShenYu gateway
  • Plugin

流量进入 -> ShenYu Cluster —> Predicate断言匹配 -> Filter -> Plugins

ShenYu 中的一些概念

插件、选择器、规则,这些元素都可以在 ShenYu Admin UI 后台进行配置管理。

  • 插件:Apache ShenYu 使用插件化设计思想,可以实现插件的热插拔,易扩展。内置了丰富的插件,包括 RPC 代理、熔断和限流、权限认证、监控等等。
  • 选择器:每个插件可以设置多个选择器,对流量进行初步筛选。
  • 规则:每个选择器可以设置多个规则,对流量进行更细粒度的控制。

插件、选择器和规则执行规则:

当流量进入到 Apache ShenYu 网关之后,会先判断是否有对应的插件,该插件是否开启;

然后判断流量是否匹配该插件的选择器。

然后再判断流量是否匹配该选择器的规则。

如果请求流量能满足匹配条件才会执行该插件,否则插件不会被执行,处理下一个。

他们之间的数据关系,数据库 UML 图:

image-20221021171444956

​ (来自:https://shenyu.apache.org/zh/docs/design/database-design)

说明:一个插件可以对应多个选择器,一个选择器可以对应多个规则,一个规则可以对应多个匹配条件。

3.3 ShenYu Admin 后台管理

Apache ShenYu Admin 是网关的后台管理系统,能够可视化管理所有插件、选择器和规则,设置用户、角色、控制资源。

这些更改通过数据同步到网关的 JVM 内存里。

Admin 使用文档:https://shenyu.apache.org/zh/docs/user-guide/admin-usage/data-permission

后台界面:

image-20221021184017058

3.3 插件

内置插件

ShenYu 内置了很多插件。在 ShenYu Admin 后台可以设置这些插件。

比如设置 hystrix 熔断保护服务的插件。添加插件、设置插进的步骤详情请查看文档。

内置插件的文档:https://shenyu.apache.org/zh/docs/plugin-center/http-process/contextpath-plugin。

ShenYu 网关内置了很多插件,详情看文档。

自定义插件

文档:https://shenyu.apache.org/zh/docs/developer/custom-plugin

3.4 扩展功能

SPI 扩展

比如自定义负载均衡策略,可以对 org.apache.shenyu.loadbalancer.spi.LoadBalancer 进行自定义扩展。

详情文档:https://shenyu.apache.org/zh/docs/developer/spi/custom-load-balance

插件扩展

也就是自定义插件功能,上文有讲到过。

自定义插件文档

自定义 Filter

这里有一个示例,对 org.springframework.web.server.WebFliter 进行扩展。文档地址 -> filter 扩展

3.5 集群

第一种:

利用 Nginx 负载均衡能力实现集群功能,文档地址->集群。

第二种:

Apache Shenyu-nginx 模块实现集群,https://github.com/apache/shenyu-nginx,在 github 上的 README 看到这个功能模块还是一个实验性质的(到目前2022.10.21)。

也欢迎大家到我的公号继续讨论:九卷技术录 - 以 Java 为基础的 API 网关详细介绍

四、参考

  • https://github.com/Netflix/zuul/wiki/Getting-Started zuul1 wiki
  • https://github.com/Netflix/zuul/wiki/Getting-Started-2.0 zuul2 wiki
  • https://netflixtechblog.com/zuul-2-the-netflix-journey-to-asynchronous-non-blocking-systems-45947377fb5c
  • https://github.com/Netflix/zuul/wiki/Filters zuul2 filter doc
  • https://spring.io/projects/spring-cloud-gateway
  • https://shenyu.apache.org/ ShenYu site
  • https://shenyu.apache.org/zh/docs/plugin-center/http-process/contextpath-plugin ShenYu 插件文档
  • https://shenyu.apache.org/zh/docs/developer/custom-filter ShenYu Filter 扩展
  • https://shenyu.apache.org/zh/docs/deployment/deployment-cluster ShenYu 集群
Java开发:Spring Cloud的服务网关选型与配置 在微服务架构中,服务网关作为系统的统一入口,承担着路由转发、请求过滤、权限验证等重要职责。本文的目的在于为Java开发者在Spring Cloud项目中选择合适的服务网关并进行正确配置提供全面的指导。范围涵盖了Spring Cloud中主流服务网关的选型分析以及它们在不同场景下的详细配置步骤。本文首先介绍服务网关的核心概念和其在微服务架构中的重要性;接着对Spring Cloud中常见的服务网关组件进行选型分析;然后详细讲解这些服务网关的核心算法原理和具体配置步骤; 阅读详情

相关推荐

微服务 API 网关(API Gateway)

API 网关是微服务架构中至关重要的组成部分,它不仅简化了客户端的请求管理,还增强了系统的安全性、可扩展性和可维护性。不同的 API 网关解决方案适合不同的场景,选择适合自身需求的工具是构建健壮微服务架构的关键。

galoiszhou的博客 2290

JAVA微服务_网关

自定义的Filter选择合适的接口实现官网关于全局过滤器的例子。注意全局过滤器不需要在配置文件里配置到某一服务上了,因为全局有效;//放行 } //过滤器顺序,按自然数顺序,-1为在所有fliter之前 @Override public int getOrder() {return - 1;} }也可以直接在类上加@Component注解(ruoyi的做法)非全局的filter要进行配置,将自定义filter的类名写上。

阿巴阿巴 3797

Java API Gateway(API网关)详解

本文全面介绍了Spring Cloud Gateway的核心概念与实践指南。作为微服务架构的统一入口,Gateway承担路由转发、负载均衡、安全认证、限流熔断等关键功能。文章详细讲解了其基于Reactor和WebFlux的异步非阻塞架构优势,并通过配置示例演示了基本路由、权重路由、自定义过滤器等核心功能实现。同时深入分析了其工作原理,对比了与传统网关的差异,并提供了常见问题的解决方案。最后总结了分层架构、动态路由、统一认证等最佳实践,是掌握Spring Cloud Gateway的实用技术手册。

wjianwei666的专栏 4838

5款基于Java开发的开源API网关

在微服务架构中,API网关是一个必不可少的组件之一,下面推荐几款基于Java语言开发的高性能API网关。 ZUUL Zuul是Netflix开源的微服务网关,Spring Cloud对Zuul进行了整合与增强,Zuul默认使用的HTTP客户端是Apache HTTPClient,也可以使用RestClient或okhttp3.OkHttpClient。Zuul的主要功能是路由转发和过滤器,Zuul底层利用各种filter实现如下功能: 产品特性 认证和安全 识别每个需要认证的资源,拒绝不符合要求的请求 性

OpenApp+的专栏 7067

ZUUL微服务API网关Java工程代码完整解析

本文还有配套的精品资源,点击获取 简介:ZUUL作为Netflix开源的微服务架构组件,负责请求路由及处理,并且是边缘服务的关键组成部分。此压缩包包含基于Java实现的ZUUL网关项目源码,有助于深入理解和学习微服务API网关的构建。ZUUL通过过滤器机制执行请求预处理和后处理任务,如身份验证、动态路由、负载均衡等。此项目还涉及Java Maven项目结构、自定义ZUUL过...

weixin_42593549的博客 1080

R语言:基于Spatstat包的单变量和双变量平面Ripley‘s K函数分析

因为网上查找得到的R语言K函数分析的资料很少,Spatstat包的介绍也很少,所以抛砖引玉。本文简单介绍了使用R语言spatstat包的Kest,Kcross(Lcross)和Kinhom方法进行了单变量和双变量平面Ripley's K函数分析的方法及代码,希望有所帮助。

hsdcmax的博客 1万+

开源免费的API网关介绍与选型

API网关在现代微服务架构中极其重要,作为内外通信桥梁,它不仅简化了服务调用过程,还增强了安全性与可管理性。通过API网关,可以实现统一的身份验证和授权机制,确保只有经过认证的请求才能访问后端服务;同时,API网关支持流量控制、负载均衡等功能,提高系统稳定性。对于开发者来说,API网关提供了一个统一的服务入口点,简化文档维护,并使版本管理和日志记录更加便捷。主流API网关如Kong和apisix、Higress都具备强大的协议转换能力、安全隔离措施及流量控制功能,支持API定义、发布和版本化。

xingxuechao的专栏 7700

ITK-snap进行分割区域标注、三维显示及改变显示颜色

在进行医学图像器官分割时,无论我们是用传统方法还是深度学习,最后肯定要用到手动分割的区域作为金标准来验证我们方法的精度。但是手动标注器官的轮廓是十分耗时的,这里我介绍一个比较简单的标注方法,以肺分割作为例子。 我们使用ITK-snap作为分割标注工具。 当切片间距离比较小时,比如1mm,一个患者的完整HRCT序列通常在200张以上,如果让医生一一进行分割区域标注是非常耗时乏味的。因此,我们可以使用最简单的阈值法比如OSTU,加上基本的形态学操作对肺进行粗分割得到粗略的分割掩码,在此基础上再手动的对分割结果进

u010409517的博客 2万+

阿里开源的微服务API网关-Higress 功能介绍与快速体验

阿里开源微服务API网关Higress是阿里巴巴多年实战经验的产品,完全免费且开源。该网关结合了流量网关、微服务网关和安全网关的功能,支持多种协议和服务发现机制。通过配置,Higress可快速接入Spring Cloud Alibaba的各种组件,如Dubbo和Nacos,帮助用户简化复杂网络架构、提高系统安全性与稳定性。Higress在性能、易用性和扩展性方面得到了充分验证,是值得信赖的解决方案,尤其适用于需要协议转换、安全隔离和流量控制的场景。阿里开源微服务API网关Higress提供智能流量分配

xingxuechao的专栏 3892

001、Zephyr RTOS简介与历史背景

本文介绍了Zephyr RTOS的特点及其在嵌入式开发中的应用。作者通过亲身经历比较了Zephyr与传统RTOS的差异,重点分析了Zephyr的设备树、统一驱动模型、基于CMake的构建系统、POSIX兼容层等核心特性。文章详细阐述了Zephyr在内核设计上的优势,如中断处理模型、内存管理等,并提供了社区生态和使用建议。作者建议开发者从简单项目入手逐步掌握Zephyr,同时指出了常见的使用问题和适用场景,认为Zephyr特别适合复杂软件架构的物联网和工业控制项目。

m0_50546716的博客 155

SAP 固定资产采购简介

SAP 固定资产采购是指企业通过采购流程获取长期使用并记录为固定资产的物品。固定资产是企业为长期使用而购置的资产,如机器设备、办公设备、建筑物、车辆等,通常这些资产的使用期限较长,并且在资产负债表上记录。在SAP系统中,固定资产采购流程通常与物料管理(MM)模块和固定资产管理(FI-AA)模块相结合。这个过程涉及从需求的提出、采购订单的创建,到货物接收、发票校验和资产激活的多个步骤。

我小时候很黑的博客 1731

微服务网关

一、前言 随着微服务的兴起,基于其业务耦合性低、负载能力强、服务边界清晰等优点,大家纷纷使用微服务架构来实现新系统或进行老系统的改造。微服务在带来诸多好处的同时,也有一些问题需要解决,比如:如何做到有效拆分、减少服务间调用,如何统一管理所有服务的接口,如何进行自动化部署等。本文阐述微服务的API网关的一些主要功能,并例举了几种常用的网关,最后结合spring cloud微服务框架...

nsxqf的博客 1万+

uniapp - 热更新提示:WGT安装包中manifest.json文件不存在 | unexpected EOF!报错详细解决,完美搞定WGT安装包中WWW目录下manifest.json不存在问题

uniapp,安卓android,苹果ios,热更新,热更新code:-1202报错,,WGT热更新报错,uniapp热更新wgt出现报错manifest.json文件不存,uniapp安卓苹果软件热更新时出现错误unexpected EOF!如何解决,怎么解决热更新wgt报错,app新版本下载安装报错WGT安装包中manifest.json文件不存在,WGT安装包中WWW目录下manifest.json不存在,uniapp热更新报错安装失败[-1201]:WGT/WGTU文件格式错误,uniapp-wgt

✅ 精选推荐文章 1万+

揭秘Kong网关:原理、应用及其在微服务架构中的魔法(一)

Kong网关是一个开源的API网关,用于管理和连接不同的后端服务。它的主要作用是为API提供保护、安全性、可伸缩性和可控性。Kong网关可以处理流量路由、请求的验证和授权、负载均衡、缓存、日志记录和监控等任务。Kong网关的定义和作用如下:定义:Kong是一个可扩展、开源的云原生API网关,可以在分布式环境中管理、监控和安全地发布API。流量控制:Kong网关可以根据配置规则路由传入的请求,将请求发送到不同的后端服务上。它可以基于URL、HTTP方法、请求头和查询参数等进行请求路由。

凛鼕将至的博客 5865

QT自制TCP服务器

TCP服务器 网络调试助手

大脑曝光 3627

MFC Tab Control控件完全指南:从基础使用到高级定制

本文详细介绍了MFC中TabControl控件的使用方法和高级技巧。主要内容包括:1) TabControl基础属性设置与绑定;2) 样式定制和外观自定义;3) 创建派生类实现扩展功能;4) 动态页面管理和子对话框控制;5) 高级功能如标签拖拽排序和右键菜单。通过完整代码示例,展示了从基本应用到复杂场景的实现方案,包括多标签页管理、自定义绘制、动态添加/删除标签等核心功能,为MFC开发者提供了全面的TabControl开发指南。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 259

微服务架构学习与思考(04):微服务技术体系

微服务架构学习系列文章: 微服务架构学习与思考(01):什么是微服务?微服务的优势和劣势 微服务架构学习与思考(02):微服务实施的前提条件?有哪些问题需要思考? 微服务架构学习与思考(03):微服务总体架构图解 微服务架构学习与思考(04):微服务技术体系 微服务架构学习与思考(05):微服务架构适用场景分析 一、微服务技术体系 下图列出了微服务的技术体系: 二、Golang微服务技术栈 微服务框架 go-micro go-kit 国内的bilibili、好未来和斗鱼也出了一个微服务框架: k

九卷技术录 2859

【ROS2】RViz2加载URDF模型文件

1)运行RViz2rviz22)添加组件:RobotModel3)选择通过文件添加4)选择URDF文件,此时会报错,需要修改Fixed Frame为map即可

郭老二 1450

微服务架构-网关学习 以Spring Cloud Gateway为例 详细功能模块解读

微服务架构-网关学习 以Spring Cloud Gateway为例 详细功能模块解读

shaozheng0503的博客 2186

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

网关三问:为什么微服务需要网关?什么是微服务网关?网关怎么选型?

本文探讨了微服务API网关的核心问题,包括其必要性、作用及选型标准。微服务API网关作为所有客户端请求的单一入口,有助于优化系统架构,特别是在需要集中管理认证与授权时,提升安全性。此外,网关负责服务发现与流量路由,确保请求被正确导向后端服务,同时能够进行协议转换,使得不同通信协议的服务能够顺利交流。它通过流量控制与熔断机制提高系统的稳定性和可靠性,防止某一服务过载继而影响整体性能。在选型时,应考虑协议支持、安全性能、流量管理等因素,以满足特定的业务需求和场景。因此,了解微服务API网关的作用、功能及选型标准

whisperzzza的博客 4414

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

开源API网关,到底哪个强?

点击关注公众号,利用碎片时间学习本文主要分析了 Nginx、Kong、APISIX、Tyk、Zuul、Gravitee 几个开源 API 网关架构及基本功能,测试了一定场景下各个 API ...

Java笔记虾 4590

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

vivo: 微服务 API 网关架构实践

网关作为微服务生态中的重要一环,由于历史原因,中间件团队没有统一的微服务API网关,为此准备技术预研打造一个功能齐全、可用性高的业务网关。接下来我们简要介绍一下 Zuul2 关键知识点。Zuul2 的架构图:为了解释上面这张图,接下来会分别介绍几个点如何解析 HTTP 协议Zuul2 的数据流转两个责任链:Netty ChannelPipeline责任链 + Filter责任链上面介绍了Zuul2的部分知识点,接下来介绍网关的整体功能。

猪猪 1102

微服务:简述微服务架构中的API网关

微服务:简述微服务架构中的API网关       API网关是任何微服务架构的重要组成部分。有了它我们可以在一个独立的模块上方便的处理一些非业务逻辑,可以让微服务本身专注在自身特定的功能上,使得每个微服务的开发更容易和更快速。 一、为什么需要API网关       在我们的项目...

王小二(海阔天空) 1371

最全你为什么会不懂微服务架构中的微服务网关模式呢?,java面试题刷题软件

同时,ESB所处理的服务是企业级的服务,服务粒度比较粗,它践行的是“共享”的架构模式。其次,假设每个系统使用的协议不同,那么系统之间的调用或者数据传输就存在协议转换,API网关可以通过内置的协议转换引擎实现多种协议的适配和转换,将对外的请求统一在HTTP-REST的协议规范下。API网关的一个问题就是中心化的架构问题,我们需要考虑不同的前端、不同的业务团队,可能对网关存在隔离性的需求,在发布、部署、可用性方面,如何设计一个去中心化的网关系统也是实施微服务架构需要考虑的。如下图所示是API网关的使用图示。

2401_84690353的博客 1110

API网关的作用--为什么微服务需要一个API网关?

微服务架构中的API网关作为系统的入口,主要负责统一处理所有客户端请求。其主要作用包括协议转换、安全隔离和流量控制。API网关支持多种通信协议如HTTP与gRPC之间的转换,确保不同协议的服务能自由交互。同时,它还充当外部请求与内部服务之间的屏障,实施认证和授权,提升系统安全性。此外,网关能够限制访问频率,防止服务过载。选型时需考虑生态兼容性、性能、扩展性和安全性。良好的兼容性确保与现有技术栈无缝集成,性能则直接影响用户体验和系统稳定性。扩展性使网关能够灵活应对业务增长的需求,而安全性则保障合法用户访问

whisperzzza的博客 1712

微服务五种开源API网关实现组件对比

微服务架构是当下比较流行的一种架构风格,它是一种以业务功能组织的服务集合,可以持续交付、快速部署、更好的可扩展性和容错能力,而且还使组织更容易去尝试新技术栈。微服务具有几个关键特征: 高度可维护和可测试性 与其他服务松散耦合 且可独立部署 能够由一个小团队开发 现在很多公司企业想将自己的单体应用架构迁移到微服务架构,在这个问题上,Martin Fowler提出了3个前提,而Phil Calca...

weixin_34248258的博客 979
上一篇: 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍
下一篇: 微服务架构学习与思考(12):从单体架构到微服务架构的演进历程
九卷沉思录
博客等级 码龄14年 746粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值