Spring Cloud(五)《Turbine 監控信息聚合展示 Hystrix》

      網友投稿 589 2025-04-01

      Spring Cloud(五)《Turbine 監控信息聚合展示 Hystrix》

      前言介紹

      Hystrix Dashboard 可以定時收集接口調用信息;時長、次數、性能、熔斷等各項指標來進行監控展示,但是我們每次監控都需要輸入一個Hystrix 的鏈接例如:http://localhost:9001/actuator/hystrix.stream,但是這樣并不利于我們去做整體服務的監控,并且在實際使用的過程中如果是幾十到幾百個接口那么這樣的監控幾乎達不到監控效果,就累死在監控路上了。因此我們需要使用到 Turbine 來進行監控信息聚合,可以按業務組定義配置方便監控。

      案例說明

      環境準備

      jdk 1.8、idea2018、Maven3

      spring Boot 2.0.6.RELEASE

      spring Cloud Finchley.SR2

      代碼示例

      itstack-demo-springcloud-05 ├── itstack-demo-springcloud-eureka-client │ └── src │ └── main │ ├── java │ │ └── org.itstack.demo │ │ ├── web │ │ │ └── EurekaClientController.java │ │ └── EurekaClientApplication.java │ └── resources │ └── application.yml ├── itstack-demo-springcloud-eureka-server │ └── src │ └── main │ ├── java │ │ └── org.itstack.demo │ │ └── EurekaServerApplication.java │ └── resources │ └── application.yml ├── itstack-demo-springcloud-hystrix-dashboard │ └── src │ └── main │ ├── java │ │ └── org.itstack.demo │ │ └── DashboardApplication.java │ └── resources │ └── application.yml ├── itstack-demo-springcloud-hystrix-feign │ └── src │ └── main │ ├── java │ │ └── org.itstack.demo │ │ ├── service │ │ │ ├── hystrix │ │ │ │ └── FeignServiceHystrix.java │ │ │ └── FeignService.java │ │ ├── web │ │ │ └── FeignController.java │ │ └── FeignApplication.java │ └── resources │ └── application.yml ├── itstack-demo-springcloud-hystrix-ribbon │ └── src │ └── main │ ├── java │ │ └── org.itstack.demo │ │ ├── service │ │ │ └── RibbonService.java │ │ ├── web │ │ │ └── RibbonController.java │ │ └── RibbonApplication.java │ └── resources │ └── application.yml └── itstack-demo-springcloud-turbine └── src └── main ├── java │ └── org.itstack.demo │ └── TurbineApplication.java └── resources └── application.yml

      itstack-demo-springcloud-eureka-client | 服務提供方

      提供一個查詢用戶信息的簡單方法,在配置文件中通過修改端口啟動2次,模擬雙實例應用,為調用方負載做準備。

      web/EurekaClientController.java | 注意@EnableEurekaClient用于向注冊中心提供服務

      EurekaClientApplication.java | 服務啟動類

      application.yml | 配置文件鏈接服務注冊中心,8001\8002分別配置啟動

      server: port: 8001 / 8002 spring: application: name: itstack-demo-springcloud-eureka-client eureka: client: serviceUrl: defaultZone: http://localhost:7397/eureka/

      itstack-demo-springcloud-eureka-server | 單個服務注冊中心

      服務注冊中心用于承載接口提供方向上注冊,同時正在調用方鏈接后可以獲取指定應用的服務實例。

      EurekaServerApplication.java | 通過注解@EnableEurekaServer啟動服務注冊與發現中心

      application.yml | 服務注冊中心配置文件,端口7397和我們之前寫netty的服務的端口一致

      server: port: 7397 eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ spring: application: name: itstack-demo-springcloud-eureka-server

      itstack-demo-springcloud-hystrix-dashboard | 服務監控像儀表盤一樣透視系統健康度

      Spring Cloud Hystrix Dashboard只是spring cloud基于Hystrix Dashboard,將實時監控數據通過頁面呈現出來。Spring Cloud Hystrix Dashboard的底層原理是間隔一定時間去“Ping”目標服務,返回的結果是最新的監控數據,最后將數據顯示出來。

      Cluster via Turbine (default cluster): http://turbine-hostname:port/turbine.stream Cluster via Turbine (custom cluster): http://turbine-hostname:port/turbine.stream?cluster=[clusterName] Single Hystrix App: http://hystrix-app:port/actuator/hystrix.stream

      DashboardApplication.java | 配置@EnableHystrixDashboard啟動服務

      application.yml | 通用配置信息

      server: port: 8989 spring: application: name: itstack-demo-springcloud-hystrix-dashboard

      itstack-demo-springcloud-feign | Feign服務調用方,添加熔斷Hystrix

      Feign 是一個聲明式的 Web Service 客戶端,它的目的就是讓 Web Service 調用更加簡單。它整合了 Ribbon 和 Hystrix,從而讓我們不再需要顯式地使用這兩個組件。Feign 還提供了 HTTP 請求的模板,通過編寫簡單的接口和插入注解,我們就可以定義好 HTTP 請求的參數、格式、地址等信息。接下來,Feign 會完全代理 HTTP 的請求,我們只需要像調用方法一樣調用它就可以完成服務請求。

      Feign 具有如下特性:

      可插拔的注解支持,包括 Feign 注解和 JAX-RS 注解

      支持可插拔的 HTTP 編碼器和解碼器

      支持 Hystrix 和它的 Fallback

      支持 Ribbon 的負載均衡

      支持 HTTP 請求和響應的壓縮

      service/FeignService.java | 注解方式調用,方便易用。@FeignClient會在調用時進行解析服務到具體的http://ip:port/

      service/hystrix/FeignServiceHystrix.java | 提供熔斷服務,當發生異常時主動返回預定結果

      web/FeignController.java | 使用接口提供服務 From Feign

      FeignApplication.java | 注解@EnableEurekaClient、@EnableFeignClients、@EnableDiscoveryClient獲取調用注冊中心服務

      application.yml | eureka服務配置,從注冊中心獲取可用服務。開啟hystrix=true,并設置hystrix.stream

      server: port: 9001 spring: application: name: itstack-demo-springcloud-feign eureka: client: serviceUrl: defaultZone: http://localhost:7397/eureka/ feign.hystrix.enabled: true management: endpoints: web: exposure: include: hystrix.stream

      itstack-demo-springcloud-ribbon | Ribbon服務調用方

      Ribbon是一個基于 HTTP 和 TCP 的客戶端負載均衡器。它可以通過在客戶端中配置 ribbonServerList 來設置服務端列表去輪詢訪問以達到均衡負載的作用。

      當 Ribbon 與 Eureka 聯合使用時,ribbonServerList 會被 DiscoveryEnabledNIWSServerList 重寫,擴展成從 Eureka 注冊中心中獲取服務實例列表。同時它也會用 NIWSDiscoveryPing 來取代 IPing,它將職責委托給 Eureka 來確定服務端是否已經啟動。

      service/RibbonService.java | 接口式硬編碼調用不太易于維護,因此也是比較少用的方式。hystrix實際通過getFallback()返回熔斷結果

      web/RibbonController.java | 使用接口提供服務 From Ribbon

      RibbonApplication.java | 通過注解@LoadBalanced注冊rest模版,用于Ribbon接口調用。并啟動@EnableHystrix

      application.yml | eureka服務配置,從注冊中心獲取可用服務

      server: port: 9002 spring: application: name: itstack-demo-springcloud-ribbon eureka: client: serviceUrl: defaultZone: http://localhost:7397/eureka/

      itstack-demo-springcloud-turbine | 監控信息聚合服務

      通過配置匯總,將應用itstack-demo-springcloud-feign,itstack-demo-springcloud-ribbon,匯總監控。

      TurbineApplication.java | 通過注解@EnableTurbine配置啟動Ribbon

      application.yml | eureka服務配置,從注冊中心獲取可用服務

      spring: application: name: itstack-demo-springcloud-turbine server: port: 8080 management: port: 8081 ## 服務注冊中心 eureka: client: service-url: defaultZone: http://localhost:7397/eureka ## 監控匯總配置,這里配置2個應用逗號隔開 turbine: app-config: itstack-demo-springcloud-feign,itstack-demo-springcloud-ribbon cluster-name-expression: new String("default") combine-host-port: true

      測試驗證

      啟動itstack-demo-springcloud-hystrix-dashboard,訪問;http://localhost:8989/hystrix

      [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-50OCxN8P-1573692168889)(https://fuzhengwei.github.io/assets/images/pic-content/2019/11/springcloud-4-3.png)]

      分別啟動如下系統模擬;

      itstack-demo-springcloud-eureka-server 服務注冊發現中心

      itstack-demo-springcloud-eureka-client 測試接口提供方

      itstack-demo-springcloud-hystrix-feign 接口調用方Feign

      itstack-demo-springcloud-hystrix-ribbon 接口調用方Ribbon

      itstack-demo-springcloud-turbine 監控信息匯總

      測試監控

      在hystrix-dashboard監控頁面{http://localhost:8989/hystrix},輸入;http://localhost:8080/turbine.stream

      刷新訪問兩個調用方接口;http://localhost:9001/api/queryUserInfo?userId=111、http://localhost:9002/api/queryUserInfo?userId=111

      綜上總結

      通過Turbine服務我們可以將監控信息匯總到一起進行查看,這樣更加方便實際應用。

      SpringCloud 到現在的案例已經使用到了很多服務模塊,它確實是一套有序集合框架,將各家優秀功能服務集成,方便使用。

      SpringBoot 、 SpringCloud,在開發一些中小型獨立服務非常邊界,對于一些超大型以外的公司非常合適。當然并不是一線互聯網就不使用,因為這里面還牽扯到很多對應的替代產品,比如Dubbo、網關、全鏈路監控、路由等等,所以需要根據不同業務進行技術選型,不要被技術限制。

      Spring Spring Cloud

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:設計公司項目計劃書模板(設計公司項目計劃書模板下載)
      下一篇:Excel中進行設置表格背景美化樣式的操作方法(Excel表格怎么設置背景色)
      相關文章
      中文字幕亚洲免费无线观看日本| 老司机亚洲精品影视www| 亚洲熟伦熟女新五十路熟妇| 亚洲AV无码专区在线厂| 亚洲色精品VR一区区三区| 亚洲1234区乱码| 亚洲国产美女精品久久| 99亚洲精品高清一二区| 亚洲av色影在线| 亚洲人成网站免费播放| 亚洲中文字幕无码中文| 亚洲中文字幕无码中文| 亚洲av片在线观看| 国产午夜亚洲精品不卡免下载| 国产精品亚洲一区二区无码| 日韩亚洲国产二区| 免费在线观看亚洲| 亚洲精品无码AV中文字幕电影网站| 亚洲国产一区明星换脸| 久99精品视频在线观看婷亚洲片国产一区一级在线| 日韩亚洲综合精品国产| 亚洲成a人在线看天堂无码| 国产精品亚洲高清一区二区| 亚洲熟女少妇一区二区| 亚洲AV午夜福利精品一区二区 | 亚洲精品乱码久久久久蜜桃| 亚洲精品GV天堂无码男同| 男人的天堂av亚洲一区2区| 亚洲成aⅴ人片久青草影院| 亚洲午夜福利精品久久| 国产av无码专区亚洲av桃花庵| 亚洲AV无码成人专区片在线观看| 亚洲av日韩av无码| 亚洲精品福利网泷泽萝拉| 亚洲另类春色国产精品| 亚洲日韩AV无码一区二区三区人| 国产青草亚洲香蕉精品久久| 亚洲精品美女久久久久99小说| 亚洲人成网77777亚洲色| 亚洲精选在线观看| 亚洲xxxx18|