最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Cloud?Eureka(全面解析)?大白話

 更新時(shí)間:2022年03月04日 09:57:52   作者:李多肉同學(xué)  
這篇文章主要介紹了Spring?Cloud?Eureka(全面解析)?大白話,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Eureka大白話解析

筆記補(bǔ)錄:

1.Eureka 介紹

Spring Cloud Eureka 是 Spring Cloud Netflix 微服務(wù)套件的一部分,基于 Netflix Eureka 做了二次封裝,主要負(fù)責(zé)實(shí)現(xiàn)微服務(wù)架構(gòu)中的服務(wù)治理功能。

服務(wù)治理是微服務(wù)架構(gòu)中必不可少的一部分,阿里開源的 Dubbo 框架就是針對(duì)服務(wù)治理的。服務(wù)治理必須要有一個(gè)注冊(cè)中心,除了用 Eureka 作為注冊(cè)中心外,我們還可以使用 Consul、Etcd、Zookeeper 等來(lái)作為服務(wù)的注冊(cè)中心。

Eureka 由兩部分組成:服務(wù)端和客戶端,服務(wù)端就是注冊(cè)中心,用來(lái)接收其它的服務(wù)注冊(cè),客戶端是一個(gè)java客戶端,用來(lái)注冊(cè),并可以實(shí)現(xiàn)負(fù)載均衡等功能。 Eureka 的搭建和集群請(qǐng)點(diǎn)擊查看這篇文章

Eureka圖解如下:

從圖中可以看出Eureka有三個(gè)角色:

  • Eureka Server:注冊(cè)中心
  • Eureka Provider:服務(wù)提供者
  • Eureka Consumer:服務(wù)消費(fèi)者

注冊(cè)中心就是管理所有服務(wù)的信息和狀態(tài),12306 就好比一個(gè)注冊(cè)中心,顧客就好比調(diào)用的客戶端,當(dāng)他們需要坐火車時(shí),就會(huì)在 12306 網(wǎng)站上查詢余票,有票就可以購(gòu)買,然后獲取火車的車次、時(shí)間等,最后出發(fā)。程序也是一樣,當(dāng)你需要調(diào)用某一個(gè)服務(wù)的時(shí)候,你會(huì)先去 Eureka 中去拉取服務(wù)列表,查看你調(diào)用的服務(wù)在不在其中,在的話就拿到服務(wù)地址、端口等信息,然后調(diào)用。

注冊(cè)中心帶來(lái)的好處就是,不需要知道有多少提供方,你只需要關(guān)注注冊(cè)中心即可,就像顧客不必關(guān)心有多少火車在開行,只需要去 12306 網(wǎng)站上看有沒有票就可以了。

為什么 Eureka 比 Zookeeper 更適合作為注冊(cè)中心呢?主要是因?yàn)?Eureka 是基于 AP 原則構(gòu)建的,而 ZooKeeper 是基于 CP 原則構(gòu)建的。在分布式系統(tǒng)領(lǐng)域有個(gè)著名的 CAP 定理,即 C 為數(shù)據(jù)一致性;A 為服務(wù)可用性;P 為服務(wù)對(duì)網(wǎng)絡(luò)分區(qū)故障的容錯(cuò)性。這三個(gè)特性在任何分布式系統(tǒng)中都不能同時(shí)滿足,最多同時(shí)滿足兩個(gè)。Zookeeper 有一個(gè) Leader,而且在這個(gè) Leader 無(wú)法使用的時(shí)候通過(guò) Paxos(ZAB)算法選舉出一個(gè)新的 Leader。這個(gè) Leader 的任務(wù)就是保證寫數(shù)據(jù)的時(shí)候只向這個(gè) Leader 寫入,Leader 會(huì)同步信息到其他節(jié)點(diǎn)。通過(guò)這個(gè)操作就可以保證數(shù)據(jù)的一致性。 

想要保證 AP 就要用 Eureka,想要保證 CP 就要用 Zookeeper。 

Dubbo 中大部分都是基于 Zookeeper 作為注冊(cè)中心的。Spring Cloud 中當(dāng)然首選 Eureka。

2. Eureka 的工作細(xì)節(jié)

