一. 为什么需要网关
在微服务架构设计中,通常会有若干个服务提供者。例如一个券商系统,会有用户系统、开户系统、资讯系统、交易系统等多个服务,而每个服务数量会最着集群部署会变得越来越庞大和复杂。客户端在调用后端系统API时,可能会从多个微服务接口中聚合数据,每个服务又是集群化部署,增加了客户端的复杂性。存在跨域请求的情况,还需要考虑接口鉴权、防火墙/浏览器不友好的协议等影响。网关的作用这时候就显得比较重要。网关对外暴露聚合API,屏蔽内部微服务的变动,保证整个系统的稳定性。它还可以做统一鉴权,监控监测、协议转换等功能。
二. 网关框架都有哪些
目前比较常见的几种开源的网关框架有以下几种:Nginx、Treafik、Kong、Tyk、Ambassador、Zuul 、spring cloud gateway等。至于它们之间的区别,小伙伴自行搜索。如何进行网关选型,也会因业务复杂度、团队使用成本而异。
三. 博客提纲
本博客介绍如何使用Zuul构建一个简单的网关、介绍路由配置方式。要点内容如下:
客户端通过zuul网关调用微服务接口的的关系图:
1.zuul的相关概念
Zuul是Netflix开源的微服务网关[1],他可以和Eureka,Ribbon,Hystrix等组件配合使用。Zuul组件的核心是一系列的过滤器,这些过滤器可以完成以下功能:
1) 身份认证和安全: 识别每一个资源的验证要求,并拒绝那些不符的请求;
2) 审查与监控;
3) 动态路由:动态将请求路由到不同后端集群;
4) 压力测试:逐渐增加指向集群的流量,以了解性能;
5) 负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求;
6) 静态响应处理:边缘位置进行响应,避免转发到内部集群;
7) 多区域弹性:跨域AWS Region进行请求路由,旨在实现ELB(ElasticLoad Balancing)使用多样化。
2.zuul的依赖和配置
1)依赖库