微服務熔斷限流Hystrix之流聚合
簡介
上一篇介紹了 Hystrix Dashboard 監控單體應用的例子,在生產環境中,監控的應用往往是一個叢集,我們需要將每個例項的監控資訊聚合起來分析,這就用到了 Turbine 工具。Turbine有一個重要的功能就是匯聚監控資訊,並將匯聚到的監控資訊提供給Hystrix Dashboard來集中展示和監控。
流程
實驗
工程說明
工程名 | 埠 | 作用 |
---|---|---|
eureka-server | 8761 | 註冊中心 |
service-hi | 8762 | 服務提供者 |
service-consumer | 8763 | 服務消費者 |
service-turbine | 8765 | Turbine服務 |
核心程式碼
eureka-server 、service-hi、service-consumer 工程程式碼與上一節 微服務熔斷限流Hystrix之Dashboard 相同,下面是 service-turbine 工程的核心程式碼。
pom.xml
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-turbine</artifactId> </dependency> <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-hystrix-dashboard</artifactId> </dependency>
application.yml
server:
port: 8765
spring:
application:
name: service-turbine
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
turbine:
app-config: service-consumer
cluster-name-expression: new String("default")
combine-host-port: true
引數說明:
- turbine.app-config:指定要監控的應用名
- turbine.cluster-name-expression:指定叢集的名字
- turbine.combine-host-port:表示同一主機上的服務通過host和port的組合來進行區分,預設情況下是使用host來區分,這樣會使本地除錯有問題
啟動類
@SpringBootApplication
@EnableEurekaClient
@EnableHystrixDashboard
@EnableTurbine
public class ServiceTurbineApplication {
public static void main(String[] args) {
SpringApplication.run( ServiceTurbineApplication.class, args );
}
}
模擬多例項
啟動多個 service-consumer 工程,來模擬多例項,可以通過命令java -jar service-consumer.jar --server.port=XXXX 來實現。
為了方便,在編輯器中實現啟動工程。但 idea 不支援單個應用的多次啟動, 需要開啟並行啟動:
選擇 “Edit Configurations...”
勾選 “Allow running in parallel”
測試
啟動工程,訪問 http//localhost:8763/hi , http//localhost:8764/hi , http//localhost:8763/oh , http//localhost:8764/oh,來產生測試資料。
訪問 http://localhost:8765/hystrix ,
輸入監控流地址 http://localhost:8765/turbine.stream ,點選 Monitor Stream 進入監控頁面
可以看到聚合了兩個例項的 Hystrix dashbord 資料。
原始碼
https://github.com/gf-huanchupk/SpringCloudLearning/tree/master/chapter18
歡迎掃碼或微信搜尋公眾號《程式設計師果果》關注我,關注有驚喜~
相關推薦
微服務熔斷限流Hystrix之流聚合
簡介 上一篇介紹了 Hystrix Dashboard 監控單體應用的例子,在生產環境中,監控的應用往往是一個叢集,我們需要將每個例項的監控資訊聚合起來分析,這就用到了 Turbine 工具。Turbine有一個重要的功能就是匯聚監控資訊,並將匯聚到的監控資訊提供給Hystrix Dashboard來集中展示
[java]微服務架構連載No4 Hystrix+Dashboard+Turbine實現斷路器(限流,超時,異常...)和服務監控
Hyxtrix:通過訪問遠端系統,服務,和第三方節點,從而對故障和延遲提供了強大的容錯能力,具備了服務降級,服務熔斷,遠端隔離,請求快取,請求合併已經服務監控等強大功能 本編文章架構圖如下 新建6個工程 spring-cloud-03-hystrix-eureka (服
微服務介面限流的設計、思考
微服務拆分之後,系統之間的呼叫關係錯綜複雜,平臺的整體複雜熵升高,出錯的概率、debug 問題的難度都高了好幾個數量級。所以,服務治理便成了微服務的一個技術重點。服務治理本身的概念比較大,包括鑑權、限流、降級、熔斷、監控告警等等,本文聚焦於限流,根據筆者的實戰經驗,分享一些對微服務介面限流的思考。
微服務介面限流設計與思考
服務治理本身的概念比較大,包括鑑權、限流、降級、熔斷、監控告警等等,本文聚焦於限流,分享一些對微服務介面限流的思考。 本文試圖講清楚以下問題: 如何對介面選擇合適的限流時間粒度和最大限流值? 如何驗證微服務介面限流功能的有效性和正確性? 如何打造高
使用Hystrix實現微服務熔斷與降級
在實際專案中,微服務之間的相互呼叫可能會遇上網路抖動、延遲、超時等一些列問題,如果不加以處理,可能引發更加嚴重的問題,如一開始的使用者服務不可用導致呼叫此服務的售票服務受阻,導致佔用了很多系統資源,因而導致呼叫售票服務的支付服務也掛掉,這期間又導致了資源佔用無法釋放,持續
基於Spring Cloud、JWT 的微服務權限系統設計
pri ref -c log4 bsp open 微服務 range tee 基於Spring Cloud、JWT 的微服務權限系統設計 https://gitee.com/log4j/pig https://github.com/kioyong/spring-c
2018-09-09微服務筆記(五)之 NIO
1.IO與NIO區別 NIO IO 面向流 面向緩衝 阻塞IO 非阻塞 無 選擇器 2.三個屬性 2.1 capacity:Bu
2018-08-28微服務筆記(四)之 代理模式
1.靜態代理Demo interface Action{ public void say(); } class Person implements Action{ @Override public void say() { System.out.println("人說話"); }
2018-09-03微服務筆記(二)之資料交換格式、反射
1.資料交換格式 1.1 常用的有 json 和 xml 1.2 json : 輕量級的資料交換格式 1.3 xml : 可擴充套件標記語言,重量級 1.4 json 和 xml 區別: 1、json佔用寬頻小,xml佔用寬頻大。 2、微服
2018-08-28微服務筆記(一)之多執行緒
1.多執行緒 1.1 程序與執行緒 (1)程序:正在執行的程式,是執行緒的集合。主執行緒決定程式碼的執行順序。 (2)執行緒:正在獨立執行的一條執行路徑。 (3)多執行緒:為了提高程式的效率。 1.2 四種方式建立執行緒 (1)繼承Thread類 (2)實現Runnable介面
Spring Cloud下微服務權限方案
resource amp .net put 方式 服務器驗證 ase 轉型 btn 背景從傳統的單體應用轉型Spring Cloud的朋友都在問我,Spring Cloud下的微服務權限怎麽管?怎麽設計比較合理?從大層面講叫服務權限,往小處拆分,分別為三塊:用戶認證、用戶權
微服務springcloud—Feign使用Hystrix和為Feign添加回退
Feign使用Hystrix 前文中使用註解@HystrixCommand的fallbackMethod屬性實現回退的。然而,Feign是以介面形式工作的,他沒有方法體,前文講解的方式顯然不適合Feign。 那麼Feign要如何整合Hystrix呢?不僅如此,如何實現Feign的回退呢?
Spring-cloud 微服務架構搭建 03 - Hystrix 深入理解與配置使用
文章目錄 1. hystrix簡介 2. hystrix-service 模組快速搭建 3. hystrix 回退機制 4. hystrix 執行緒池隔離和引數微調 5. hystrix 快取配置
Spring-cloud 微服務架構搭建 04 - Hystrix 監控配合turbine的配置使用
文章目錄 1. Hystrix儀表盤和Turbine叢集監控簡介 2. hystrix-dashboard-turbine 模組快速搭建 1. Hystrix儀表盤和Turbine叢集監控簡介
微服務熔斷隔離機制及註意事項
拒絕 tab 因此 pla eth 分解 默認 還需 人員 導讀:本文重點分析微服務化過程中熔斷機制及應用註意事項,包括微服務調用與“雪崩效應”及解決方案、熔斷機制及考慮因素、隔離機制及實現方式考量等內容。 隨著企業微服務化戰略的實施,業務功能細分,越來越多的服務從原有的
Spring Cloud微服務系列文,Hystrix與Eureka的整合
和Ribbon等元件一樣,在專案中,Hystrix一般不會單獨出現,而是會和Eureka等元件配套出現。在Hystrix和Eureka整合後的框架裡,一般會用到Hystrix的斷路器以及合併請求等特性,而在Web框架裡,大多會有專門的快取元件,所以不怎麼會用到Hystrix的快取特性。 1 準備
微服務架構設計實踐系列之十一:物理架構
微服務架構設計實踐 目 次1 序言2 微服務4.4.5 物理架構4.4.5.1 物理架構定義 物理架構定義了“程式”如何對映(安裝、部署或燒寫等)到“硬體”,以及“資料“如何在”硬體“上儲存和傳遞。 物理架構必須考慮”功能的分佈“和”資料
微服務架構設計實踐系列之十:技術架構
微服務架構設計實踐 目 次1 序言2 微服務4.4.4 技術架構4.4.4.1 技術架構定義 技術架構定義了實現整個系統所需的各種技術,包括開發類、過程管理類、執行環境類、運維支撐類、以及相關技術規範等。 更確切地說,技術架構描述了在一個
微服務架構設計實踐系列之五:架構準備階段
微服務架構設計實踐 目 次1 序言2 微服務4.2 架構準備階段 在架構準備階段,主要是分析使用者的需求,推薦採用“ADMEMS矩陣”矩陣方法進行需求結構化,即“需求層次-需求方面矩陣”。 通過業務級需求、使用者級需求、開發級需求三個層次,
微服務熔斷與隔離
一般情況對於服務依賴的保護主要有3中解決方案: (1)熔斷模式:這種模式主要是參考電路熔斷,如果一條線路電壓過高,保險絲會熔斷,防止火災。放到我們的系統中,如果某個目標服務呼叫慢或者有大量超時,此時,熔斷該服務的呼叫,對於後續呼叫請求,不在繼續呼叫目標服務,直接返回,快速釋放資源。如果目標服務情況好轉則