1.解決Eureka注冊(cè)服務(wù)慢的問(wèn)題
創(chuàng)新互聯(lián)主打移動(dòng)網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、域名注冊(cè)、等互聯(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)若沒(méi)收到下一次心跳,則將移除該instance。
默認(rèn)為90秒
如果該值太大,則很可能將流量轉(zhuǎn)發(fā)過(guò)去的時(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端沒(méi)有收到client的心跳,則將摘除該instance。除此之外,如果該instance實(shí)現(xiàn)了HealthCheckCallback,并決定讓自己unavailable的話,則該instance也不會(huì)接收到流量。
默認(rèn)30秒
作為實(shí)例還涉及到與注冊(cè)中心的周期性心跳,默認(rèn)持續(xù)時(shí)間為30秒(通過(guò)serviceUrl)。在實(shí)例、服務(wù)器、客戶端都在本地緩存中具有相同的元數(shù)據(jù)之前,服務(wù)不可用于客戶端發(fā)現(xiàn)(所以可能需要3次心跳)。你可以使用eureka.instance.leaseRenewalIntervalInSeconds 配置,這將加快客戶端連接到其他服務(wù)的過(guò)程。在生產(chǎn)中,最好堅(jiān)持使用默認(rèn)值,因?yàn)樵诜?wù)器內(nèi)部有一些計(jì)算,他們對(duì)續(xù)約做出假設(shè)。
(2) Eureka的自我保護(hù)模式
如果在Eureka Server的首頁(yè)看到以下這段提示,則說(shuō)明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:
#開(kāi)啟Eureka的自我保護(hù)機(jī)制
enable-self-preservation: true
#清理無(wú)效節(jié)點(diǎn)的時(shí)間間隔
eviction-interval-timer-in-ms: 5000? ?
eureka.server.enable-self-preservation
是否開(kāi)啟自我保護(hù)模式,默認(rèn)為true。
默認(rèn)情況下,如果Eureka Server在一定時(shí)間內(nèi)沒(méi)有接收到某個(gè)微服務(wù)實(shí)例的心跳,Eureka Server將會(huì)注銷該實(shí)例(默認(rèn)90秒)。但是當(dāng)網(wǎng)絡(luò)分區(qū)故障發(fā)生時(shí),微服務(wù)與Eureka Server之間無(wú)法正常通信,以上行為可能變得非常危險(xiǎn)了——因?yàn)槲⒎?wù)本身其實(shí)是健康的,此時(shí)本不應(yīng)該注銷這個(gè)微服務(wù)。
Eureka通過(guò)“自我保護(hù)模式”來(lái)解決這個(gè)問(wèn)題——當(dāng)Eureka Server節(jié)點(diǎn)在短時(shí)間內(nèi)丟失過(guò)多客戶端時(shí)(可能發(fā)生了網(wǎng)絡(luò)分區(qū)故障),那么這個(gè)節(jié)點(diǎn)就會(huì)進(jìn)入自我保護(hù)模式。一旦進(jìn)入該模式,Eureka Server就會(huì)保護(hù)服務(wù)注冊(cè)表中的信息,不再刪除服務(wù)注冊(cè)表中的數(shù)據(jù)(也就是不會(huì)注銷任何微服務(wù))。當(dāng)網(wǎng)絡(luò)故障恢復(fù)后,該Eureka Server節(jié)點(diǎn)會(huì)自動(dòng)退出自我保護(hù)模式。
綜上,自我保護(hù)模式是一種應(yīng)對(duì)網(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清理無(wú)效節(jié)點(diǎn)的時(shí)間間隔,默認(rèn)60000毫秒,即60秒
(3)如何解決Eureka Server不踢出已關(guān)停的節(jié)點(diǎn)的問(wèn)題
在開(kāi)發(fā)過(guò)程中,我們常常希望Eureka Server能夠迅速有效地踢出已關(guān)停的節(jié)點(diǎn),但是新手由于Eureka自我保護(hù)模式,以及心跳周期長(zhǎng)的原因,常常會(huì)遇到Eureka Server不踢出已關(guān)停的節(jié)點(diǎn)的問(wèn)題。解決方法如下:
(1) Eureka Server端:配置關(guān)閉自我保護(hù),并按需配置Eureka Server清理無(wú)效節(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端:配置開(kāi)啟健康檢查,并按需配置續(xù)約更新時(shí)間和到期時(shí)間。
eureka.client.healthcheck.enabled # 開(kāi)啟健康檢查(需要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間隔多久去拉取注冊(cè)服務(wù)的信息
eureka.client.registry-fetch-interval-seconds
表示eureka client間隔多久去拉取服務(wù)注冊(cè)信息,默認(rèn)為30秒,對(duì)于api-gateway,如果要迅速獲取服務(wù)注冊(cè)狀態(tài),可以縮小該值,比如5秒
(5)ribbon的饑餓加載
意為Spring Cloud為每個(gè)Ribbon客戶端維護(hù)了一個(gè)相對(duì)的子應(yīng)用環(huán)境的上下文,應(yīng)用的上下文在第一次請(qǐng)求到指定客戶端的時(shí)候懶加載。不過(guò)可以通過(guò)如下配置進(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)作為對(duì)外請(qǐng)求的入口,zuul內(nèi)部使用Ribbon調(diào)用其他服務(wù),Spring Cloud默認(rèn)在第一次調(diào)用時(shí)懶加載Ribbon客戶端。zuul同樣需要維護(hù)一個(gè)相對(duì)的子應(yīng)用環(huán)境的上下文,所以也需要啟動(dòng)時(shí)饑餓加載。
zuul:
ribbon:?
eager-load:
? enabled: true?
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站標(biāo)題:Springcloud配置優(yōu)化方案-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://m.rwnh.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)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容