springCloud - 第13篇 - 服務監控 集群模式 Hystrix-turbine

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

1. 在springcloud 體系中,可以用 hystrix-dashboard? 實時監控服務的運行狀態。上一文記錄了單實例的監控,現在實現集群監控。

2. 新建工程 hystrix-turbine 作為集群監控的實現服務。

2.1?file - new - module?

2.2??spring Initializr - module SDK 選擇自己的 JDK ,其余的可以不用填寫,next。

2.3?填寫工程相關信息:包名、工程名等,next。

2.4?此步只是幫助自動生成依賴,可不選,直接 next。

2.5?工程名,代碼存放位置等,finish 。

2.6?生成工程的結構如下:

2.7?pom.xml 重用 hystrix-dashboard 的依賴,另新增少量依賴:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com</groupId><artifactId>hystrix-turbine</artifactId><version>0.0.1-SNAPSHOT</version><name>hystrix-turbine</name><description>監控面板-集群 </description><parent><groupId>com</groupId><artifactId>hystrix-dashboard</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-turbine</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies></project>

2.8 啟動類:

package com.hystrixturbine;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.turbine.EnableTurbine;//監控面板-集群
@EnableTurbine@SpringBootApplication
public class HystrixTurbineApplication {public static void main(String[] args) {SpringApplication.run(HystrixTurbineApplication.class, args);}}

2.9 配置文件?application.properties:

# 注冊中心 - 端口: 1234、工程名: eureka (見 eureka 工程中配置)。
eureka.client.serviceUrl.defaultZone= http://localhost:1234/eureka/# 端口
server.port= 8889# 工程名
spring.application.name= hystrix-turbine# 被監控服務名稱
turbine.app-config= ribbon,feign# 集群名稱為“default”。
# 應用服務很多時,可用多個 hystrix-turbine 來監控不同的聚合集群,集群名可區分這些不同的聚合集群,
# 此集群名亦可在 hystrix-dashboard 中用來定位不同的聚合集群:
# 即:“http://turbine-hostname:port/turbine.stream?cluster=[clusterName]” 中對應 “clusterName”便可。
turbine.cluster-name-expression= "default"# 同一主機上的服務通過主機名與端口號的組合來進行區分,默認以 host 區分服務,
# 這樣,本地調試時,本機上的不同服務則會聚合成一個服務來統計。
turbine.combine-host-port= true

3. 類同已有的 ribbon 工程,調整已有工程 feign 工程。

3.1 增加依賴?spring-cloud-starter-netflix-hystrix,此時 feign工程完整 pom 為:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.feign</groupId><artifactId>service-feign</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>service-feign</name><description>服務消費 feign 方式</description><parent><groupId>com.base</groupId><artifactId>base-config</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><!-- 開啟 hystrix 監控 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency></dependencies><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>

3.2 配置文件中加上 hystrix 相關配置,完整配置為:

# 注冊中心 - 端口: 1234、工程名: eureka (見 eureka 工程中配置)。
eureka.client.serviceUrl.defaultZone= http://localhost:1234/eureka/# 端口
server.port= 8702# 工程名
spring.application.name= feign# 開啟斷熔器: ( Feign 自帶斷路器,但默認為不開啟: false)
feign.hystrix.enabled=true# 也可配置為'*' ,納入 hystrix 服務監控
management.endpoints.web.exposure.include= hystrix.stream

3.3? 啟動類確認注解 :@EnableHystrix,同時加上?hystrixMetricsStreamServlet 方法,完整啟動類為:

package com.feign.servicefeign;import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;@SpringBootApplication/*** 基于接口的注解,可插拔,可使用 Feign注解 和 JAX-RS注解* Feign 默認集成 Ribbon,并和 Eureka 結合,默認實現負載均衡。*/
@EnableFeignClients// 標明自已為服務
@EnableEurekaClient// 開啟斷路器: Hystrix
@EnableHystrix
public class ServiceFeignApplication {public static void main(String[] args) {SpringApplication.run(ServiceFeignApplication.class, args);}@Beanpublic ServletRegistrationBean hystrixMetricsStreamServlet() {ServletRegistrationBean registration = new ServletRegistrationBean(new HystrixMetricsStreamServlet());registration.addUrlMappings("/hystrix.stream");return registration;}
}

4. 依次啟動工程: 注冊中心 eureka ( 端口 1234 ) 、?服務應用 ribbon? ( 端口 8701 ) 、服務應用 feign ( 端口 8702)、

監控集群服務 hystrix-turbine ( 端口 8889)、監控儀表盤hystrix-dashboard? ( 端口 8888) 。

其中,服務應用 ribbon、feign 都調用第三方服務應用:seeParam? ( 端口 8801) 。

4.1 seeParam 工程未啟動,由于有熔斷機制,訪問 feign 工程效果為:

4.2 同樣,seeParam 工程未啟動,由于有熔斷機制,訪問 ribbon?工程效果為:

4.3 訪問?http://localhost:8888/hystrix.stream?,可看到和單實例監控界面入口一樣的面板界面。

此時,在 hystrix-dashboard 中使用集群監控的 URL 查看監控信息,在頁面第一個輸入框中輸入 hystrix-turbine 工程的訪問路徑:http://localhost:8889/turbine.stream

4.4? 進入實時監控顯示頁面可看到 ,剛才已經多次刷新過請求的 feign、ribbon 工程的運行狀況統計信息:

紅色 100% 表示 請求 seeParam 工程失敗。球體為紅色也表明服務健康狀態為最差。

4.5 啟動? seeParam 工程后,請求其接口:

再多次刷新 feign、ribbon 的請求后,分別請求到了 seeParam 的接口:

此時,再查看 hysteix-dashboard 中的服務統計信息:

失敗請求率為 0.0%,球體也變為綠色,表示服務運行正常。

至此,服務監控的集群模式也實現了。

-------------------------------------------------------------

下一篇:springCloud - 第14篇 -?

源碼見:

https://gitee.com/FJ_WoMenDeShiJie/springcloud-feign

https://gitee.com/FJ_WoMenDeShiJie/springcloud-ribbon

https://gitee.com/FJ_WoMenDeShiJie/springcloud-seeParam

https://gitee.com/FJ_WoMenDeShiJie/springcloud-hystrix-turbine

https://gitee.com/FJ_WoMenDeShiJie/springcloud-hystrix-dashboard

-------------------------------------------------------------

PS:這個系列不定時更新,只是個人的學習分享,

內容全程參考書目:

《Spring Cloud 與 Docker 微服務架構空實戰?》、

《Spring Cloud 微服務實戰》及此書作者博客:http://blog.didispace.com/spring-cloud-learning/

《深入理解 Spring Cloud 與微服務構建》及此書作者博客:https://blog.csdn.net/forezp/article/details/70148833

----------------------------------------------------------------
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447560.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447560.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447560.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

借錢的境界:開價越低 借成的機會反而越小

一提起借錢&#xff0c;沒有幾個人不膽戰心驚的。有限的幾張鈔票&#xff0c;好端端地隱居在自己口袋里&#xff0c;忽然一只手伸過來把它帶走&#xff0c;真教人一點安全感都沒有。借錢的威脅不下于核子戰爭&#xff1a;后者畢竟不常發生&#xff0c;而且同難者眾&#xff0c;…

解決:Error response from daemon: Cannot restart container xxx: driver failed programming external

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 我的情況&#xff1a;個人站點訪問不了&#xff0c;重啟了阿里云ECS服務器后&#xff0c;發現服務器 80端口不通&#xff0c;于是重啟…

專訪許鵬:談C程序員修養及大型項目源碼閱讀與學習

摘要&#xff1a;閱讀源碼是開源項目最好的學習方式&#xff0c;然而真正的執行起來卻并不容易。這里我們為大家分享許鵬的源碼閱讀經驗、C程序員的修養以及Spark和Storm源碼走讀博文。 對許鵬的第一印象來源于其Bolg的粗讀&#xff0c;最早時候更準確說應該是博文的粗略統計—…

解決:mysql 連接報錯 Authentication plugin ‘caching_sha2_password‘cannot be loaded

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Navicat連接linux上的mysql時報如下錯誤&#xff1a; 錯誤原因&#xff1a; 即從mysql5.7版本之后&#xff0c;默認采用了caching_sha2_…

酒店房間和 C++ 局部變量的作用域

本文由 伯樂在線 - 菜鳥浮出水 翻譯自 StackOverflow。歡迎加入 技術翻譯小組。轉載請參見文章末尾處的要求。問題&#xff1a;Can a local variable’s memory be accessed outside its scope? 有一段局部變量的內存&#xff0c;可以從其范圍之外訪問它么&#xff1f; 如下…

解決:Access denied for user ‘root’@‘localhost’(using password: YES)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 我報這個錯的原因很簡單&#xff1a;數據庫連接時密碼輸入錯誤。把密碼確認對了&#xff0c;就連接成功了。

【歷史回顧】Linux發展一覽

我們周圍到處都有Linux的身影&#xff0c;在家中、公司里、大學、實驗室&#xff0c;太空空間站。現在的Linux已經從一個個人愛好發展成了一場計算機革命。在這篇文章里&#xff0c;我們向你展示最完整的Linux 23年來發展的歷史年表。我們周圍到處都有Linux的身影&#xff0c;在…

