微服务 熔断器
###总结
1、LCN 分布式事务
2、重试引发的麻烦
a.retris=0,不重试,不会产生过多复杂的问题,对网络的适应性比较差
b.采用uuid,为每个调用进行编号,服务端只允许一次调用,
网络适应性比较强,带来很多复杂性
建议,在开发的初期,使用retris=0,设置不重试,到发现有瓶颈的时候,再进行其他深入优化
uuid在实际应用中是有更优美的方式
不需要再为每一个方法,增加String uuid参数
可以方法哦内置的上下文(线程变量),在调用的服务端是可以取得的
相关文档如下
https://kdocs.cn/l/sgYJFDZg1?f=111
具体操作如下
uuid不是通过参数传
接口已经去掉了
它传到了我们dubbo的线程变量RpcContext中
赛道这里面不会被覆盖
接收
重试是一个复杂的话题,例如timeout如何设置,reties抛出异常还是返回结果,不同的场合都要不同的处理,LCN分布式事务有没有影响建议,在开发的初期,使用retris=0,设置不重试,到发现有瓶颈的时候,再进行其他深入优化
重试和超时,是可以具体到方法来定制的,不同的方法可以选择不同的重试次数和超时时间
相关文档如下
https://www.jianshu.com/p/7c45552447a6
相关文档如下
https://www.kdocs.cn/l/sgYJFDZg1?f=111
第一步
在子工程account—test中
新建一个包test
在新建一个类
落实熔断器
拷入一个坐标
/ <hystrix.version>1.3.16</hystrix.version>
<hystrix-metrics-event-stream.version>1.1.2</hystrix-metrics-event-stream.version>
<!-- 熔断器-->
<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-core</artifactId>
<version>${hystrix.version}</version>
</dependency>
<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-metrics-event-stream</artifactId>
<version>${hystrix-metrics-event-stream.version}</version>
</dependency>
再在test中新建一个SayMeHyCommand类
修改一下这个类
制造一个熔断器
运行结果
当时间大于500毫秒时,就会被熔断
时间超过了它的限额值
如果方法带参数该怎么办
这里想办法传进来
运行结果
第二步
在web—controller中
新建一个类
第三步
在api里创建一个hystrix的包
在创建一个MyDubboHystrixCommand
完整版
然后我们要去做一个dubbo的过滤器
只要你通过dubbo远程调用就必须通过它
它来加工
这里面名字是固定的只能写这个名字
com.alibaba.dubbo.rpc.Filter
在dubbo配置文件中增加过滤器
多个过滤器的话我们可以用,隔开