黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Spring Cloud微服務(wù)實踐

Spring Cloud Eureka服務(wù)注冊中心

Eureka注冊中心高可用集群概述

在微服務(wù)架構(gòu)的這種分布式系統(tǒng)中,我們要充分考慮各個微服務(wù)組件的高可用性問題,不能有單點故障,由于注冊中心eureka本身也是一個服務(wù),如果它只有一個節(jié)點,那么它有可能發(fā)生故障,這樣我們就不能注冊與查詢服務(wù)了,所以我們需要一個高可用的服務(wù)注冊中心,這就需要通過注冊中心集群來解決。

eureka服務(wù)注冊中心它本身也是一個服務(wù),它也可以看做是一個提供者,又可以看做是一個消費者,我們之前通過配置:

eureka.client.register-with-eureka=false 讓注冊中心不注冊自己,但是我們可以向其他注冊中心注冊自己;

Eureka Server的高可用實際上就是將自己作為服務(wù)向其他服務(wù)注冊中心注冊自己,這樣就會形成一組互相注冊的服務(wù)注冊中心,進而實現(xiàn)服務(wù)清單的互相同步,往注冊中心A上注冊的服務(wù),可以被復(fù)制同步到注冊中心B上,所以從任何一臺注冊中心上都能查詢到已經(jīng)注冊的服務(wù),從而達到高可用的效果。

Eureka注冊中心高可用集群搭建

我們知道,Eureka注冊中心高可用集群就是各個注冊中心相互注冊,所以:

1、在8761的配置文件中,讓它的service-url指向8762,在8762的配置文件中讓它的service-url指向8761

2、由于8761和8762互相指向?qū)Ψ?,實際上我們構(gòu)建了一個雙節(jié)點的服務(wù)注冊中心集群

eureka.client.service-url.defaultZone=http://eureka8762:8762/eureka/
eureka.client.service-url.defaultZone=http://eureka8761:8761/eureka/

然后在本地hosts文件配置:C:\Windows\System32\drivers\etc\hosts

127.0.0.1 eureka8761
127.0.0.1 eureka8762

運行時,在運行配置項目Program Arguments 中配置:

--spring.profiles.active=eureka8761 
--spring.profiles.active=eureka8762 

分別啟動兩個注冊中心,訪問兩個注冊中心頁面,觀察注冊中心頁面是否正常;

Eureka注冊中心高可用集群測試

在要進行注冊的服務(wù)中配置:

eureka.client.service-url.defaultZone=http://eureka8761:8761/eureka/,http://eureka8762:8762/eureka/

啟動服務(wù)提供者服務(wù),然后觀察注冊中心頁面,可以看到服務(wù)會在兩個注冊中心上都注冊成功;

Eureka服務(wù)注冊中心自我保護機制

自我保護機制是Eureka注冊中心的重要特性,當(dāng)Eureka注冊中心進入自我保護模式時,在Eureka Server首頁會輸出如下警告信息:

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.

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.

在沒有Eureka自我保護的情況下,如果Eureka Server在一定時間內(nèi)沒有接收到某個微服務(wù)實例的心跳,Eureka Server將會注銷該實例,但是當(dāng)發(fā)生網(wǎng)絡(luò)分區(qū)故障時,那么微服務(wù)與Eureka Server之間將無法正常通信,以上行為可能變得非常危險了——因為微服務(wù)本身其實是正常的,此時不應(yīng)該注銷這個微服務(wù),如果沒有自我保護機制,那么Eureka Server就會將此服務(wù)注銷掉。

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

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

當(dāng)然也可以使用配置項:eureka.server.enable-self-preservation = false 禁用自我保護模式。

但是Eureka Server 自我保護模式也會給我們帶來一些困擾,如果在保護期內(nèi)某個服務(wù)提供者剛好非正常下線了,此時服務(wù)消費者就會拿到一個無效的服務(wù)實例,此時會調(diào)用失敗,對于這個問題需要服務(wù)消費者端具有一些容錯機制,如重試,斷路器等。

Eureka的自我保護模式是有意義的,該模式被激活后,它不會從注冊列表中剔除因長時間沒收到心跳導(dǎo)致注冊過期的服務(wù),而是等待修復(fù),直到心跳恢復(fù)正常之后,它自動退出自我保護模式。這種模式旨在避免因網(wǎng)絡(luò)分區(qū)故障導(dǎo)致服務(wù)不可用的問題。

例如,兩個微服務(wù)客戶端實例A和B之間有調(diào)用的關(guān)系,A是消費者,B是提供者,但是由于網(wǎng)絡(luò)故障,B未能及時向Eureka發(fā)送心跳續(xù)約,這時候Eureka 不能簡單的將B從注冊表中剔除,因為如果剔除了,A就無法從Eureka 服務(wù)器中獲取B注冊的服務(wù),但是這時候B服務(wù)是可用的;

所以,Eureka的自我保護模式最好還是開啟它。

關(guān)于自我保護常用幾個配置如下:

服務(wù)器端配置:

#測試時關(guān)閉自我保護機制,保證不可用服務(wù)及時踢出

eureka.server.enable-self-preservation=false

客戶配置:

#每間隔2s,向服務(wù)端發(fā)送一次心跳,證明自己依然"存活"

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

#告訴服務(wù)端,如果我10s之內(nèi)沒有給你發(fā)心跳,就代表我故障了,將我踢出掉

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

全部教程
主站蜘蛛池模板: 亚洲一区二区三区高清不卡 | 在线精品国精品国产不卡 | 制服丝袜国产在线 | 精品欧美一区二区三区在线观看 | 一二三四视频社区在线网 | 国产精品国产 | 一本大道香蕉中文在线高清 | 成人亚洲性情网站www在线观看 | 日日摸日日碰夜夜爽视频网站 | 欧美三级欧美成人高清www | 日韩国产一区二区 | 亚洲另类图| 奇米影视一区二区三区 | 国产夜夜爽 | 00超粉嫩福利网站导航 | 99ri在线视频网 | 中文字幕手机在线视频 | 拔擦拔擦8x华人免费久久 | 最近中文字幕大全免费版在线 | 久久99精品视频 | 欧美成人午夜视频在线观看 | 黄色片视频国产 | 成年免费在线观看 | 波多野结衣一二三区 | 天天玩天天干 | 国产成人无精品久久久 | 大片免费播放器 | 夜色私人影院永久地址入口 | 97人洗澡人人澡人人爽人人 | 午夜私人福利影院 | 好吊色青青青国产在线播放 | 亚洲韩国日本欧美一区二区三区 | 高清在线亚洲精品国产二区 | 日韩欧美视频在线一区二区 | 国产午夜视频在永久在线观看 | 久久精品五月天 | 天天操bb | 日日碰日日摸日日澡视频播放 | 天天色天天综合网 | 成人做视频免费 | 日本午夜影院 |