用户工具

站点工具


spring:hystrix

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
spring:hystrix [2019/09/23 15:32]
admin
spring:hystrix [2019/09/23 22:34] (当前版本)
admin
行 11: 行 11:
     public String helloFallback () { return "​error";​ }  //​服务降级,不能依赖网络     public String helloFallback () { return "​error";​ }  //​服务降级,不能依赖网络
  
-  * 信号量隔离:线程隔离会带来约9ms的开销,对于部分请求可以使用信号量隔离降低延迟 +  * 同步、异步、响应式
- +
-    execution.isolation.strategy=SEMAPHORE ​ //​服务降级时会使用信号量 +
- +
-  * 使用详解+
  
     UserCommand extends HystrixCommand<​User>​,同步执行:User=uc.execute(),异步执行:Future<​User>​=uc.queue()     UserCommand extends HystrixCommand<​User>​,同步执行:User=uc.execute(),异步执行:Future<​User>​=uc.queue()
行 21: 行 17:
     UserCommand.construct(){ return Observable.create(new Observable.OnSubscribe<​User>​(observer){});​ }     UserCommand.construct(){ return Observable.create(new Observable.OnSubscribe<​User>​(observer){});​ }
     @HystrixCommand Observable<​User>​ (id) { //​observer.onNext(rest);​ observer.onCompleted();​ }  //响应式     @HystrixCommand Observable<​User>​ (id) { //​observer.onNext(rest);​ observer.onCompleted();​ }  //响应式
 +    execution.isolation.strategy=SEMAPHORE ​ //​信号量隔离适合低延迟<​10ms,线程隔离有9ms开销
  
-  * 线程分组+  * 线程分组、请求缓存、请求合并
  
     @HystrixCommand(commandKey = "​getUserByid",​ groupKey = "​UserGroup",​ threadPoolKey= "​getUserByidThread"​)     @HystrixCommand(commandKey = "​getUserByid",​ groupKey = "​UserGroup",​ threadPoolKey= "​getUserByidThread"​)
 +    @CacheResult @HystrixCommand User getUserById(@CackeKey("​id"​) Long id)  //​缓存结果
 +    @CacheEvict(commandKey="​getUserById"​) @HystrixCommand void update(@CacheKey("​id"​) User user)  //​清除缓存
 +    @HystrixCollapser(batchMethod= "​findAll",​ collapserProperties = {
 +        @HystrixProperty(name="​timerDelayinMilliseconds",​ value = "​100"​) ​ //​合并窗口100ms,批量请求findAll方法
 +    }) User find(Long id) { return null; }
 +    @HystrixCommand List<​User>​ findAll(List<​Long>​ ids); //​高延迟命令可以忍受合并开销,并发量小时不必合并
 +
 +  * 仪表盘
 +
 +  - Hystrix Hashboard:@EnableHystrixDashboard,spring-cloud-starter-hystrix-dashboard,服务需要使用hystrix
 +  - Turbine:@EnableTurbine,spring-cloud-starter-turbine,服务需要使用hystrix
 +  - 使用消息代理:@EnableTurbineStream,spring-cloud-starter-turbine-amqp,服务引入tubine-amqp,开启RabbitMQ
 +
  
spring/hystrix.txt · 最后更改: 2019/09/23 22:34 由 admin