1. 程式人生 > 其它 >Hystrix基礎之服務熔斷演示

Hystrix基礎之服務熔斷演示

技術標籤:Hystrix分散式

Hystrix基礎之服務熔斷演示

前言

  • 進行服務熔斷之前,請務必確保本地有服務降級演示的程式碼,為了演示方便本次以hystrix-client8011一個專案進行操作,不在啟動Eureka叢集。服務降級演示環境

服務熔斷

  • hystrix-client8011服務新增介面及業務類

    public interface UserServiceInter {
    
        String success(String userId);
    
        String timeOut(String userId);
    
        /**
         *熔斷演示介面
         */
    String breaker(Integer id); }
    @Service
    public class UserServiceInterImpl implements UserServiceInter {
    
    
        /**
         * circuitBreaker.enabled:是否開啟斷路器
         * circuitBreaker.requestVolumeThreshold:請求次數
         * circuitBreaker.sleepWindowInMilliseconds:時間視窗期
         * circuitBreaker.errorThresholdPercentage:失敗率
         * 一句話說明白:斷路器開啟的情況下,如果介面在10秒內有10次請求,
         * 但這10次請求其中有半數以上都失敗了,那麼斷路器跳閘並熔斷該方法
         * 此時正確的請求也不會呼叫到該方法了,而是直接走降級的方法
         * 過一段時間發現請求都正常了,斷路器會慢慢的開啟放行一些請求,直到完全開啟!
         * 更多屬性可以參考:HystrixPropertiesManager類
         */
    @HystrixCommand(fallbackMethod = "fallbackBreaker", commandProperties = { @HystrixProperty(name = "circuitBreaker.enabled", value = "true"), @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold"
    , value = "10"), @HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "10000"), @HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "60"), }) @Override public String breaker(Integer id) { if(id < 0){ throw new RuntimeException("id必須大於零"); } return "查詢成功,業務流水號是:"+ UUID.randomUUID().toString(); } /** *降級方法 */ public String fallbackBreaker(Integer id){ return "id必須大於零,id="+id; }
  • Controller增加請求資源

    @RestController
    @Slf4j
    public class TestController {
    
        @Value("${server.port}")
        private String port;
    
        @Autowired
        private UserServiceInter userServiceInter;
    
        @GetMapping(value = "service/breaker/{id}")
        public String breaker(@PathVariable("id") Integer id){
    
            return userServiceInter.breaker(id);
        }
    
  • 效果如下
    在這裡插入圖片描述

  • 這裡只做基本的入門介紹,更多詳細細節請參看官網Hystrix官網介紹