微服务之api网关

API网关设计

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

微服务之api网关_第1张图片

微服务之api网关_第2张图片

 

多种客户端程序,例如:移动APP、PC端和智能终端设备等。客户端程序通过互联网或者专网访问API网关,由API网关统一接收请求后,通过一系列模块定位具体处理的微服务机,并将其转发至目标服务处理,网关与微服务之间通信是内部局域网。API网关统一规范平台对外的服务,同时充当了平台的Paas层。如上图所示,API网关功能结构基于管道模型和支持可插拔式的设计开发,提供统一基于http协议的WebAPI访问接口,内部每个模块各自实现功能,包括:黑白名单、日志、协议适配、身份认证、计流限流及路由。并且依赖“访问认证中心、服务发布管理中心”分别实现API网关访问权限控制和定位目标微服务。各模块功能说明如下:

  • 黑名单:实现通过IP地址控制禁止访问网关功能,此功能是应用层面控制实现,再往前也可以通过网络传输方面进行控制访问。
  • 日志:实现访问日志的记录,可用于分析访问、处理性能指标,同时将分析结果支持其他模块功能应用。
  • 协议适配:实现通信协议校验、适配转换的功能。
  • 身份验证:负责网关访问身份认证验证,此模块与“访问认证中心”通信,实际认证业务逻辑交移“访问认证中心”处理。
  • 计流限流:实现微服务访问流量计算,基于流量计算分析进行限流,可以定义多种限流规则。
  • 路由:路由是API网关很核心的模块功能,此模块实现根据请求,锁定目标微服务并将请求进行转发。此模块需要与“服务发布管理中心”通信。“服务发布管理中心”实现微服务发布注册管理功能,与其通信获得目标微服务信息。 

API网关部署

API网关是一个公共基础组件,无状态,可支持多套分布式部署。如下图所示:

微服务之api网关_第3张图片

服务网关(Zuul)

Zuul可以与Eureka、Ribbon、Hystrix等组件配合使用。简单说来,Zuul实现了两个功能:路由转发、过滤器:

1.路由转发:接收请求,转发到后端服务:

#路由到url 规则定义
zuul.routes.api-a-url.path=/api-a-url/**
zuul.routes.api-a-url.url=http://localhost:222/
该配置,定义了,所有到Zuul的规则为:/api-a-url/**的访问都映射到http://localhost:2222/上,也就是说当我们访问http://localhost:5555/api-a-url/add?a=1&b=2的时候,Zuul会将请求路由到:http://localhost:2222/add?a=1&b=2上。配置属性zuul.routes.api-a-url.path中的api-a-url部分为路由的名字,可以任意定义,但是一组映射关系的path和url要相同。

2.过滤器:提供一系列过滤器完成权限、日志、限流等切面任务。

微服务之api网关_第4张图片

Zuul的核心是一系列过滤器,开发者通过实现过滤器接口,可以做大量切面任务,即AOP思想的应用。Zuul的过滤器之间没有直接的互相通信,而是通过本地ThreadLocal变量进行数据的传递。

微服务之api网关_第5张图片

 

 参考链接

微服务之服务网关

 

 

你可能感兴趣的:(微服务,微服务,网关,api网关)