springcloud之Zuul初识篇—背景

分布式项目中存在大量独立运行的服务,如果把所有服务的端口都暴露出来肯定是不可取的(不安全也不方便调用)。所以需要一组服务来作为代理,外部请求只请求这个代理服务,由该服务代理请求相应的业务服务,同时完成鉴权、限流等一系列通用操作。这样既减少了服务的暴露也简化了各业务模块部分冗余代码的开发(如:订单模块只做和订单相关的事,权限鉴证什么的都交给代理服务来做),这样的代理服务我们一般定义为网关,springcloud中最常用的网关就是Zuul。

示意图

没有网关

PS:服务端需要将每个服务的接口都暴露出来,且不同的模块操作时都需要相关的权限,鉴权的方法也要在每个服务中都写一遍(每个服务都是在独立进程中无法复用公共方法),客户端维护接口困难(服务端每增加一个服务客户端就要多加一个接口)且无法实现负载均衡。

添加网关


PS:客户端只向网关发起请求,由网关选择具体调用哪一个服务。
这样只需要对外暴露网关接口,其他服务的接口不需要暴露出去,各个服务的鉴权等前置操作也都由网关统一执行,各服务只需要专注自己的本质业务就好。
客户端只需要维护网关对应的接口信息,不需要维护一堆的接口,负载均衡也交由网关实现,简化客户端的开发。

QA1:请求较多时单个网关服务无法保证并发量

         对网关服务进行集群操作

QA2:网关服务集群后客户端维护网关服务信息变得复杂

         在对网关请求的中间架上一层Nginx,客户端的请求由Nginx获取后由Nginx进行负载到指定的网关服务,这样既减少了客户端的信息维护,也提供了很好的并发处理(nginx+keepalived)

简图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值