一宾茂、信號量隔離
????信號量隔離就是Hystrix中一種控制訪問的隔離機(jī)制,通過配置信號量來控制訪問的數(shù)量等參數(shù)
? ? 1.創(chuàng)建項(xiàng)目难捌,添加依賴
? ? 2.修配application.properties/yml配置文件
? ? 3.修改ProductService膝宁,配置信號量隔離具體參數(shù)
@HystrixCommand(fallbackMethod ="fallback",commandProperties = {
@HystrixProperty(name=HystrixPropertiesManager.EXECUTION_ISOLATION_STRATEGY,? value="SEMAPHORE"),// 信號量 隔離
? ? ? ? @HystrixProperty (name=HystrixPropertiesManager.EXECUTION_ISOLATION_SEMAPHORE_MAX_CONCURRENT_REQUESTS, value="100")//信號量最大并度
? ? ? ? })
????4.修改啟動類
????常見的參數(shù):
? ??????execution.isolation.strategy:隔離策略配置項(xiàng)
????????execution.isolation.thread.timeoutInMiliseconds:超時(shí) 時(shí)間
????????execution.isolation.thread.interruptOnTimeout:是否打開超時(shí)線程中斷
????????execution.isolation.semaphore.maxConcurrentRequests:信號量最大并發(fā)度
????????fallback.isolation.semaphore.maxConcurrentRequests:fallback最大并發(fā)度
? ? 線程池隔離和信號量隔離的區(qū)別
二、Feign的服務(wù)降級處理
????1.創(chuàng)建Service項(xiàng)目根吁,創(chuàng)建Provider項(xiàng)目(開啟Eureka客戶端工具员淫,在Eureka服務(wù)中心注冊)
? ? 2.修改Consumer項(xiàng)目,依賴Feign的服務(wù)降級主要在修改Consumer項(xiàng)目击敌,配置pom.xml文件介返,修改applicaiton.properties/yml文件,F(xiàn)eign對Eureka的支持
? ? ? ? a.修改ConusmerService
? ? ? ? b.新建ServiceFactory
? ? ? ? 啟動類
三愚争、在項(xiàng)目中開啟可視化的數(shù)據(jù)監(jiān)控Hystrix-dashboard
? ? Hystrix-dashboard(儀表盤):Hystrix-dashboard是一款針對Hystrix進(jìn)行實(shí)時(shí)監(jiān)控的工具映皆,通過HystrixDashboard我們可以在展示頁面直觀的看到各Hystrix Command的請求響應(yīng)時(shí)間挤聘,請求成功率等
? ? 1.創(chuàng)建數(shù)據(jù)監(jiān)控中心服務(wù)項(xiàng)目,修改POM文件捅彻,添加actuator啟動器组去,添加hystrix啟動器、hystrix-dashboard啟動器
? ? 2.修改配置文件步淹,修改啟動類
? ? 3.注意:啟動順序从隆,先啟動服務(wù),再啟動監(jiān)控中心缭裆。
? ? 監(jiān)控中心圖解
高版本踩坑(較新版本)
?在SpringCloud高版本中键闺,默認(rèn)沒有開啟hystrix.stream的終端,是無法直接訪問的澈驼,需要配置額外的Servlet
? ? 解決:配置額外的Servlet
正常頁面
四辛燥、通過Turbine監(jiān)控集群數(shù)據(jù)
? ? Turbine簡介:Turbine是聚合服務(wù)器發(fā)送事件流數(shù)據(jù)的一個(gè)工具,hystrix的監(jiān)控中缝其,只能監(jiān)控單個(gè)節(jié)點(diǎn)挎塌,實(shí)際生產(chǎn)中都為集群,因此可以通過turbine來監(jiān)控集群服務(wù)
? ? 1.創(chuàng)建項(xiàng)目内边,修改pom.xml文件
? ? 2.修改applicaiton.properties/yml全局文件榴都,配置要監(jiān)控的應(yīng)用
? ? 3.啟動類和項(xiàng)目結(jié)構(gòu)
? ? 然后先啟動被監(jiān)控的服務(wù),再啟動監(jiān)控中心漠其,再啟動視圖工具dashboard(儀表盤)嘴高,查看的時(shí)候,將ip:端口/turbine.stream輸入就行
五和屎、采用RabbitMQ拴驮,收集監(jiān)控?cái)?shù)據(jù)
? ? 在通過Turbine工具監(jiān)控集群的過程中,我們發(fā)現(xiàn)柴信,如果需要監(jiān)控多個(gè)服務(wù)莹汤,參數(shù)配置會很冗余,所以引入了RabbitMQ作為中間緩存數(shù)據(jù)來進(jìn)行監(jiān)控?cái)?shù)據(jù)
? ? 1.創(chuàng)建需要監(jiān)控的項(xiàng)目颠印,修改pom.xml,配置依賴
? ? 2.修改application.properties/yml全局配置文件抹竹,配置應(yīng)用名线罕,端口,RabbitMQ等信息(分別配置)
? ? 3.修改DashBoardMQConsumer的啟動類
? ??4.修改TurbineMQConsumer的啟動類
? ? 最后依次啟動即可