




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Spring-Cloud 組件:eureka:eureka 是什么?eureka 是Netflix 的子模塊之一,也是一個的模塊,eureka 里有 2 個組件,一個是 EurekaServer(一個的項目) 這個是用于服務(wù)以實現(xiàn)中間層服務(wù)器的負(fù)載平衡和故障轉(zhuǎn)移,另一個便是 EurekaClient(我們的微服務(wù)) 它是用于與Server 交互的,可以使得交互變得非常簡單:只需要通過服務(wù)標(biāo)識符即可拿到服務(wù)。與 spring-cloud 的關(guān)系:Spring Cloud 封裝了 Netflix 公司開發(fā)的 Eureka 模塊來實現(xiàn)服務(wù)比 Zookeeper)。和發(fā)現(xiàn)(可以對Eureka 采用了
2、C-S 的設(shè)計架構(gòu)。Eureka Server 作為服務(wù)功能的服務(wù)器,它是服務(wù)中心。而系統(tǒng)中的其他微服務(wù),使用 Eureka 的客戶端連接到 Eureka Server 并維持心跳連接。這樣系統(tǒng)的維護(hù)就可以通過 Eureka Server 來系統(tǒng)中各個微服務(wù)是否正常運(yùn)行。SpringCloud 的一些其他模塊(比如 Zuul)就可以通過 Eureka Server來發(fā)現(xiàn)系統(tǒng)中的其他微服務(wù),并執(zhí)行相關(guān)的邏輯。關(guān)系圖:如何使用?在 spring-cloud 項目里面加入依賴:eureka 客戶端:<dependency><groupId>org.springframewor
3、k.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>eureka 服務(wù)端:<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency
4、>eureka 服務(wù)端項目里面加入以下配置:server: port: 3000eureka: server:enable-self-preservation: false #關(guān)閉自我保護(hù)機(jī)制eviction-interval-timer-in-ms: 4000 #設(shè)置0*1000)instance:hostname: localhost間隔(:毫秒 默認(rèn)是 6client:registerWithEureka: false #不把作為一個客戶端到身上false #不需要從服務(wù)端獲取了)信息(因為在這里就是服fetchRegistry:務(wù)端,而且已經(jīng)禁用serviceUrl: defau
5、ltZone:rekahttp:/$eureka.instance.hostname:$server.port/eu當(dāng)然,不是全部必要的,這里只是把我這里的配置 copy 過來了然后在 spring-boot 啟動項目上 加入注解:EnableEurekaServer 就可以啟動項目了/* 想要咨詢 vip 課程相關(guān)的同學(xué)加一下木蘭* 想要往期的同學(xué)加一下安其拉* author:魯班學(xué)院-商鞅*/ EnableEurekaServer SpringBootApplicationpublic class AppEureka public static void main(String args)
6、 SpringApplication.run(AppEureka.class);如果看見這個圖片,那么說明你就搭建好了:這個警告只是說你把他的自我保護(hù)機(jī)制關(guān)閉了eureka 客戶端配置:server: port: 6000eureka: client:serviceUrl:defaultZone:地址 參考服務(wù)端配置的這個路徑instance:#eureka 服務(wù)端提供的instance-id: power-1 #此實例到 eureka 服務(wù)端的唯一的實例 IDprefer-ip-address: true #是否顯示 IP 地址leaseRenewalIntervalInSeconds: 1
7、0 #eureka 客戶需要多長時間心跳給 eureka 服務(wù)器,表明它仍然活著,默認(rèn)為 30 秒 (與下面配置的都是秒)leaseExpirationDurationInSeconds: 30 #Eureka 服務(wù)器在接收到實例的最后一次發(fā)出的心跳后,需要等待多久才可以將此實例刪除,默認(rèn)為 90 秒spring:application:name: server-power #此實例到 eureka 服務(wù)端的 name然后在客戶端的 spring-boot 啟動項目上 加入注解:EnableEurekaClient 就可以啟動項目了 這里就不截圖了我們直接來看效果圖:這里我們能看見 名字叫 s
8、erver-power 的(圖中將其大寫了) id 為 power-1 的服到我們的 Eureka 上面來了 至此,一個簡單的 eureka 已經(jīng)搭建好了。務(wù)eureka 集群:eureka 集群原理服務(wù)啟動后向 Eureka,Eureka Server 會將信息向其他 Eureka Server 進(jìn) 中心獲取服務(wù)提供者地址,行同步,當(dāng)服務(wù)消費(fèi)者要調(diào)用服務(wù)提供者,則向服務(wù)然后會將服務(wù)提供者地址緩存在本成一次調(diào)用。次再調(diào)用時,則直接從本地緩存中取,完eureka 集群配置剛剛我們了解到 Eureka Server 會將我們得有哪些 server 呢?信息向其他 Eureka Server 進(jìn)行同
9、步 那么這里 假設(shè)我們有 3 個 Eureka Server 如圖:現(xiàn)在怎么集群環(huán)境的 server 呢? 我們看一張圖:可能有點抽象,我們來看看具體配置server:port: 3000 eureka:server:enable-self-preservation: false eviction-interval-timer-in-ms: 4000instance:hostname: client:registerWithEureka: false fetchRegistry: false serviceUrl:defaultZone: com:3002/eureka.的(條件不是特別支持我
10、使用三臺筆記本這里 方便理解集群 我們做了一個來測試。) 至于怎么的話 這里簡單提一下吧 修改你的 hosts 文件(win10 的目錄在 C:WindowsSystem32driversetc 其他系統(tǒng)的話自行一下hosts 文件:把)附上 我們回到主題, 我們發(fā)現(xiàn) 集群配置與單體不同的點在于 原來是把服務(wù)到身上,而現(xiàn)在是到其它服務(wù)身上了呢?,回到最上面我們說過,eureka 的 server 會把至于為什么不的信息與其他的 server 同步,所以這里我們不需要到身上,因為另外兩臺服務(wù)器會配置本臺服務(wù)器。(這里可能有點繞,可以參考一下剛
11、剛那張集群環(huán)境的圖,或者 動手配置一下,另外兩臺 eureka 的配置與這個是差不多的, 就不發(fā)出來了,只要注意是 到其他的服務(wù)上面就好了)當(dāng)三臺 eureka 配置好之后,全部啟動一下就可以看見效果了:當(dāng)然,我們這里僅僅是把服務(wù)端配置好了, 那客戶端怎么配置呢? 話不多說,上代碼:client:serviceUrl:defaultZone: m:3001/eureka,我們這里只截取了要改動的那一部分。 就是 原來是到那一個地址上面,現(xiàn)在三次,因為我們 eureka是要寫三個 eureka地址,但是不是代表他會server 的信息是同步的,這里只需要一次就可以了,但是為什么要寫三個地址呢。因
12、為這樣就可以做到高可用的配置:打個比方有 3 臺服務(wù)器。但是突然宕機(jī)了一臺, 但是其他 2 臺還健在,依然可以我們的服務(wù),換句話來講,只要有一臺服務(wù)還建在,那么就可以服務(wù),這里 需要理解一下。這里效果圖就不發(fā)了, 和之前單機(jī)的沒什么兩樣,只是你服務(wù)隨便到哪個eureka server 上其他的 eureka server 上都有該服務(wù)的信息。CAP 定理的含義:1998 年,加州大學(xué)的計算機(jī)科學(xué)家 Eric Brewer 提出,分布式系統(tǒng)有三個指標(biāo)。Consistency-一致性Availability-可用性 Partition tolerance -分區(qū)容錯性他們第一個字母分別是 C,A,
13、PEric Brewer 說,這三個指標(biāo)不可能同時做到。這個結(jié)論就叫做 CAP 定理。Partition tolerance中文叫做"分區(qū)容錯"。大多數(shù)分布式系統(tǒng)都分布在多個子網(wǎng)絡(luò)。每個子網(wǎng)絡(luò)就叫做一個區(qū)(partition)。 分區(qū)容錯的意思是,區(qū)間通信可能失敗。比如,一臺服務(wù)器放在本地,另一臺服務(wù) 器放在外地(可能是外省,甚至是外國),這就是兩個區(qū),它們之間可能無法通信。上圖中,S1 和 S2 是兩臺跨區(qū)的服務(wù)器。S1 向 S2系統(tǒng)設(shè)計的時候,必須考慮到這種情況。一條消息,S2 可能無法收到。一般來說,分區(qū)容錯無法避免,因此可以認(rèn)為 CAP 的 P 總是成立。CAP 定
14、理告訴我們,剩下的 C 和 A 無法同時做到。ConsistencyConsistency 中文叫做"一致性"。意思是,寫操作之后的讀操作,必須返回該值。舉例來說,某條是 v0,用戶向 S1 發(fā)起一個寫操作,將其改為 v1。接下來用戶讀操作就會得到 v1。這就叫一致性。問題是,用戶有可能會向 S2 發(fā)起操作,由于 G2 的值沒有發(fā)生變化,因此返回的是 v0,所以 S1 和 S2 的讀操作不一致,這就不滿足一致性了為了讓 S2 的返回值與 S1 一致,所以我們需要在往 S1 執(zhí)行寫操作的時候,讓 S1給 S2 也一條消息,要求 G2 也變成 v1這樣子用戶向 G2 發(fā)起讀操作
15、,就也能得到 v1AvailabilityAvailability 中文叫做"可用性",意思是只要收到用戶的請求,服務(wù)器就必須給出回應(yīng)。用戶可以選擇向 S1 或 S2 發(fā)起讀操作。不管是哪臺服務(wù)器,只要收到請求,就必須告訴用戶,到底是 v0 還是 v1,否則就不滿足可用性。Consistency 和 Availability 的一致性和可用性,為什么不可能同時成立? 現(xiàn)分區(qū)容錯)。很簡單,因為可能通信失敗(即出如果保證 S2 的一致性,那么 S1 必須在寫操作時,鎖定 S2 的讀操作和寫操作。只有數(shù)據(jù)同步后,才能重新開放讀寫。鎖定期間,S2 不能讀寫,沒有可用性不。如果保證
16、 S2 的可用性,那么勢必不能鎖定 S2,所以一致性不成立。綜上所述,S2 無法同時做到一致性和可用性。系統(tǒng)設(shè)計時只能選擇一個目標(biāo)。如果追求一致性,那么無法保證所有節(jié)點的可用性;如果追求所有節(jié)點的可用性,那就沒法做到一致性。eureka 對比 Zookeeper:Zookeeper 在設(shè)計的時候遵循的是 CP 原則,即一致性,Zookeeper 會出現(xiàn)這樣一種情況,當(dāng) master 節(jié)點因為網(wǎng)絡(luò)故障與其他節(jié)點失去時剩余節(jié)點會重新進(jìn)行l(wèi)eaderleader 的時間太長:30120s,且,問題在于,期間整個Zookeeper 集群是不可用的,這就導(dǎo)致在期間服務(wù)處于癱瘓狀態(tài),在云部署的環(huán)境下,因網(wǎng)絡(luò)環(huán)境使 Zookeeper 集群失去 master 節(jié)點是較大概率發(fā)生的事情,雖然服務(wù)能夠最終恢復(fù),但是漫長的時間導(dǎo)致長期的服務(wù)不可用是不能的。Eureka 在設(shè)計的時候遵循的是 AP 原則,即可用性。Eureka 各個節(jié)點(服務(wù))是平等的, 沒有主從之分,幾個節(jié)點 down 掉影響正常工作,剩余的節(jié)點(服與服務(wù),而 Eureka 的客戶端在向某個 Eureka務(wù)) 依然可以提供或發(fā)現(xiàn)連接
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省上虞市實驗中學(xué)2025屆英語八下期中聯(lián)考試題含答案
- 2025教師培訓(xùn)總結(jié)
- 手術(shù)室護(hù)理不良事件培訓(xùn)
- 3.15消費(fèi)者權(quán)益保護(hù)日專題活動策劃與執(zhí)行
- 幼兒平衡車培訓(xùn)方案
- 2025年餐飲管理專業(yè)能力考試試題及答案
- 2025年船舶工程師職業(yè)資格考試試卷及答案
- 2025年電商運(yùn)營實務(wù)能力測試卷及答案
- 2025云南省初中學(xué)業(yè)水平考試數(shù)學(xué)
- 出納半年工作總結(jié)和計劃
- 礦井調(diào)度員考試題及答案
- 美國《GENIUS法案》:合規(guī)穩(wěn)定幣的監(jiān)管框架
- 2025至2030中國控制按鈕開關(guān)行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報告
- 臨商銀行股份有限公司招聘筆試真題2024
- 2025廣東高考物理試題(大題部分)+評析
- DB31-T 1593-2025 基于自動駕駛功能的公交運(yùn)營技術(shù)要求
- 醫(yī)院純水系統(tǒng)管理制度
- 2025年中考英語考前沖刺押題模擬試卷 3套(含答案)
- 鄉(xiāng)村基層工作筆試題目及答案
- CJ/T 258-2014纖維增強(qiáng)無規(guī)共聚聚丙烯復(fù)合管
- 2025年小升初語文復(fù)習(xí):積累運(yùn)用 專項匯編(含答案)
評論
0/150
提交評論