• 又双叒叕是一年啊
    2019-05-14
    CircuitBreaker 和 Bulkhead 一般用在服务调用方 ,而RateLimiter一般用在服务提供方,是这样子?
    今天读了下 resilience4j 的官方使用文档, 感觉还不是很清晰,有些调用处理 用法不是很明确比如异步如何处理? io.vavr 使用如 Try.of() 这种不是很熟悉,也不清楚有哪些场景应该用这里面的哪些api,希望老师给介绍下或者给推荐些资料去学习下,多谢了

    作者回复: 关于问题一,看场景用就好,不一定要分服务调用方和提供方,比如同一个系统内部也可以用这些来做保护,打个比方,在一个接口里要操作数据库,我也可以在DAO方法上加这些。
    关于问题二,Try.of这些主要就是让你更方便地写函数式的代码,可以去了解一下函数式编程。

    
     3
  • 又双叒叕是一年啊
    2019-05-14
    服务限流或熔断成功会返回特定类型异常吗,服务调用方要怎么处理服务提供方程序被限流或熔断返回的异常,比如我们想如果达到熔断或限流条件时将这个请求异步缓存到队列中后续处理要如何操作?可以实现?

    作者回复: 会有自己的异常类型的,比如BulkheadFullException、CircuitBreakerOpenException、RequestNotPermitted这样的。你在捕获到这些类型的异常后自己想怎么处理都行。

    
     3
  • 又双叒叕是一年啊
    2019-05-16
    断路器 隔仓 限流 重试这几个我在一个方法上都加了会以什么样的优先级顺序执行呢?

    作者回复: 默认顺序是 retry -> bulkhead -> circuitbreaker -> ratelimiter,可以看RateLimiterConfigurationProperties.rateLimiterAspectOrder的值,其他几个也是类似的。这些切面都是实现了Ordered的,因此可以指定顺序执行。

    
     1
  • 高坤
    2020-01-19
    ratelimiter-waiter-service项目启动时,服务注册信息如下:
    Registering service with consul: NewService{id='waiter-service-8080', name='waiter-service', tags=[secure=false], address='192.168.56.1', meta=null, port=8080, enableTagOverride=null, check=Check{script='null', interval='10s', ttl='null', http='http://192.168.56.1:8080/actuator/health', method='null', header={}, tcp='null', timeout='null', deregisterCriticalServiceAfter='null', tlsSkipVerify=null, status='null'}, checks=null}

    consul的控制台Node Checks也是绿色的√,但是Service Checks是一个红色的×,点进去查看,错误信息如下:
    Get http://192.168.56.1:8080/actuator/health: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

    这个错误没找到解决办法,请老师帮忙看看(是不是现在的consul最新版和项目的springboot版本有什么兼容性问题)
    展开

    作者回复: 看你的报错,应该是Consul的服务端访问http://192.168.56.1:8080/actuator/health超时了,有可能是真超时了,先试试加大超时时间看看吧。

    
    
  • 又双叒叕是一年啊
    2019-05-17
    感谢老师我瞬间明白了要怎么玩这些组件了收获很大
    
    
我们在线,来聊聊吧