摘要:要運(yùn)行儀表板,請(qǐng)使用注解主類(lèi),然后訪問(wèn)并將儀表板指向客戶(hù)端應(yīng)用程序中的單個(gè)實(shí)例的端點(diǎn)。連接到使用的端點(diǎn)時(shí),必須信任服務(wù)器使用的證書(shū),如果證書(shū)不受信任,則必須將證書(shū)導(dǎo)入,以便儀表板成功連接到流端點(diǎn)。
Hystrix超時(shí)和Ribbon客戶(hù)端
使用包裝Ribbon客戶(hù)端的Hystrix命令時(shí),要確保將Hystrix超時(shí)配置為長(zhǎng)于配置的Ribbon超時(shí),包括可能進(jìn)行的任何可能的重試,例如,如果你的Ribbon連接超時(shí)為一秒,并且Ribbon客戶(hù)端可能會(huì)重試該請(qǐng)求三次,那么你的Hystrix超時(shí)應(yīng)該略大于三秒。
如何包含Hystrix儀表板要在項(xiàng)目中包含Hystrix儀表板,請(qǐng)使用組ID為org.springframework.cloud和工件ID為spring-cloud-starter-netflix-hystrix-dashboard的啟動(dòng)器。
要運(yùn)行Hystrix儀表板,請(qǐng)使用@EnableHystrixDashboard注解Spring Boot主類(lèi),然后訪問(wèn)/hystrix并將儀表板指向Hystrix客戶(hù)端應(yīng)用程序中的單個(gè)實(shí)例的/hystrix.stream端點(diǎn)。
連接到使用HTTPS的/hystrix.stream端點(diǎn)時(shí),JVM必須信任服務(wù)器使用的證書(shū),如果證書(shū)不受信任,則必須將證書(shū)導(dǎo)入JVM,以便Hystrix儀表板成功連接到流端點(diǎn)。Turbine
查看單個(gè)實(shí)例的Hystrix數(shù)據(jù)在系統(tǒng)整體運(yùn)行狀況方面不是很有用,Turbine是一個(gè)應(yīng)用程序,它將所有相關(guān)的/hystrix.stream端點(diǎn)聚合到一個(gè)組合的/turbine.stream中,以便在Hystrix儀表板中使用,從Eureka定位單個(gè)實(shí)例。運(yùn)行Turbine需要使用@EnableTurbine注解來(lái)注解主類(lèi)(例如,通過(guò)使用spring-cloud-starter-netflix-turbine來(lái)設(shè)置類(lèi)路徑),Turbine 1 wiki中所有記錄的配置屬性均適用。唯一的區(qū)別是turbine.instanceUrlSuffix不需要前置端口,因?yàn)槌?b>turbine.instanceInsertPort=false,否則會(huì)自動(dòng)處理。
默認(rèn)情況下,Turbine在注冊(cè)實(shí)例上查找/hystrix.stream端點(diǎn),方法是查找它在Eureka中的hostName和port條目,然后將/hystrix.stream附加到它。如果實(shí)例的元數(shù)據(jù)包含management.port,則使用它來(lái)代替/hystrix.stream端點(diǎn)的port值。默認(rèn)情況下,名為management.port的元數(shù)據(jù)條目等于management.port配置屬性,可以通過(guò)以下配置覆蓋它:
eureka: instance: metadata-map: management.port: ${management.port:8081}
turbine.appConfig配置鍵是turbine用于查找實(shí)例的Eureka serviceId列表,然后,turbine流在Hystrix儀表板中使用,其URL類(lèi)似于以下內(nèi)容:
http://my.turbine.server:8080/turbine.stream?cluster=CLUSTERNAME
如果名稱(chēng)是default,則可以省略cluster參數(shù),cluster參數(shù)必須與turbine.aggregator.clusterConfig中的條目匹配,從Eureka返回的值是大寫(xiě)的,因此,如果有一個(gè)名為customers的應(yīng)用程序在Eureka注冊(cè),則以下示例有效:
turbine: aggregator: clusterConfig: CUSTOMERS appConfig: customers
如果需要自定義Turbine應(yīng)使用的集群名稱(chēng)(因?yàn)槟悴幌M?b>turbine.aggregator.clusterConfig配置中存儲(chǔ)集群名稱(chēng)),請(qǐng)?zhí)峁?b>TurbineClustersProvider類(lèi)型的Bean。
clusterName可以通過(guò)turbine.clusterNameExpression中的SPEL表達(dá)式進(jìn)行自定義,其中根用作InstanceInfo的實(shí)例,默認(rèn)值為appName,這意味著Eureka serviceId成為群集鍵(即,customers的InstanceInfo的appName為CUSTOMERS)。另一個(gè)示例是turbine.clusterNameExpression=aSGName,它從AWS ASG名稱(chēng)獲取集群名稱(chēng),以下清單顯示了另一個(gè)示例:
turbine: aggregator: clusterConfig: SYSTEM,USER appConfig: customers,stores,ui,admin clusterNameExpression: metadata["cluster"]
在前面的示例中,來(lái)自四個(gè)服務(wù)的集群名稱(chēng)是從其元數(shù)據(jù)映射中提取的,并且應(yīng)該具有包含SYSTEM和USER的值。
要為所有應(yīng)用程序使用“default”群集,你需要一個(gè)字符串文字表達(dá)式(如果它在YAML中,則使用單引號(hào)并使用雙引號(hào)進(jìn)行轉(zhuǎn)義):
turbine: appConfig: customers,stores clusterNameExpression: ""default""
Spring Cloud提供了一個(gè)spring-cloud-starter-netflix-turbine,它具有運(yùn)行Turbine服務(wù)器所需的所有依賴(lài)關(guān)系,要添加Turbine,請(qǐng)創(chuàng)建一個(gè)Spring Boot應(yīng)用程序并使用@EnableTurbine對(duì)其進(jìn)行注解。
默認(rèn)情況下,Spring Cloud允許Turbine使用主機(jī)和端口來(lái)允許每個(gè)主機(jī)、每個(gè)集群有多個(gè)進(jìn)程,如果你希望Turbine內(nèi)置的原生Netflix行為不允許每個(gè)主機(jī)、每個(gè)群集有多個(gè)進(jìn)程(實(shí)例ID的鍵是主機(jī)名),請(qǐng)?jiān)O(shè)置turbine.combineHostPort=false。集群端點(diǎn)
在某些情況下,了解Turbine中配置了哪些集群可能對(duì)其他應(yīng)用程序有用,為了支持這一點(diǎn),你可以使用/clusters端點(diǎn),它將返回所有已配置集群的JSON數(shù)組。
GET /clusters
[ { "name": "RACES", "link": "http://localhost:8383/turbine.stream?cluster=RACES" }, { "name": "WEB", "link": "http://localhost:8383/turbine.stream?cluster=WEB" } ]
可以通過(guò)將turbine.endpoints.clusters.enabled設(shè)置為false來(lái)禁用此端點(diǎn)。
Turbine流在某些環(huán)境中(例如在PaaS設(shè)置中),從所有分布式Hystrix命令中提取指標(biāo)的經(jīng)典Turbine模型不起作用,在這種情況下,你可能希望讓Hystrix命令將指標(biāo)推送到Turbine,Spring Cloud通過(guò)消息傳遞實(shí)現(xiàn)這一點(diǎn)。要在客戶(hù)端上實(shí)現(xiàn)這一點(diǎn),請(qǐng)?zhí)砑右蕾?lài)spring-cloud-netflix-hystrix-stream和你選擇的spring-cloud-starter-stream-*。有關(guān)代理以及如何配置客戶(hù)端憑據(jù)的詳細(xì)信息,請(qǐng)參閱Spring Cloud Stream文檔,對(duì)于本地代理,這應(yīng)該是開(kāi)箱即用的。
在服務(wù)器端,創(chuàng)建一個(gè)Spring Boot應(yīng)用程序并使用@EnableTurbineStream注解它,Turbine Stream服務(wù)器需要使用Spring Webflux,因此spring-boot-starter-webflux需要包含在你的項(xiàng)目中,默認(rèn)情況下,在將spring-cloud-starter-netflix-turbine-stream添加到你的應(yīng)用程序時(shí),會(huì)包含spring-boot-starter-webflux。
然后,你可以將Hystrix儀表板指向Turbine Stream Server而不是多帶帶的Hystrix流,如果Turbine Stream在myhost上的端口8989上運(yùn)行,則將http://myhost:8989放入Hystrix儀表板的流輸入字段中,Circuit的前綴是各自的serviceId,后跟一個(gè)點(diǎn)(·),然后是Circuit名稱(chēng)。
Spring Cloud提供了spring-cloud-starter-netflix-turbine-stream,它具有運(yùn)行Turbine Stream服務(wù)器所需的所有依賴(lài)關(guān)系,然后,你可以添加你選擇的流綁定器 — 例如spring-cloud-starter-stream-rabbit。
Turbine Stream服務(wù)器還支持cluster參數(shù),與Turbine服務(wù)器不同,Turbine Stream使用eureka serviceId作為集群名稱(chēng),這些不可配置。
如果Turbine Stream服務(wù)器在my.turbine.server上的8989端口上運(yùn)行,并且你的環(huán)境中有兩個(gè)eureka serviceId為customers和products,則你的Turbine Stream服務(wù)器上將提供以下URL,default和空集群名將提供Turbine Stream服務(wù)器接收的所有指標(biāo)。
http://my.turbine.sever:8989/turbine.stream?cluster=customers http://my.turbine.sever:8989/turbine.stream?cluster=products http://my.turbine.sever:8989/turbine.stream?cluster=default http://my.turbine.sever:8989/turbine.stream
因此,你可以將eureka serviceId用作Turbine儀表板(或任何兼容的儀表板)的集群名稱(chēng),你無(wú)需為T(mén)urbine Stream服務(wù)器配置任何屬性,如turbine.appConfig、turbine.clusterNameExpression和turbine.aggregator.clusterConfig。
Turbine Stream服務(wù)器使用Spring Cloud Stream從配置的輸入通道收集所有指標(biāo),這意味著它不會(huì)從每個(gè)實(shí)例主動(dòng)收集Hystrix指標(biāo),它只能提供每個(gè)實(shí)例已經(jīng)收集到輸入通道中的指標(biāo)。上一篇:斷路器:Hystrix客戶(hù)端 下一篇:客戶(hù)端負(fù)載均衡器:Ribbon
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/74275.html
摘要:客戶(hù)端負(fù)載均衡器是一個(gè)客戶(hù)端負(fù)載均衡器,可以讓你對(duì)和客戶(hù)端的行為進(jìn)行大量控制,已經(jīng)使用了,因此,如果你使用,此部分也適用。 客戶(hù)端負(fù)載均衡器:Ribbon Ribbon是一個(gè)客戶(hù)端負(fù)載均衡器,可以讓你對(duì)HTTP和TCP客戶(hù)端的行為進(jìn)行大量控制,F(xiàn)eign已經(jīng)使用了Ribbon,因此,如果你使用@FeignClient,此部分也適用。 Ribbon中的一個(gè)核心概念是命名客戶(hù)端,每個(gè)負(fù)載均...
摘要:內(nèi)部使用了的動(dòng)態(tài)代理為目標(biāo)接口生成了一個(gè)動(dòng)態(tài)代理類(lèi),這里會(huì)生成一個(gè)動(dòng)態(tài)代理原理統(tǒng)一的方法攔截器,同時(shí)為接口的每個(gè)方法生成一個(gè)攔截器,并解析方法上的元數(shù)據(jù),生成一個(gè)請(qǐng)求模板。的核心源碼解析到此結(jié)束了,不知道是否對(duì)您有無(wú)幫助,可留言跟我交流。 Feign是一個(gè)聲明式的Web服務(wù)客戶(hù)端。這使得Web服務(wù)客戶(hù)端的寫(xiě)入更加方便 要使用Feign創(chuàng)建一個(gè)界面并對(duì)其進(jìn)行注釋。它具有可插拔注釋支持,包...
摘要:以下示例顯示了具有斷路器的最小服務(wù)器由名為的庫(kù)提供,在連接到斷路器的代理中自動(dòng)包裝帶有該注解的,斷路器計(jì)算何時(shí)打開(kāi)和關(guān)閉電路以及在發(fā)生故障時(shí)應(yīng)采取的措施。上一篇服務(wù)發(fā)現(xiàn)下一篇超時(shí)和客戶(hù)端 斷路器:Hystrix客戶(hù)端 Netflix創(chuàng)建了一個(gè)名為Hystrix的庫(kù),用于實(shí)現(xiàn)斷路器模式,在微服務(wù)架構(gòu)中,通常有多層服務(wù)調(diào)用,如以下示例所示: 較低級(jí)別的服務(wù)中的服務(wù)故障可能導(dǎo)致級(jí)聯(lián)故障一直到...
摘要:注意注解能注冊(cè)到服務(wù)上,是因?yàn)樵撟⒔獍丝蛻?hù)端的注解,該是一個(gè)復(fù)合注解。地址可以查看該微服務(wù)網(wǎng)關(guān)代理了多少微服務(wù)的。 SpringCloud(第 020 篇)Zuul 網(wǎng)關(guān)模塊添加 listOfServers 屬性,達(dá)到客戶(hù)端負(fù)載均衡的能力 - 一、大致介紹 1、本章節(jié)添加另外一個(gè)屬性 listOfServers 來(lái)給 zuul 賦上異樣的功能色彩,提供負(fù)載均衡的能力; 2、而其實(shí)說(shuō)...
摘要:傳播安全上下文或使用,通過(guò)增加的屬性,來(lái)增加相關(guān)的配置來(lái)達(dá)到執(zhí)行隔離策略,控制線程數(shù)或者控制并發(fā)請(qǐng)求數(shù)來(lái)達(dá)到熔斷降級(jí)的作用。 SpringCloud(第 015 篇)電影Ribbon微服務(wù)集成Hystrix增加隔離策略控制線程數(shù)或請(qǐng)求數(shù)來(lái)達(dá)到熔斷降級(jí)的作用 - 一、大致介紹 1、本章節(jié)介紹關(guān)于Hystrix的2種隔離方式(Thread Pool 和 Semaphores); 2、Thr...
閱讀 2436·2019-08-30 15:52
閱讀 2237·2019-08-30 12:51
閱讀 2833·2019-08-29 18:41
閱讀 2812·2019-08-29 17:04
閱讀 814·2019-08-29 15:11
閱讀 1720·2019-08-28 18:02
閱讀 3603·2019-08-26 10:22
閱讀 2510·2019-08-26 10:12