国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

史上最簡(jiǎn)單的SpringCloud教程 | 第四篇:斷路器(Hystrix)

Hydrogen / 601人閱讀

摘要:為了保證其高可用,單個(gè)服務(wù)又必須集群部署。為了解決這個(gè)問(wèn)題,就出現(xiàn)斷路器模型。一斷路器簡(jiǎn)介摘自官網(wǎng)已經(jīng)創(chuàng)建了一個(gè)名為的庫(kù)來(lái)實(shí)現(xiàn)斷路器模式。較底層的服務(wù)如果出現(xiàn)故障,會(huì)導(dǎo)致連鎖故障。當(dāng)對(duì)特定的服務(wù)的調(diào)用達(dá)到一個(gè)閥值是秒次斷路器將會(huì)被打開(kāi)。

轉(zhuǎn)載請(qǐng)標(biāo)明出處:
http://blog.csdn.net/forezp/a...
本文出自方志朋的博客

在微服務(wù)架構(gòu)中,我們將業(yè)務(wù)拆分成一個(gè)個(gè)的服務(wù),服務(wù)與服務(wù)之間可以相互調(diào)用(RPC)。為了保證其高可用,單個(gè)服務(wù)又必須集群部署。由于網(wǎng)絡(luò)原因或者自身的原因,服務(wù)并不能保證服務(wù)的100%可用,如果單個(gè)服務(wù)出現(xiàn)問(wèn)題,調(diào)用這個(gè)服務(wù)就會(huì)出現(xiàn)網(wǎng)絡(luò)延遲,此時(shí)若有大量的網(wǎng)絡(luò)涌入,會(huì)形成任務(wù)累計(jì),導(dǎo)致服務(wù)癱瘓,甚至導(dǎo)致服務(wù)“雪崩”。

為了解決這個(gè)問(wèn)題,就出現(xiàn)斷路器模型。

一、斷路器簡(jiǎn)介

Netflix has created a library called Hystrix that implements the circuit breaker pattern. In a microservice architecture it is common to have multiple layers of service calls.

. ----摘自官網(wǎng)

Netflix已經(jīng)創(chuàng)建了一個(gè)名為Hystrix的庫(kù)來(lái)實(shí)現(xiàn)斷路器模式。 在微服務(wù)架構(gòu)中,多層服務(wù)調(diào)用是非常常見(jiàn)的。

較底層的服務(wù)如果出現(xiàn)故障,會(huì)導(dǎo)致連鎖故障。當(dāng)對(duì)特定的服務(wù)的調(diào)用達(dá)到一個(gè)閥值(hystric 是5秒20次) 斷路器將會(huì)被打開(kāi)。

斷路打開(kāi)后,可用避免連鎖故障,fallback方法可以直接返回一個(gè)固定值。

二、準(zhǔn)備工作

基于上一篇文章的工程,首先啟動(dòng):
基于上一節(jié)的工程,啟動(dòng)eureka-server 工程;啟動(dòng)service-hi工程,它的端口為8762;

三、在ribbon使用斷路器

改造serice-ribbon 工程的代碼:

在pox.xml文件中加入:


    org.springframework.cloud
    spring-cloud-starter-hystrix

在程序的入口類加@EnableHystrix:

@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrix
public class ServiceRibbonApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceRibbonApplication.class, args);
    }

    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }

}

改造HelloService類,加上@HystrixCommand,并指定fallbackMethod方法。

@Service
public class HelloService {

    @Autowired
    RestTemplate restTemplate;

    @HystrixCommand(fallbackMethod = "hiError")
    public String hiService(String name) {
        return restTemplate.getForObject("http://SERVICE-HI/hi?name="+name,String.class);
    }

    public String hiError(String name) {
        return "hi,"+name+",sorry,error!";
    }
}

啟動(dòng):service-ribbon 工程,當(dāng)我們?cè)L問(wèn)http://localhost:8764/hi?name...瀏覽器顯示:

hi forezp,i am from port:8762

此時(shí)關(guān)閉 service-hi ,工程,當(dāng)我們?cè)僭L問(wèn)http://localhost:8764/hi?name...,瀏覽器會(huì)顯示:

hi ,forezp,orry,error!

這就證明斷路器起作用了。

四、Feign中使用斷路器

如果你使用了feign,feign是自帶斷路器的,并且是已經(jīng)打開(kāi)了。如果使用feign不想用斷路器的話,可以在配置文件中關(guān)閉它,配置如下:

feign.hystrix.enabled=false

基于service-feign我們?cè)诟脑煜?只需要在SchedualServiceHi接口的注解中加上fallback的指定類就行了:

@FeignClient(value = "service-hi",fallback = SchedualServiceHiHystric.class)
public interface SchedualServiceHi {
    @RequestMapping(value = "/hi",method = RequestMethod.GET)
    String sayHiFromClientOne(@RequestParam(value = "name") String name);
}

SchedualServiceHiHystric類:

@Component
public class SchedualServiceHiHystric implements SchedualServiceHi {
    @Override
    public String sayHiFromClientOne(String name) {
        return "sorry "+name;
    }
}

啟動(dòng)四servcie-feign工程,打開(kāi)http://localhost:8765/hi?name...注意此時(shí)service-hi還沒(méi)打開(kāi),網(wǎng)頁(yè)顯示:

