1. 程式人生 > >微服務熔斷限流Hystrix之流聚合

微服務熔斷限流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)熔斷模式:這種模式主要是參考電路熔斷,如果一條線路電壓過高,保險絲會熔斷,防止火災。放到我們的系統中,如果某個目標服務呼叫慢或者有大量超時,此時,熔斷該服務的呼叫,對於後續呼叫請求,不在繼續呼叫目標服務,直接返回,快速釋放資源。如果目標服務情況好轉則