• peter
    2022-01-24
    Q1:Sentinel的实现原理是filter还是代理? 在服务调用过程中,sentinel是以filter方式对请求进行处理吗?不过,sentinel能中断正常的调用逻辑,所以感觉也不像是filter。那么,sentinel是通过代理实现的吗? Q2:能增加自定义的熔断规则吗? 除了自带的三种熔断规则,是否能够增加自定义的熔断规则?如果能增加,有哪些常见的自定义规则?(同样地,对于流控,除了自带的三种流控方法,还可以自定义流控规则吗?) Q3:服务出错最终是怎么解决的? 降级和熔断只是暂时的处理方法,最终是怎么处理的?最终是要靠人工处理吗? 比如重启应用、重启机器等。在实际运营中,系统从错误恢复正常,是系统自我调整居多? 还是人工干预居多?

    作者回复: 1:slot可以认为是类似filter的模式; 2:可以添加自定义规则,定义新的slot即可; 3:异常处理要case by case,没有万金油方案。但很多异常是突发流量导致的,等水位下来之后就解决了

    
    6
  • so long
    2022-01-24
    老师,请教一个问题,代码中抛出自己封装的业务异常RuntimeException,不想被sentinel的熔断规则统计进去,应该如何处理?

    作者回复: 如果某个异常是可以被接受的,其实就不算做异常了,应用层加个handler统一处理一下把特定异常吞掉,曲线救国:)

    
    4
  • 西门吹牛
    2022-01-30
    熔断,首先要进行依赖隔离,只要分出了那些是核心的,那些非核心的,才能做好隔离,Hystrix 记得好像是采用线程池和信号量的方式进行隔离,采用线程池需要会增加线程切换的成本。Sentinel 基于信号量进行隔离,对依赖的某个资源的进行并发数量限制。 俩者都可以采用信号量的方式,但是 Hystrix 好像对于慢调用处理不够及时。

    作者回复: 我其实蛮喜欢用hystrix的,但它的源码里用函数式编程用魔障了,代码非常难debug跟,开源团队的维护成本肯定贼大

    共 2 条评论
    1
  • 紫霞仙子意中人
    2022-11-14 来自贵州
    姚老师,请教一个问题。我配置了异常比列降级熔断,在代码中 throw new RuntimeException("异常");问题是没有达到我配置的条件,只要代码走抛出异常的那一步,就会直接降级。另外慢调用也不生效。我的限流策略是可以正常执行的。

    作者回复: 代码走到异常的部分确实会执行降级方法,这个是正确的行为。sentinel的阈值控制的是“熔断”,比如说你达到阈值之后,方法就直接走到降级逻辑里,而不会通过“执行原方法->降级逻辑”的顺序来走

    
    
  • 海阔天空
    2022-01-24
    照着代码写的,配置也是一样的(我习惯用properties格式)。服务启动的时候控制台日志 dataid为null.properties。断点进去看的的时候第一遍dataid是显示的有我配置的值,后面再获取的时候却是null.properties。。。然后又原模原样换成老师的配置,dataid也是显示null.yml。。这是为啥呢?

    作者回复: 同学可以把配置代码和日志发出来看下,只看描述我没太明白“后面再获取dataid”是哪个场景

    共 2 条评论
    
  • 请叫我和尚
    2022-01-24
    日常追更,每次做第一个打卡留言的人

    作者回复: 感谢老铁的支持,双击666

    
    