快捷搜索: 王者荣耀 脱发

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

微服务专栏地址

目录

1. 简介

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

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

2. 什么是API网关

3. 为什么需要API网关

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

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

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

4.1 调用者眼中的API网关

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

4.2 所处的位置

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

5. 网关技术实现有哪些

简单列举,不做比较,有兴趣可查询资料,后续为基于zuul网关来理解工作流程原理
    :是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用。Spring Cloud已集成 :是一款基于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类型不同,执行的顺序不同且可完成不同的功能 pre:在请求被路由之前调用,可实现日志监控、身份认证、黑名单等功能 route:在路由请求时候被调用 post:在route和error过滤器之后被调用,可实现审计、统计等功能 error:处理请求时发生错误时被调用、可实现统一异常处理等功能
  5. Request Context:在请求生命周期中共享变量
  6. Filter的实现是可插拔的 脚本实现Filter 发布到filter目录中 由filter manager与filter loader自动加载

6.2 请求生命周期

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

7. 技术上如何选型

    若使用的微服务框架是Spring Cloud,可选择Netflix的zuul,已经很好的集成到SC中 kong ,当然,能力强的可以自定义实现满足自己需求的API网关
经验分享 程序员 微信小程序 职场和发展