微服务整体系统中API网关所处的位置和作用

网关的位置

微服务没有网关的时候

微服务整体系统中API网关所处的位置和作用

以上是没有网关的时候,缺点大家自己思考一下,很多也很明显。

给微服务套上一层膜(网关)

微服务整体系统中API网关所处的位置和作用

单网关模式

微服务整体系统中API网关所处的位置和作用

业务划分的网关

微服务整体系统中API网关所处的位置和作用

这种模式是针对不同的客户端来实现一个不同的API网关。

当网关成为影响系统性能的瓶颈,用负债均衡解决

微服务整体系统中API网关所处的位置和作用

网关在微服务总体架构中所处的位置

微服务整体系统中API网关所处的位置和作用

微服务整体系统中API网关所处的位置和作用

网关作用

微服务整体系统中API网关所处的位置和作用

API网关是微服务架构(Microservices Architecture)标准化服务的模式。API网关定位为应用系统服务接口的网关,区别于网络技术的网关,但是原理则是一样。API网关统一服务入口,可方便实现对平台众多服务接口进行管控,对访问服务的身份认证、防报文重放与防数据篡改、功能调用的业务鉴权、响应数据的脱敏、流量与并发控制,甚至基于API调用的计量或者计费等等。组件设计如下:

微服务整体系统中API网关所处的位置和作用

有些网关本身也会起着负债均衡的作用,比如同一个微服务,部署多个实例,网关本身起着路由负载哪个实例,最简单的思路是随机路由。

关于聚合

有些网关本身都就提供聚合,但是有些聚合比较复杂,什么事务保证等。

什么是聚合

简单来说就是用户发送一个请求到网关后端对应多个微服务进行处理。

1.网关提供的简单聚合(或在其基础之上扩展)

2.自己在业务上写一个粗粒度的微服务,里面实现聚合。优缺点就不说了。

3.实现聚合网关(这种方式)

这篇博客给了一个实现思路:https://www.cnblogs.com/savorboard/p/api-gateway.html

注意:以下内容的这些想法全是博客主个人对于 API 网关的理解而诞生的,如有错误还请指正。(不过小编认为这个思路不错,给了小编启发)

下面是博主画的一个 API 网关在微服务架构中的一个作用图:

微服务整体系统中API网关所处的位置和作用

简单解释一下。

  • OpenResty Api Gateway

从左至右 HTTP 请求先由DNS在拿到第一手流量后负载均衡到基于 OpenResty 的 API Gataway 网关集群,在这个流程我们可以使用像 Kong,Orage,Tyk 这些开源的支持高并发高访问量 API 网关程序在做第一层流量的防护,在这一级我们可以做一些像身份认证,安全,监控,日志,流控等策略。除了这些我们还可以做一些服务的发现和注册(这个要看不同网关的支持程度),接口的版本控制,路由重写等。

  • Aggr Api Gateway

然后再由这些 API 网关把请求再负载到不同的 Aggr Api Gateway,在这里我们做聚合服务这个操作,具体体现也就是图中的黄色区域是需要由各个语言的开发人员来需要写代码实现的。具体流程也就是我们可以引入像 Ocelot 这种和语言相关的 API 网关开源项目,然后通过 NuGet 包引入之后通过 Json配置+聚合代码的方式来整合后端的各个微服务提供聚合查询等操作。这期间对于有需求的接口,我们可以应用超时,缓存,熔断,重试等策略。

从 Aggr Api Gateway 到后端微服务集群这中间就属于内部的通讯了,我们可以使用对内部友好的通讯协议比如 gRPC 或者 AMQP 等,然后进行 RPC调用提高通讯性能。

注意:Aggr Api Gateway 这个网关对于一些接口来说的话并不是必须的,也可以由后端微服务直接提供REST API给第一层网关使用。

参考:

微服务之API网关

https://blog.csdn.net/zdp072/article/details/76473383

对微服务API服务网关的理解

https://blog.csdn.net/crave_shy/article/details/81221738

谈谈微服务中的 API 网关(API Gateway)

https://www.cnblogs.com/savorboard/p/api-gateway.html

基于.NET CORE微服务框架 -谈谈surging API网关

https://www.cnblogs.com/fanliang11/p/7441281.html

Net分布式系统之六:微服务之API网关

https://www.cnblogs.com/Andon_liu/p/6886486.html


分享到:


相關文章: