SpringCloud-高级篇(四)

目录:

(1)授权规则

(2)自定义异常

(3)规则的持久化-规则管理模式

(4)实现push模式


(1)授权规则

我们已经学习了实时监控、簇点链路、流控规则、降级规则、热点规则,但是系统规则是对当前系统所在的服务器的一种保护,不过这种保护规则只对Linux有效,授权规则是对请求者身份的判断,而集群流控呢是把限流的规则放到集群的场景下去做判断,不在针对单个机器,目前还出于准备阶段

 我们只演示授权规则

网关可以做请求身份的验证,但是有可能把微服务的地址泄露出去,这样被人可以直接绕过网关访问微服务了,网关做的再严密也没有用了,微服务赤裸裸的暴露给别人,Sentinel授权规则可以解决这个问题,因为他可以去验证这个请求是从哪里来的,如果说是从网关过来的,让通过,是从浏览器过来的,进行拦截,授权配置只有两种:白名单、黑名单

请求来源解析器,里面的方法解析的结果默认都是default ,需要我们自己去实现这个接口重写这个方法,去区分网关和浏览器过来的请求,返回不同的结果,这样来源的名称就不一样了,重写方法获取请求头,从网关和浏览器的请求头不一样,就可以写请求名称了,但是网关和浏览器默认没有这个头,是我自己写的,我们可以给网关加这个头,这个头就有了,就区分开了,可以给网关加这个请求头,我们在学习网关的时候,学习的网关过滤器叫AddRequestHeader,这个过滤器凡是通过网关路由到微服务的请求,都会带上配置的请求头

而从浏览器来的请求不一定带这个请求头了,这样就区分来了 

创建这个类实现接口:

 

在网关里添加过滤器: 

 

重启服务:

访问一下:

 

给/order/{orderId}添加授权规则,点击授权按钮:

 

测试:

直接在浏览器发送请求,不允许访问

 通过网关10010访问:正常访问,网关做了权限校验,访问的时候加上,authorization=admin

 这样授权规则就已经生效了,授权规则,就是对请求来源的判断,通过配置来源名称,来去判断是否允许你访问,来源名称需要我们自定义RequestOriginParser来解析来源名称

 (2)自定义异常

 当通过浏览器访问,返回一个限流的异常,明明是授权拦截,返回的是限流异常,用户就不知道什么问题了,事实上限流也好,降级也好,各种异常,最终返回的都是限流,对用户不够友好,不够清除,因此我们需要学习自定义异常

 

 

创建这个类:

重启:

添加流控按钮:添加

 

 删除规则重新添加:点击授权按钮

 浏览器访问:

 

 (3)规则的持久化-规则管理模式

每当我们的服务重启,我们所配置的规则它就丢失了,这是因为Sentinel默认会把这些规则保存在内存里面,重启自然就丢失了,在生产环境下,不能容忍这样的问题,所以需要学习将Sentinel的规则进行持久化 

 (4)实现push模式

 

 

在pom文件中引入: 

在nacos做配置管理的时候,dataId和groupId每个配置文件都要有 ,这是确定配置文件名称的标识,rule-type:具体的规则类型  degard:降级 authority:授权 param-flow:热点参数限流

还可以做降级配置,这里先演示限流 

 

 

 

 

 

 

 

 

 

 

 

重新打包好了一个 

 

 

重新启动更改好的Sentinel:这里可以覆盖nacos的地址,如果不更该可以不加-Dnacos.addr...

 

 访问一下nacos:

 

 

 Sentinel:控制台

 会多出一个流控规则nacos

 在这里添加的流控规则,会进入nacos

 

 新增一个流控规则:

 

 

注意要点击左侧的流控规则在这个页面进行添加,不能再在簇点链路页面添加,因为在这个页面添加它走得是原始的

 

 

 刷新一下nacos页面:会多出一个流控规则

 测试:访问一下,限流了

 重启微服务:以前重启微服务,做的限流规则就丢失了

 刷新页面:流控规则不会丢失,依然还在

 

在次访问,还会触发流控规则:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值