專訪聯想謝政維:功耗和價格是天蝎項目最大障礙!

摘要&#xff1a;與國外OpenStack和OCP&#xff08;開放計算項目&#xff09;頻頻見諸報端不同&#xff0c;中國的天蝎計劃看起來神神秘秘&#xff0c;今天專訪聯想謝政維&#xff0c;他幫我們解密了目前天蝎項目的一些基本情況&#xff0c;以及他對未來天蝎發展的觀點。 服務…

解決:Chrome 插件安裝時提示 程序包無效:“CRX_HEADER_INVALID“

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 今天在添加谷歌插件的時候&#xff0c;卻發現谷歌瀏覽器顯示 程序包無效&#xff1a;"CRX_HEADER_INVALID"&#xff0c;現整理…

65種GPU性能測試,AMD開源驅動領先!

摘要&#xff1a;近日&#xff0c;Phoronix測試了65 種不同的GPU使用開源驅動的OpenGL性能&#xff0c;測試的GPU型號包括Intel HD Graphics、AMD Radeon、AMD FirePro和NVIDIA GeForce系列。結果顯示&#xff0c;相比之下&#xff0c;AMD開源驅動領先于NVIDIA。 【編者按】20…

1分鐘看懂:java 項目中 VO 、DTO、Entity,各自是在什么情況下應用的

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、entity 里的每一個字段&#xff0c;與數據庫相對應&#xff0c; 2、vo 里的每一個字段&#xff0c;是和你前臺 html 頁面相對應&…

指尖上的藝術——如何運用代碼發揮無限創意

摘要&#xff1a;計算機為我們的生活帶來了不計其數的變化&#xff0c;現在&#xff0c;我們不妨也把它與藝術結合起來&#xff0c;去從機器的角度來為生活增添活力與色彩&#xff0c;開拓一個無限可能的藝術創作新境界。 寫在前面 生成的藝術&#xff0c;指尖上的藝術&#…

解決:XXX類存在 卻報錯 Unkonwn class:‘XXX‘ 、@Autoeired 注入失敗

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 我的情況如圖&#xff0c;有一個CuxxxxManager 類明明是就在本工程中的&#xff0c;我想注入到對應 Service 中&#xff0c;卻直接報…

精益設計:“紙上談兵”的說服力

摘要&#xff1a;當你和團隊通宵達旦地輸出大量完整而精美的方案時&#xff0c;可客戶卻根本不買帳。這究竟是溝通出了問題&#xff0c;還是我們犯了錯&#xff1f;如何提高設計效率、提升溝通及如何設計出更好的用戶體驗是每個互聯網從業者都值得關注的問題。 【編者按】此前…

《西線無戰事》:合上書的那一刻:只想痛哭

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 昨晚看完此書&#xff0c;看的時候&#xff0c;我一直以為他是在回憶&#xff0c;然而&#xff0c;最終卻沒有一個人活下來&#xff0c;…

如何兼職創業并避免風險

大多數人開始創建第一家公司時&#xff0c;仍然有一份正常工作。 這是有道理的&#xff1a;你不需要貸款&#xff0c;并且你并不需要資金。如果你“失敗”了&#xff0c;你失去僅僅是時間&#xff0c;但考慮到你得到的樂趣&#xff0c;經歷&#xff0c;以及一切你已經學會的東西…

得當前時間的工具類

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Date datenew Date();DateFormat formatnew SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String timeformat.format(date);不同…

8款最受歡迎的HTML5/CSS3應用及代碼

新的一周開始&#xff0c;小編也將繼續為大家分享精彩的HTML5應用&#xff0c;還有CSS3和jQuery方面的東西。今天給大家帶來的是8款最受歡迎的HTML5/CSS3應用及代碼&#xff0c;一起來看看吧。 1、基于HTML5 Canvas的圖表插件Chart.js chart.js是一款基于HTML5 Canvas的圖表插…

Java 8: LocalDate、LocalTime 、LocalDateTime 處理日期時間

JDK8中&#xff0c;新增了三個類&#xff0c;用以處理時間。 LocalDate專門處理日期&#xff0c;LocalTime專門處理時間&#xff0c;LocalDateTime包含了日期和時間&#xff0c;而且對于很多復雜的問題&#xff0c;都提供了現成的方法&#xff0c;比如&#xff1a;獲取2017年1…

超負荷寫代碼 = 慢性自殺

本文是html5tricks原創翻譯&#xff0c;轉載請看清文末的轉載要求&#xff0c;謝謝合作&#xff01; 也許你會認為我是個故弄玄虛的標題黨&#xff0c;不過我需要澄清一下。首先&#xff0c;這是真的&#xff0c;超負荷寫代碼的確意味著慢性自殺。然后問題就來了&#xff0c;“…