《Spring Cloud与Docker微服务架构实战》周立 --笔记
8.1 为什么要使用微服务网关
从前面的章节知道,不同微服务具有不同的网络地址,,而外部客户端可能需要调用多个服务的接口节能完成一个业务需求。例如,一个电源购票的手机APP,可能调用多个微服务的接口才能完成一次购票业务:
- 客户端会多次请求不同的微服务,增加客户端的复杂性。
- 存在跨域请求,在一定场景下处理相对复杂
- 认证复杂,在一定场景下处理相对复杂
- 难以重构,随着项目的迭代,可能需要重新划分微服务。例如,可能将多个微服务合并成一个或者将一个拆成多个,如果客户端直接与微服务通信,那么重构将难以实施。
- 某些微服务可能使用了对防火墙/浏览器不友好的协议,直接访问时会有一定的困难。
以上问题可借助微服务网关解决。微服务网关是介于客户端和服务器端之间的中间层,所有外部请求都会先经过微服务网关。使用微服务网关后,架构可演变成:
微服务网关封装了应用程序的内部结构,客户端只用和网关交互,而无须直接调用特定的微服务接口。使用微服务网关的优点:
- 易于监控:可在微服务网关收集监控数据并将其推送到外部系统进行分析。
- 易于认证:可在微服务网关上进行认证,然后将请求转发到后端的微服务,而无需在每个微服务中进行认证。
- 减少了客户端与各个微服务之间的交互次数。
8.2 Zuul简介
Zuul是Netflix开源的微服务网关,可与Eureka,Ribbon,Hystrix等组件配合使用,Zuul的核心是一系列的过滤器,这些过滤器可以完成以下功能:
- 身份认证与安全:识别每个资源的验证要求,并拒绝那些与要求不符的请求。
- 审查与监控:在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。
- 动态路由:动态地将请求路由到不同地后端集群。
- 压力测试:逐渐增加指向集群地流量,以了解性能。
- 负载分配
- 静态响应处理
- 多区域弹性