下面我們基于之前的示例來結(jié)合Hystrix Dashboard實(shí)現(xiàn)Hystrix指標(biāo)數(shù)據(jù)的可視化面板卓鹿,這里我們將用到下之前實(shí)現(xiàn)的幾個(gè)應(yīng)用美澳,包括:
eureka-server:服務(wù)注冊(cè)中心
eureka-client:服務(wù)提供者
eureka-consumer-ribbon-hystrix:使用ribbon和hystrix實(shí)現(xiàn)的服務(wù)消費(fèi)者
由于eureka-consumer-ribbon-hystrix項(xiàng)目中的/consumer接口實(shí)現(xiàn)使用了@HystrixCommand修飾识虚,所以這個(gè)接口的調(diào)用情況會(huì)被Hystrix記錄下來针肥,以用來給斷路器和Hystrix Dashboard使用空凸。斷路器我們?cè)谏弦黄幸呀?jīng)介紹過了帽驯,下面我們來具體說說Hystrix Dashboard的構(gòu)建。
在Spring Cloud中構(gòu)建一個(gè)Hystrix Dashboard非常簡(jiǎn)單囊榜,只需要下面四步:
創(chuàng)建一個(gè)標(biāo)準(zhǔn)的Spring Boot工程审胸,命名為:hystrix-dashboard。
編輯pom.xml卸勺,具體依賴內(nèi)容如下:
org.springframework.cloud
spring-cloud-starter-parent
Dalston.SR1
org.springframework.cloud
spring-cloud-starter-hystrix
org.springframework.cloud
spring-cloud-starter-hystrix-dashboard
org.springframework.boot
spring-boot-starter-actuator
為應(yīng)用主類加上@EnableHystrixDashboard砂沛,啟用Hystrix Dashboard功能。
@EnableHystrixDashboard
@SpringCloudApplication
publicclassHystrixDashboardApplication{
publicstaticvoidmain(String[] args){
SpringApplication.run(HystrixDashboardApplication.class, args);
}
}
根據(jù)實(shí)際情況修改application.properties配置文件曙求,比如:選擇一個(gè)未被占用的端口等碍庵,此步非必須映企。
spring.application.name=hystrix-dashboard
server.port=1301
從頁面的文字內(nèi)容中我們可以知道,Hystrix Dashboard共支持三種不同的監(jiān)控方式静浴,依次為:
默認(rèn)的集群監(jiān)控:通過URLhttp://turbine-hostname:port/turbine.stream開啟堰氓,實(shí)現(xiàn)對(duì)默認(rèn)集群的監(jiān)控。
指定的集群監(jiān)控:通過URLhttp://turbine-hostname:port/turbine.stream?cluster=[clusterName]開啟苹享,實(shí)現(xiàn)對(duì)clusterName集群的監(jiān)控双絮。
單體應(yīng)用的監(jiān)控:通過URLhttp://hystrix-app:port/hystrix.stream開啟,實(shí)現(xiàn)對(duì)具體某個(gè)服務(wù)實(shí)例的監(jiān)控得问。
前兩者都對(duì)集群的監(jiān)控囤攀,需要整合Turbine才能實(shí)現(xiàn),這部分內(nèi)容我們將在下一篇中做詳細(xì)介紹宫纬。在本節(jié)中焚挠,我們主要實(shí)現(xiàn)對(duì)單個(gè)服務(wù)實(shí)例的監(jiān)控,所以這里我們先來實(shí)現(xiàn)單個(gè)服務(wù)實(shí)例的監(jiān)控漓骚。
既然Hystrix Dashboard監(jiān)控單實(shí)例節(jié)點(diǎn)需要通過訪問實(shí)例的/hystrix.stream接口來實(shí)現(xiàn)蝌衔,自然我們需要為服務(wù)實(shí)例添加這個(gè)端點(diǎn),而添加該功能的步驟也同樣簡(jiǎn)單蝌蹂,只需要下面兩步:
在服務(wù)實(shí)例pom.xml中的dependencies節(jié)點(diǎn)中新增spring-boot-starter-actuator監(jiān)控模塊以開啟監(jiān)控相關(guān)的端點(diǎn)胚委,并確保已經(jīng)引入斷路器的依賴spring-cloud-starter-hystrix:
org.springframework.cloud
spring-cloud-starter-hystrix
org.springframework.boot
spring-boot-starter-actuator
確保在服務(wù)實(shí)例的主類中已經(jīng)使用@EnableCircuitBreaker或@EnableHystrix注解,開啟了斷路器功能叉信。
從現(xiàn)在開始亩冬,我這邊也會(huì)將近期研發(fā)的springcloud微服務(wù)云架構(gòu)的搭建過程和精髓記錄下來,幫助更多有興趣研發(fā)spring cloud框架的朋友硼身,希望可以幫助更多的好學(xué)者硅急。大家來一起探討spring cloud架構(gòu)的搭建過程及如何運(yùn)用于企業(yè)項(xiàng)目。源碼來源