2.1 Eureka Server

 Eureka Server主要對(duì)外提供了三個(gè)功能:

  • 服務(wù)注冊(cè),所有的服務(wù)都注冊(cè)到Eureka Server上面來(lái)
  • 提供注冊(cè)表,注冊(cè)表就是所有注冊(cè)上來(lái)服務(wù)的一個(gè)列表,Eureka Client在調(diào)用服務(wù)時(shí),需要獲取這個(gè)注冊(cè)表,一般來(lái)說(shuō),這個(gè)注冊(cè)表會(huì)緩存下來(lái),如果緩存失效,則直接獲取最新的注冊(cè)表
  • 同步狀態(tài),Eureka Client 通過(guò)注冊(cè)、心跳等機(jī)制,和Eureka Server同步當(dāng)前客戶端的狀態(tài)

2.2 Eureka Client

Eureka Client 主要是來(lái)簡(jiǎn)化每一個(gè)服務(wù)和Eureka Server 之間的交互。Eureka Client 會(huì)自動(dòng)拉取、更新以及緩存Eureka Server 中的信息,這樣,即便Eureka Server 所有節(jié)點(diǎn)都宕機(jī),Eureka Client 依然能夠獲取到想要調(diào)服務(wù)的地址(但是地址可能不準(zhǔn)確)。

2.2.1 服務(wù)注冊(cè)

 服務(wù)提供者將自己注冊(cè)到服務(wù)注冊(cè)中心(Eureka Server),需要注意,所渭的服務(wù)提供者,只是一個(gè)業(yè)務(wù)上的劃分,本質(zhì)上他就是一個(gè) Eureka Client 。當(dāng) Eureka Client 向 Eureka Server 注冊(cè)時(shí),他需要提供自身的一些元數(shù)據(jù)信息,例如IP地址、端囗、名稱、運(yùn)行狀態(tài)等等。

2.2.2 服務(wù)續(xù)約

Eureka Client 注冊(cè)到 Eureka Server 上之后,事情還沒有結(jié)束,剛剛開始而已。注冊(cè)成功后,默認(rèn)情況下,Eureka Client 每隔30秒就要向 Eureka Server 發(fā)送一條心跳消息,來(lái)告訴Eureka Server 我還在運(yùn)行。如果 Eureka Server 連續(xù)90秒有沿有收到Eureka Client 的續(xù)約消息(連續(xù)三次沒發(fā)送),它會(huì)認(rèn)為Eureka Client已經(jīng)線了,會(huì)將掉線的Eureka Client從當(dāng)前的服務(wù)注冊(cè)列表中剔除。

服務(wù)續(xù)約,有兩個(gè)相關(guān)的屬性(一般不建議修改):

# 表示服務(wù)的續(xù)約時(shí)間,默認(rèn)是30秒
eureka.instance.lease-renewal-intetval-in-seconds=30 
# 服務(wù)失效時(shí)間,默認(rèn)是90秒
eureka.instance.lease-expiration-duration-in-seconds=90

2.2.3 服務(wù)下線

當(dāng) Eureka Client 下線時(shí),它會(huì)主動(dòng)發(fā)送一條消息,告訴Eureka Server,我下線了。

2.2.4 獲取注冊(cè)表信息

Eureka Client 從Eureka Server 上獲取服務(wù)的注冊(cè)信息,將其緩存在本地。本地客戶端在需要調(diào)用遠(yuǎn)程服務(wù)時(shí),會(huì)從該信息中查找遠(yuǎn)程服務(wù)所對(duì)應(yīng)的IP地址、端囗等信息。Eureka Client 上緩存的服務(wù)注冊(cè)信息會(huì)定期更新(30秒),如果 Eureka Server 返回的注冊(cè)表信息與本地緩存的注冊(cè)表信息不同的話,Eureka Client 會(huì)自動(dòng)處理。

這里,也涉及至兩個(gè)屬性,一個(gè)是是否允許獲取注冊(cè)表信息:

eureka.client.fetch-registry=true

Eureka Client 上緩存的服務(wù)注冊(cè)信息,定期更新的時(shí)間間隔,默認(rèn)30秒:

eureka.client.registry-fetch-interval-seconds=30

Eureka分區(qū)策略

第一步:背景和概念介紹

背景:用戶量比較大或者用戶地理位置分布范圍很廣的項(xiàng)目,一般都會(huì)有多個(gè)機(jī)房。這個(gè)時(shí)候如果上線springCloud服務(wù)的話,我們希望一個(gè)機(jī)房?jī)?nèi)的服務(wù)優(yōu)先調(diào)用同一個(gè)機(jī)房?jī)?nèi)的服務(wù),當(dāng)同一個(gè)機(jī)房的服務(wù)不可用的時(shí)候,再去調(diào)用其它機(jī)房的服務(wù),以達(dá)到減少延時(shí)的作用。

