Springcloud配置優(yōu)化方案-創(chuàng)新互聯(lián)

1.解決Eureka注冊服務(wù)慢的問題

創(chuàng)新互聯(lián)主打移動(dòng)網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、域名注冊、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實(shí)力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再?zèng)Q定采用什么樣的設(shè)計(jì)。最后,要實(shí)現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計(jì),我們還會(huì)規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。

(1)調(diào)整客戶端心跳時(shí)間

instance:

# 心跳時(shí)間,即服務(wù)續(xù)約間隔時(shí)間(缺省為30s)

lease-renewal-interval-in-seconds: 5

# 發(fā)呆時(shí)間,即服務(wù)續(xù)約到期時(shí)間(缺省為90s)

lease-expiration-duration-in-seconds: 10

eureka.instance.lease-expiration-duration-in-seconds

leaseExpirationDurationInSeconds,表示eureka server至上一次收到client的心跳之后,等待下一次心跳的超時(shí)時(shí)間,在這個(gè)時(shí)間內(nèi)若沒收到下一次心跳,則將移除該instance。

默認(rèn)為90秒

如果該值太大,則很可能將流量轉(zhuǎn)發(fā)過去的時(shí)候,該instance已經(jīng)不存活了。

如果該值設(shè)置太小了,則instance則很可能因?yàn)榕R時(shí)的網(wǎng)絡(luò)抖動(dòng)而被摘除掉。

該值至少應(yīng)該大于leaseRenewalIntervalInSeconds

eureka.instance.lease-renewal-interval-in-seconds

leaseRenewalIntervalInSeconds,表示eureka client發(fā)送心跳給server端的頻率。如果在leaseExpirationDurationInSeconds后,server端沒有收到client的心跳,則將摘除該instance。除此之外,如果該instance實(shí)現(xiàn)了HealthCheckCallback,并決定讓自己unavailable的話,則該instance也不會(huì)接收到流量。

默認(rèn)30秒

作為實(shí)例還涉及到與注冊中心的周期性心跳,默認(rèn)持續(xù)時(shí)間為30秒(通過serviceUrl)。在實(shí)例、服務(wù)器、客戶端都在本地緩存中具有相同的元數(shù)據(jù)之前,服務(wù)不可用于客戶端發(fā)現(xiàn)(所以可能需要3次心跳)。你可以使用eureka.instance.leaseRenewalIntervalInSeconds 配置,這將加快客戶端連接到其他服務(wù)的過程。在生產(chǎn)中,最好堅(jiān)持使用默認(rèn)值,因?yàn)樵诜?wù)器內(nèi)部有一些計(jì)算,他們對續(xù)約做出假設(shè)。

(2) Eureka的自我保護(hù)模式

如果在Eureka Server的首頁看到以下這段提示,則說明Eureka已經(jīng)進(jìn)入了保護(hù)模式。

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

配置

server:

#開啟Eureka的自我保護(hù)機(jī)制

enable-self-preservation: true

#清理無效節(jié)點(diǎn)的時(shí)間間隔

eviction-interval-timer-in-ms: 5000? ?

eureka.server.enable-self-preservation

是否開啟自我保護(hù)模式,默認(rèn)為true。

默認(rèn)情況下,如果Eureka Server在一定時(shí)間內(nèi)沒有接收到某個(gè)微服務(wù)實(shí)例的心跳,Eureka Server將會(huì)注銷該實(shí)例(默認(rèn)90秒)。但是當(dāng)網(wǎng)絡(luò)分區(qū)故障發(fā)生時(shí),微服務(wù)與Eureka Server之間無法正常通信,以上行為可能變得非常危險(xiǎn)了——因?yàn)槲⒎?wù)本身其實(shí)是健康的,此時(shí)本不應(yīng)該注銷這個(gè)微服務(wù)。

Eureka通過“自我保護(hù)模式”來解決這個(gè)問題——當(dāng)Eureka Server節(jié)點(diǎn)在短時(shí)間內(nèi)丟失過多客戶端時(shí)(可能發(fā)生了網(wǎng)絡(luò)分區(qū)故障),那么這個(gè)節(jié)點(diǎn)就會(huì)進(jìn)入自我保護(hù)模式。一旦進(jìn)入該模式,Eureka Server就會(huì)保護(hù)服務(wù)注冊表中的信息,不再刪除服務(wù)注冊表中的數(shù)據(jù)(也就是不會(huì)注銷任何微服務(wù))。當(dāng)網(wǎng)絡(luò)故障恢復(fù)后,該Eureka Server節(jié)點(diǎn)會(huì)自動(dòng)退出自我保護(hù)模式。

