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

微服务专栏地址

  专栏:微服务
  微服务系列总目录

目录

1. 简介

通过以下几个问题去理解微服务中的一个重要组件:API网关。

  1. 什么是API网关
  2. 为什么需要API网关
  3. API网关在微服务架构体系中处于什么位置
  4. 网关技术实现有哪些
  5. zuul网关工作原理是什么样的
  6. 技术上如何选型

2. 什么是API网关

  • API网是一个反向路由:屏蔽内部细节,为调用者提供统一入口,接收所有调用者请求,通过路由机制转发到服务实例。
  • API网关是一组“过滤器”集合:可以实现一系列与核心业务无关的横切面功能,如安全认证、限流熔断、日志监控。

3. 为什么需要API网关

  什么是API网关中已给出理由,简单总结:

  • 屏蔽内部细节
  • 反向路由
  • 安全认证
  • 限流熔断
  • 日志监控

4. API网关在微服务架构体系中处于什么位置

4.1 调用者眼中的API网关

调用者眼中的API网关

  • 统一入口
  • 内部服务对于调用者是透明的

4.2 所处的位置

API网关在微服务架构体系中处于什么位置

  • 处于负载均衡与业务服务之间
  • API网关也可实现负载均衡功能

5. 网关技术实现有哪些

简单列举,不做比较,有兴趣可查询资料,后续为基于zuul网关来理解工作流程原理
  • zuul:是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用。Spring Cloud已集成
  • kong:是一款基于Nginx_Lua模块写的高可用,易扩展由Mashape公司开源的API Gateway项目

6. zuul网关工作原理是什么样的

因为后续API网关组件会聚焦于zuul,这里对zuul工作原理提前学习。

6.1 整体处理流程图

整体处理流程图

  1. zuul本身是一个Servlet
  2. HttpServlet Request请求到达Zuul Servlet
  3. 通过ZuulFilter Runner ,并且根据routing filter 类型执行filter 链
  4. 根据FilterType类型不同,执行的顺序不同且可完成不同的功能
    1. pre:在请求被路由之前调用,可实现日志监控、身份认证、黑名单等功能
    2. route:在路由请求时候被调用
    3. post:在route和error过滤器之后被调用,可实现审计、统计等功能
    4. error:处理请求时发生错误时被调用、可实现统一异常处理等功能
  5. Request Context:在请求生命周期中共享变量
  6. Filter的实现是可插拔的
    1. 脚本实现Filter
    2. 发布到filter目录中
    3. 由filter manager与filter loader自动加载

6.2 请求生命周期

zuul请求生命周期

  1. 拦截请求
  2. 根据filter类型,执行已加载的filter chain
  3. 返回请求

7. 技术上如何选型

  • 若使用的微服务框架是Spring Cloud,可选择Netflix的zuul,已经很好的集成到SC中
  • kong ,当然,能力强的可以自定义实现满足自己需求的API网关

猜你喜欢

转载自blog.csdn.net/chenghuaying/article/details/81221738