概念:region:能夠簡(jiǎn)單理解為地理上的分區(qū)。好比亞洲地區(qū),或者華北地區(qū),再或者北京地區(qū)等等,沒有具體大小的限制,根據(jù)項(xiàng)目具體的狀況,能夠自行劃分region。 zone:能夠簡(jiǎn)單理解為 region 內(nèi)的具體機(jī)房,好比說(shuō) region 劃分為華北地區(qū),而后華北地區(qū)有兩個(gè)機(jī)房,就能夠在此 region 之下劃分出 zone1、zone2 兩個(gè) zone eureka 也借用了 region 和 zone 的概念架構(gòu) 

如圖所示,有一個(gè) region:華北地區(qū),下面有兩個(gè)機(jī)房,機(jī)房A 和機(jī)房Burl

  • 每一個(gè)機(jī)房?jī)?nèi)有一個(gè) Eureka Server 集群 和兩個(gè)服務(wù)提供者 ServiceA 和 ServerB
  • 如今假設(shè) serverA 須要調(diào)用 ServerB 服務(wù),按照就近原則,serverA 會(huì)優(yōu)先調(diào)用同一個(gè) zone 內(nèi)的 ServiceB,當(dāng) ServiceB 不可用時(shí),才會(huì)去調(diào)用另外一個(gè) zone 內(nèi)的 ServiceBcode

第二步:相關(guān)參數(shù)介紹

服務(wù)注冊(cè)相關(guān):

 eureka: client: # 盡可能向同一區(qū)域的 eureka 注冊(cè),默認(rèn)為true prefer-same-zone-eureka: true #地區(qū) region: huabei availability-zones: huabei: zone-1,zone-2 service-url: zone-1: http://Eureka的Ip地址:8761/eureka/ zone-2: http://Eureka的Ip地址:8761/eureka/

當(dāng)存在多個(gè)注冊(cè)中心時(shí),選擇邏輯為cdn

  • 若是 prefer-same-zone-eureka 為 false,按照 service-url 下的 list 取第一個(gè)注冊(cè)中心來(lái)注冊(cè),并和其維持心跳檢測(cè),再也不向list內(nèi)的其它的注冊(cè)中心注冊(cè)和維持心跳。server只有在第一個(gè)注冊(cè)失敗的狀況下,才會(huì)依次向其它的注冊(cè)中心注冊(cè),總共重試3次,若是3個(gè)service-url都沒有注冊(cè)成功,則注冊(cè)失敗。blog

注冊(cè)失敗后每隔一個(gè)心跳時(shí)間,會(huì)再次嘗試。it

  • 若是 prefer-same-zone-eureka 為true,先經(jīng)過(guò) region 取 availability-zones 內(nèi)的第一個(gè)zone,而后經(jīng)過(guò)這個(gè)zone取 service-url 下的list,并向list內(nèi)的第一個(gè)注冊(cè)中心進(jìn)行注冊(cè)和維持心跳,再也不向list內(nèi)的其它的注冊(cè)中心注冊(cè)和維持心跳。只有在第一個(gè)注冊(cè)失敗的狀況下,才會(huì)依次向其它的注冊(cè)中心注冊(cè),總共重試3次,若是3個(gè)service-url都沒有注冊(cè)成功,則注冊(cè)失敗。注冊(cè)失敗后每隔一個(gè)心跳時(shí)間,會(huì)再次嘗試。

為了保證服務(wù)注冊(cè)到同一個(gè) zone 的注冊(cè)中心,必定要注意 availability-zones 的順序,必須把同一 zone 寫在最前面