綜上,自我保護(hù)模式是一種應(yīng)對網(wǎng)絡(luò)異常的安全保護(hù)措施。它的架構(gòu)哲學(xué)是寧可同時(shí)保留所有微服務(wù)(健康的微服務(wù)和不健康的微服務(wù)都會(huì)保留),也不盲目注銷任何健康的微服務(wù)。使用自我保護(hù)模式,可以讓Eureka集群更加的健壯、穩(wěn)定。

eureka.server.eviction-interval-timer-in-ms

eureka server清理無效節(jié)點(diǎn)的時(shí)間間隔,默認(rèn)60000毫秒,即60秒

(3)如何解決Eureka Server不踢出已關(guān)停的節(jié)點(diǎn)的問題

在開發(fā)過程中,我們常常希望Eureka Server能夠迅速有效地踢出已關(guān)停的節(jié)點(diǎn),但是新手由于Eureka自我保護(hù)模式,以及心跳周期長的原因,常常會(huì)遇到Eureka Server不踢出已關(guān)停的節(jié)點(diǎn)的問題。解決方法如下:

(1) Eureka Server端:配置關(guān)閉自我保護(hù),并按需配置Eureka Server清理無效節(jié)點(diǎn)的時(shí)間間隔。

eureka.server.enable-self-preservation # 設(shè)為false,關(guān)閉自我保護(hù)

eureka.server.eviction-interval-timer-in-ms # 清理間隔(單位毫秒,默認(rèn)是60*1000)

(2) Eureka Client端:配置開啟健康檢查,并按需配置續(xù)約更新時(shí)間和到期時(shí)間。

eureka.client.healthcheck.enabled # 開啟健康檢查(需要spring-boot-starter-actuator依賴)

eureka.instance.lease-renewal-interval-in-seconds # 續(xù)約更新時(shí)間間隔(默認(rèn)30秒)

eureka.instance.lease-expiration-duration-in-seconds # 續(xù)約到期時(shí)間(默認(rèn)90秒)

(4)zuul間隔多久去拉取注冊服務(wù)的信息

eureka.client.registry-fetch-interval-seconds

表示eureka client間隔多久去拉取服務(wù)注冊信息,默認(rèn)為30秒,對于api-gateway,如果要迅速獲取服務(wù)注冊狀態(tài),可以縮小該值,比如5秒

(5)ribbon的饑餓加載

意為Spring Cloud為每個(gè)Ribbon客戶端維護(hù)了一個(gè)相對的子應(yīng)用環(huán)境的上下文,應(yīng)用的上下文在第一次請求到指定客戶端的時(shí)候懶加載。不過可以通過如下配置進(jìn)行修改

ribbon:?

eager-load:

enabled: true

clients:?

-? callback,service-cache,service-singlepoint

按照如上的配置之后,發(fā)現(xiàn)鑒權(quán)服務(wù)啟動(dòng)時(shí)就將user服務(wù)的Ribbon客戶端進(jìn)行了加載。

(6)zuul的饑餓加載

上面小節(jié)解決了auth-Service調(diào)用user-Service的Ribbon客戶端啟動(dòng)時(shí)饑餓加載。網(wǎng)關(guān)作為對外請求的入口,zuul內(nèi)部使用Ribbon調(diào)用其他服務(wù),Spring Cloud默認(rèn)在第一次調(diào)用時(shí)懶加載Ribbon客戶端。zuul同樣需要維護(hù)一個(gè)相對的子應(yīng)用環(huán)境的上下文,所以也需要啟動(dòng)時(shí)饑餓加載。

zuul:

ribbon:?

eager-load:

? enabled: true?

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站標(biāo)題:Springcloud配置優(yōu)化方案-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://muchs.cn/article6/djioog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、App設(shè)計(jì)網(wǎng)站改版、外貿(mào)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營