五:对微服务API服务网关的理解
微服务专栏地址
目录
1. 简介
通过以下几个问题去理解微服务中的一个重要组件:API网关。
- 什么是API网关
- 为什么需要API网关
- API网关在微服务架构体系中处于什么位置
- 网关技术实现有哪些
- zuul网关工作原理是什么样的
- 技术上如何选型
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 整体处理流程图
- zuul本身是一个Servlet
- HttpServlet Request请求到达Zuul Servlet
- 通过ZuulFilter Runner ,并且根据routing filter 类型执行filter 链
- 根据FilterType类型不同,执行的顺序不同且可完成不同的功能 pre:在请求被路由之前调用,可实现日志监控、身份认证、黑名单等功能 route:在路由请求时候被调用 post:在route和error过滤器之后被调用,可实现审计、统计等功能 error:处理请求时发生错误时被调用、可实现统一异常处理等功能
- Request Context:在请求生命周期中共享变量
- Filter的实现是可插拔的 脚本实现Filter 发布到filter目录中 由filter manager与filter loader自动加载
6.2 请求生命周期
- 拦截请求
- 根据filter类型,执行已加载的filter chain
- 返回请求
7. 技术上如何选型
-
若使用的微服务框架是Spring Cloud,可选择Netflix的zuul,已经很好的集成到SC中 kong ,当然,能力强的可以自定义实现满足自己需求的API网关
下一篇:
什么时候考虑用微服务