sorry forezp

打開(kāi)service-hi,網(wǎng)頁(yè)顯示;

hi forezp,i am from port:8762

這證明斷路器起到作用了。

五、Circuit Breaker: Hystrix Dashboard (斷路器:hystrix 儀表盤)

基于service-ribbon 改造下:

pom.xml加入:


            org.springframework.boot
            spring-boot-starter-actuator
        

        
            org.springframework.cloud
            spring-cloud-starter-hystrix-dashboard
        

在主程序入口中加入@EnableHystrixDashboard注解,開(kāi)啟hystrixDashboard:

@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrix
@EnableHystrixDashboard
public class ServiceRibbonApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceRibbonApplication.class, args);
    }

    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }

}

打開(kāi)瀏覽器:訪問(wèn)http://localhost:8764/hystrix,界面如下:

點(diǎn)擊monitor stream,進(jìn)入下一個(gè)界面,訪問(wèn):http://localhost:8764/hi?name...

此時(shí)會(huì)出現(xiàn)監(jiān)控界面:

本文源碼下載:
https://github.com/forezp/SpringCloudLearning/tree/master/chapter4

六、參考資料

circuit_breaker_hystrix

feign-hystrix

hystrix_dashboard

優(yōu)秀文章推薦:

史上最簡(jiǎn)單的 SpringCloud 教程 | 終章

史上最簡(jiǎn)單的 SpringCloud 教程 | 第一篇: 服務(wù)的注冊(cè)與發(fā)現(xiàn)(Eureka)

史上最簡(jiǎn)單的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)

勘誤:有人反映feign的熔斷器不起作用,springcloud版本的問(wèn)題,用這個(gè):


   
      
         org.springframework.cloud
         spring-cloud-dependencies
         Camden.SR6
         pom
         import
      
   

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/69959.html

相關(guān)文章

  • 架構(gòu)~微服務(wù)

    摘要:接下來(lái)繼續(xù)介紹三種架構(gòu)模式,分別是查詢分離模式微服務(wù)模式多級(jí)緩存模式。分布式應(yīng)用程序可以基于實(shí)現(xiàn)諸如數(shù)據(jù)發(fā)布訂閱負(fù)載均衡命名服務(wù)分布式協(xié)調(diào)通知集群管理選舉分布式鎖和分布式隊(duì)列等功能。 SpringCloud 分布式配置 SpringCloud 分布式配置 史上最簡(jiǎn)單的 SpringCloud 教程 | 第九篇: 服務(wù)鏈路追蹤 (Spring Cloud Sleuth) 史上最簡(jiǎn)單的 S...

    xinhaip 評(píng)論0 收藏0
  • 架構(gòu)~微服務(wù) - 收藏集 - 掘金

    摘要:它就是史上最簡(jiǎn)單的教程第三篇服務(wù)消費(fèi)者后端掘金上一篇文章,講述了通過(guò)去消費(fèi)服務(wù),這篇文章主要講述通過(guò)去消費(fèi)服務(wù)。概覽和架構(gòu)設(shè)計(jì)掘金技術(shù)征文后端掘金是基于的一整套實(shí)現(xiàn)微服務(wù)的框架。 Spring Boot 配置文件 – 在坑中實(shí)踐 - 后端 - 掘金作者:泥瓦匠鏈接:Spring Boot 配置文件 – 在坑中實(shí)踐版權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)注明出處本文提綱一、自動(dòng)配置二、自定義屬性三、ran...

    church 評(píng)論0 收藏0
  • 上最簡(jiǎn)單 SpringCloud 教程 | 第一篇: 服務(wù)注冊(cè)與發(fā)現(xiàn)(Eureka)

    摘要:創(chuàng)建過(guò)程同類似創(chuàng)建完如下通過(guò)注解表明自己是一個(gè)僅僅是不夠的,還需要在配置文件中注明自己的服務(wù)注冊(cè)中心的地址,配置文件如下需要指明這個(gè)很重要,這在以后的服務(wù)與服務(wù)之間相互調(diào)用一般都是根據(jù)這個(gè)。 轉(zhuǎn)載請(qǐng)標(biāo)明出處: http://blog.csdn.net/forezp/a...本文出自方志朋的博客 一、spring cloud簡(jiǎn)介 spring cloud 為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系...

    only_do 評(píng)論0 收藏0
  • 外行人都能看懂SpringCloud,錯(cuò)過(guò)了血虧!

    摘要:集群系統(tǒng)中的單個(gè)計(jì)算機(jī)通常稱為節(jié)點(diǎn),通常通過(guò)局域網(wǎng)連接,但也有其它的可能連接方式。這樣就高興了,可以專心寫自己的,前端就專門交由小周負(fù)責(zé)了。于是,小周和就變成了協(xié)作開(kāi)發(fā)。都是為了項(xiàng)目正常運(yùn)行以及迭代。 一、前言 只有光頭才能變強(qiáng) 認(rèn)識(shí)我的朋友可能都知道我這陣子去實(shí)習(xí)啦,去的公司說(shuō)是用SpringCloud(但我覺(jué)得使用的力度并不大啊~~)... 所以,這篇主要來(lái)講講SpringClou...

    沈建明 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<