SpringCloud第二篇-Gateway网关
1.SpringCloud Gateway网关介绍
目前微服务架构中,常用的两种网关有两种,一种是Netflix Zuul,另外一种就是spring提供的gateway了,其配置都差不太多。
使用zuul的缺点就是Netflix闭源了,后续很难再有很大改进。
2.本项目使用的是Zuul+自定义实现限流
如果你想使用SpringCloud 自身集成的网关gateway,可以参考这个链接SpringCloud之服务网关Gateway
(1)认证授权的实现思路
项目中有一个独立的使用了SpringSecurity+OAuth2的认证授权服务Auth,我要将除Auth之外的服务保护起来,那么有两种方案:
a.将所有其他服务看作是资源服务,微服务调用链中每次调用其他服务的时候都会频繁调用授权服务。
b.将gateway看作是资源服务,所有经过网关的服务只需要一次认证授权即可。
所以在项目的代码中,单独对auth服务进行了路由转发功能,其他的都是用Fein声明式调用。
(2)限流防刷的实现思路
获取每次请求都请求的sessionId和URI,当代表这个用户的sessionIdAndReqURI超过每秒限制数,就会拒绝该请求访问资源服务。
(3)熔断的实现思路
这个就简单了,引入hystrix依赖,定义熔断返回信息即可。
3.具体的实现细节见码云项目:https://gitee.com/lvxiucai/jianghu-micro-service