作者回复: 关于问题一,看场景用就好,不一定要分服务调用方和提供方,比如同一个系统内部也可以用这些来做保护,打个比方,在一个接口里要操作数据库,我也可以在DAO方法上加这些。 关于问题二,Try.of这些主要就是让你更方便地写函数式的代码,可以去了解一下函数式编程。
作者回复: 默认顺序是 retry -> bulkhead -> circuitbreaker -> ratelimiter,可以看RateLimiterConfigurationProperties.rateLimiterAspectOrder的值,其他几个也是类似的。这些切面都是实现了Ordered的,因此可以指定顺序执行。
作者回复: 会有自己的异常类型的,比如BulkheadFullException、CircuitBreakerOpenException、RequestNotPermitted这样的。你在捕获到这些类型的异常后自己想怎么处理都行。
作者回复: 我想这是你要找的:https://github.com/resilience4j/resilience4j/issues/546 ,不知道官方有没有把这位韩国朋友的代码合并进去
作者回复: 在这个课程中没有设计Spring Cloud Gateway的内容,不过这个网上也挺多的,我在最近写的书里会加上一部分这个内容
作者回复: 把用户信息(比如ID)作为参数传入,然后Resilience4j根据参数进行限流。至于IP级的限流和拒绝,在防火墙上做的更多一点,或者是在接入层上做。
作者回复: 看你的报错,应该是Consul的服务端访问http://192.168.56.1:8080/actuator/health超时了,有可能是真超时了,先试试加大超时时间看看吧。