eureka: instance: # 服務(wù)和注冊(cè)中心的心跳間隔時(shí)間,默認(rèn)為30s lease-renewal-interval-in-seconds: 30 # 服務(wù)和注冊(cè)中心的心跳超時(shí)時(shí)間,默認(rèn)為90s lease-expiration-duration-in-seconds: 90 metadata-map: # 當(dāng)前服務(wù)所屬的 zone zone: zone1

  • 服務(wù)消費(fèi)者和服務(wù)提供者分別屬于哪一個(gè)zone,均是經(jīng)過(guò) eureka.instance.metadata-map.zone 來(lái)斷定的。
  • 服務(wù)消費(fèi)者會(huì)先經(jīng)過(guò) ribbon 去注冊(cè)中心拉取一份服務(wù)提供者的列表,而后經(jīng)過(guò) eureka.instance.metadata-map.zone 指定的 zone 進(jìn)行過(guò)濾,過(guò)濾以后若是同一個(gè) zone 內(nèi)的服務(wù)提供者有多個(gè)實(shí)例,則會(huì)輪流調(diào)用。
  • 只有在同一個(gè) zone 內(nèi)的全部服務(wù)提供者都不可用時(shí),才會(huì)調(diào)用其它zone內(nèi)的服務(wù)提供者。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java簡(jiǎn)易登錄注冊(cè)小程序

    Java簡(jiǎn)易登錄注冊(cè)小程序

    這篇文章主要為大家詳細(xì)介紹了Java圖形界面開發(fā),簡(jiǎn)易登錄注冊(cè)小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • IDEA創(chuàng)建springboot + mybatis項(xiàng)目全過(guò)程(步驟詳解)

    IDEA創(chuàng)建springboot + mybatis項(xiàng)目全過(guò)程(步驟詳解)

    這篇文章主要介紹了IDEA創(chuàng)建springboot + mybatis項(xiàng)目全過(guò)程及步驟詳解,本文通圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • java實(shí)現(xiàn)table添加右鍵點(diǎn)擊事件監(jiān)聽操作示例

    java實(shí)現(xiàn)table添加右鍵點(diǎn)擊事件監(jiān)聽操作示例

    這篇文章主要介紹了java實(shí)現(xiàn)table添加右鍵點(diǎn)擊事件監(jiān)聽操作,結(jié)合實(shí)例形式分析了Java添加及使用事件監(jiān)聽相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • EVCache緩存在Spring Boot中的實(shí)戰(zhàn)示例

    EVCache緩存在Spring Boot中的實(shí)戰(zhàn)示例

    這篇文章主要介紹了EVCache緩存在Spring Boot中的實(shí)戰(zhàn)示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 解決Idea的選擇文件后定位瞄準(zhǔn)器"Select Opened File"的功能不見了

    解決Idea的選擇文件后定位瞄準(zhǔn)器"Select Opened File"的功能

    使用IntelliJ IDEA時(shí),可能會(huì)發(fā)現(xiàn)"SelectOpenedFile"功能不見了,這個(gè)功能允許用戶快速定位到當(dāng)前打開文件的位置,若要找回此功能,只需在IDEA的標(biāo)題欄上右鍵,然后選擇"Always Select Opened File",這樣就可以重新啟用這個(gè)便捷的功能
    2024-11-11
  • Intellij idea下使用不同tomcat編譯maven項(xiàng)目的服務(wù)器路徑方法詳解

    Intellij idea下使用不同tomcat編譯maven項(xiàng)目的服務(wù)器路徑方法詳解

    今天小編就為大家分享一篇關(guān)于Intellij idea下使用不同tomcat編譯maven項(xiàng)目的服務(wù)器路徑方法詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • spring boot前后端傳參的實(shí)現(xiàn)

    spring boot前后端傳參的實(shí)現(xiàn)

    這篇文章主要介紹了spring boot前后端傳參的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Tomcat處理請(qǐng)求的線程模型詳解

    Tomcat處理請(qǐng)求的線程模型詳解

    這篇文章主要為大家詳細(xì)介紹了Tomcat處理請(qǐng)求的線程模型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • struts2自定義MVC框架

    struts2自定義MVC框架

    這篇文章主要為大家詳細(xì)介紹了struts2如何自定義MVC框架,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Java I/O技術(shù)之文件操作詳解

    Java I/O技術(shù)之文件操作詳解

    這篇文章主要介紹了Java I/O技術(shù)之文件操作詳解,需要的朋友可以參考下
    2014-07-07

最新評(píng)論

金昌市| 鹤岗市| 沾益县| 河曲县| 霍州市| 泾源县| 错那县| 忻州市| 诸城市| 南木林县| 怀宁县| 淳安县| 长岛县| 高碑店市| 陕西省| 清水河县| 凯里市| 罗山县| 宁晋县| 新乡县| 石楼县| 新沂市| 屯昌县| 苗栗市| 林州市| 靖安县| 皮山县| 福鼎市| 永嘉县| 枣庄市| 池州市| 新巴尔虎左旗| 扎囊县| 益阳市| 甘德县| 金塔县| 巴中市| 美姑县| 牡丹江市| 彰化市| 长汀县|