Spring Cloud系列三 之 Hystrix斷路器

聲明本篇文章部分內(nèi)容參考自 程序猿DD Spring Cloud系列書籍


斷路器模式源于Martin Fowler的Circuit Breaker一文?!皵嗦菲鳌北旧硎且环N開關(guān)裝置,用于在電路上保護(hù)線路過載,當(dāng)線路中有電器發(fā)生短路時(shí),“斷路器”能夠及時(shí)的切斷故障電路,防止發(fā)生過載、發(fā)熱、甚至起火等嚴(yán)重后果。

在分布式架構(gòu)中,斷路器模式的作用就像是生活中家庭用電,一旦發(fā)生短路,就立馬斷電,不讓災(zāi)難蔓延。

Netflix Hystrix

在Spring Cloud中使用了Hystrix 來實(shí)現(xiàn)斷路器的功能。Hystrix是Netflix開源的微服務(wù)框架套件之一,該框架目標(biāo)在于通過控制那些訪問遠(yuǎn)程系統(tǒng)、服務(wù)和第三方庫的節(jié)點(diǎn),從而對(duì)延遲和故障提供更強(qiáng)大的容錯(cuò)能力。Hystrix具備擁有回退機(jī)制和斷路器功能的線程和信號(hào)隔離,請(qǐng)求緩存和請(qǐng)求打包,以及監(jiān)控和配置等功能。

在Spring Cloud中使用Hystrix組件,是非常容易的,只需要兩個(gè)注解

  • 準(zhǔn)備工作

首先啟動(dòng)(eureka-server)服務(wù)注冊(cè)中心,兩個(gè)Service服務(wù)

  • 添加Hystrix斷路器組件

只需要引入Hystrix依賴,在Ribbon負(fù)載均衡應(yīng)用啟動(dòng)類添加@EnableCircuitBreaker

@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
public class RibbonApplication {
    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }
    public static void main(String[] args) {
        SpringApplication.run(RibbonApplication.class, args);
    }
}

改造原來的服務(wù)消費(fèi)方式,新增ComputeService類,在使用ribbon消費(fèi)服務(wù)的函數(shù)上增加@HystrixCommand注解來指定回調(diào)方法。

@Service
public class ComputeService {
    @Autowired
    RestTemplate restTemplate;
    @HystrixCommand(fallbackMethod = "addServiceFallback")//回調(diào)方法
    public String addService() {
        return restTemplate.getForEntity("http://COMPUTE-SERVICE/add?a=10&b=20", String.class).getBody();
    }
    public String addServiceFallback() { //回調(diào)方法
        return "error";
    }
}

本文標(biāo)題:Dekel Tankel 談 Cloud Foundry 與 Spring 前景
本文地址:https://www.oschina.net/news/68979/cloudfundry-meetup

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容