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

Java之Zookeeper注冊(cè)中心原理剖析

 更新時(shí)間:2021年07月31日 09:17:06   作者:java構(gòu)架師  
這篇文章主要介紹了Java之Zookeeper注冊(cè)中心原理剖析,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

RPC框架中有3個(gè)重要的角色:

Zookeeper用作注冊(cè)中心的原理

注冊(cè)中心 :保存所有服務(wù)的名字,服務(wù)提供者的IP列表,服務(wù)消費(fèi)者的IP列表

服務(wù)提供者: 提供跨進(jìn)程服務(wù)

服務(wù)消費(fèi)者: 尋找到指定命名的服務(wù)并消費(fèi)。

Zookeeper用作注冊(cè)中心
簡(jiǎn)單來(lái)講,zookeeper可以充當(dāng)一個(gè)服務(wù)注冊(cè)表(Service Registry),讓多個(gè)服務(wù)提供者形成一個(gè)集群,讓服務(wù)消費(fèi)者通過(guò)服務(wù)注冊(cè)表獲取具體的服務(wù)訪(fǎng)問(wèn)地址(IP+端口)去訪(fǎng)問(wèn)具體的服務(wù)提供者。如下圖所示:

在這里插入圖片描述

具體來(lái)說(shuō),zookeeper就是個(gè)分布式文件系統(tǒng),每當(dāng)一個(gè)服務(wù)提供者部署后都要將自己的服務(wù)注冊(cè)到zookeeper的某一路徑上: /{service}/{version}/{ip:port},比如我們的HelloWorldService部署到兩臺(tái)機(jī)器,那么zookeeper上就會(huì)創(chuàng)建兩條目錄:分別為/HelloWorldService/1.0.0/100.100.0.237:16888

/HelloWorldService/1.0.0/100.100.0.238:16888。

如圖:

在這里插入圖片描述

在zookeeper中,進(jìn)行服務(wù)注冊(cè),實(shí)際上就是在zookeeper中創(chuàng)建了一個(gè)znode節(jié)點(diǎn),該節(jié)點(diǎn)存儲(chǔ)了該服務(wù)的IP、端口、調(diào)用方式(協(xié)議、序列化方式)等。該節(jié)點(diǎn)承擔(dān)著最重要的職責(zé),它由服務(wù)提供者(發(fā)布服務(wù)時(shí))創(chuàng)建,以供服務(wù)消費(fèi)者獲取節(jié)點(diǎn)中的信息,從而定位到服務(wù)提供者真正網(wǎng)絡(luò)拓?fù)湮恢靡约暗弥绾握{(diào)用。RPC服務(wù)注冊(cè)、發(fā)現(xiàn)過(guò)程簡(jiǎn)述如下:

1.服務(wù)提供者啟動(dòng)時(shí),會(huì)將其服務(wù)名稱(chēng),ip地址注冊(cè)到配置中心。

2.服務(wù)消費(fèi)者在第一次調(diào)用服務(wù)時(shí),會(huì)通過(guò)注冊(cè)中心找到相應(yīng)的服務(wù)的IP地址列表,并緩存到本地,以供后續(xù)使用。當(dāng)消費(fèi)者調(diào)用服務(wù)時(shí),不會(huì)再去請(qǐng)求注冊(cè)中心,而是直接通過(guò)負(fù)載均衡算法從IP列表中取一個(gè)服務(wù)提供者的服務(wù)器調(diào)用服務(wù)。

3.當(dāng)服務(wù)提供者的某臺(tái)服務(wù)器宕機(jī)或下線(xiàn)時(shí),相應(yīng)的ip會(huì)從服務(wù)提供者IP列表中移除。同時(shí),注冊(cè)中心會(huì)將新的服務(wù)IP地址列表發(fā)送給服務(wù)消費(fèi)者機(jī)器,緩存在消費(fèi)者本機(jī)。

4.當(dāng)某個(gè)服務(wù)的所有服務(wù)器都下線(xiàn)了,那么這個(gè)服務(wù)也就下線(xiàn)了。

5.同樣,當(dāng)服務(wù)提供者的某臺(tái)服務(wù)器上線(xiàn)時(shí),注冊(cè)中心會(huì)將新的服務(wù)IP地址列表發(fā)送給服務(wù)消費(fèi)者機(jī)器,緩存在消費(fèi)者本機(jī)。

6.服務(wù)提供方可以根據(jù)服務(wù)消費(fèi)者的數(shù)量來(lái)作為服務(wù)下線(xiàn)的依據(jù)。

感知服務(wù)的下線(xiàn)&上線(xiàn)

zookeeper提供了“心跳檢測(cè)”功能,它會(huì)定時(shí)向各個(gè)服務(wù)提供者發(fā)送一個(gè)請(qǐng)求(實(shí)際上建立的是一個(gè) socket 長(zhǎng)連接),如果長(zhǎng)期沒(méi)有響應(yīng),服務(wù)中心就認(rèn)為該服務(wù)提供者已經(jīng)“掛了”,并將其剔除。比如100.100.0.237這臺(tái)機(jī)器如果宕機(jī)了,那么zookeeper上的路徑就會(huì)只剩/HelloWorldService/1.0.0/100.100.0.238:16888。

服務(wù)消費(fèi)者會(huì)去監(jiān)聽(tīng)相應(yīng)路徑(/HelloWorldService/1.0.0),一旦路徑上的數(shù)據(jù)有任務(wù)變化(增加或減少),zookeeper都會(huì)通知服務(wù)消費(fèi)方、服務(wù)提供者地址列表已經(jīng)發(fā)生改變,從而進(jìn)行更新。

更為重要的是zookeeper 與生俱來(lái)的容錯(cuò)容災(zāi)能力(比如leader選舉),可以確保服務(wù)注冊(cè)表的高可用性。

使用 zookeeper 作為注冊(cè)中心時(shí),客戶(hù)端訂閱服務(wù)時(shí)會(huì)向 zookeeper 注冊(cè)自身;主要是方便對(duì)調(diào)用方進(jìn)行統(tǒng)計(jì)、管理。但訂閱時(shí)是否注冊(cè) client 不是必要行為,和不同的注冊(cè)中心實(shí)現(xiàn)有關(guān),例如使用 consul 時(shí)便沒(méi)有注冊(cè)。

到此這篇關(guān)于Java之Zookeeper注冊(cè)中心原理剖析的文章就介紹到這了,更多相關(guān)Java之Zookeeper注冊(cè)中心原理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文詳解Java如何系統(tǒng)地避免空指針問(wèn)題

    一文詳解Java如何系統(tǒng)地避免空指針問(wèn)題

    新手Java開(kāi)發(fā)總是經(jīng)??罩羔槞z查,甚至某些老手也會(huì)犯這樣的問(wèn)題,所以這篇文章小編就帶大家一起來(lái)看看如何系統(tǒng)地避免空指針問(wèn)題,希望對(duì)大家有所幫助
    2024-01-01
  • SpringBoot + Shiro前后端分離權(quán)限

    SpringBoot + Shiro前后端分離權(quán)限

    這篇文章主要為大家詳細(xì)介紹了SpringBoot + Shiro前后端分離權(quán)限,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Springboot實(shí)現(xiàn)郵件發(fā)送功能

    Springboot實(shí)現(xiàn)郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了Springboot實(shí)現(xiàn)郵件發(fā)送功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • java動(dòng)態(tài)線(xiàn)程池的簡(jiǎn)單實(shí)現(xiàn)思路

    java動(dòng)態(tài)線(xiàn)程池的簡(jiǎn)單實(shí)現(xiàn)思路

    本文主要介紹了java?動(dòng)態(tài)線(xiàn)程池的簡(jiǎn)單實(shí)現(xiàn)思路,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • java筆記學(xué)習(xí)之操作符

    java筆記學(xué)習(xí)之操作符

    本篇文章給大家分享了關(guān)于Java中操作符的相關(guān)知識(shí)點(diǎn)以及難點(diǎn)總結(jié),有需要的朋友參考學(xué)習(xí)下吧。
    2018-04-04
  • Mybatis 動(dòng)態(tài)sql if 判讀條件等于一個(gè)數(shù)字的案例

    Mybatis 動(dòng)態(tài)sql if 判讀條件等于一個(gè)數(shù)字的案例

    這篇文章主要介紹了Mybatis 動(dòng)態(tài)sql if 判讀條件等于一個(gè)數(shù)字的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Java報(bào)錯(cuò)org.hibernate.TypeMismatchException的解決方法

    Java報(bào)錯(cuò)org.hibernate.TypeMismatchException的解決方法

    在Java開(kāi)發(fā)領(lǐng)域,尤其是涉及到數(shù)據(jù)持久化的項(xiàng)目中,Hibernate是一款廣泛使用的強(qiáng)大工具,然而,可能會(huì)在使用過(guò)程中遭遇各種報(bào)錯(cuò),其中org.hibernate.TypeMismatchException就是一個(gè)讓人頭疼的問(wèn)題,下面我們一起深入剖析這個(gè)報(bào)錯(cuò)信息
    2024-11-11
  • java IO流文件的讀寫(xiě)具體實(shí)例

    java IO流文件的讀寫(xiě)具體實(shí)例

    這篇文章主要介紹了java IO流文件的讀寫(xiě)具體實(shí)例,有需要的朋友可以參考一下
    2013-12-12
  • Spring Boot整合MyBatis連接Oracle數(shù)據(jù)庫(kù)的步驟全紀(jì)錄

    Spring Boot整合MyBatis連接Oracle數(shù)據(jù)庫(kù)的步驟全紀(jì)錄

    這篇文章主要給大家介紹了關(guān)于Spring Boot整合MyBatis連接Oracle數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • Java線(xiàn)程狀態(tài)及jstack命令詳解

    Java線(xiàn)程狀態(tài)及jstack命令詳解

    jstack是Java虛擬機(jī)(JVM)提供的一個(gè)非常有用的命令行工具,它允許開(kāi)發(fā)人員和系統(tǒng)管理員在運(yùn)行時(shí)獲取Java應(yīng)用程序的線(xiàn)程堆棧跟蹤,在某些情況下,可能需要以管理員或root用戶(hù)的身份運(yùn)行jstack命令,這篇文章主要介紹了Java線(xiàn)程狀態(tài)及jstack命令詳解,需要的朋友可以參考下
    2024-03-03

最新評(píng)論

公安县| 滦南县| 茶陵县| 长沙市| 怀仁县| 莱芜市| 江源县| 阳西县| 栾川县| 万州区| 额敏县| 云安县| 万荣县| 滦南县| 吉首市| 文安县| 邻水| 云龙县| 朔州市| 桑日县| 突泉县| 武城县| 洪雅县| 防城港市| 银川市| 漳平市| 丰都县| 江津市| 城口县| 衡东县| 江达县| 三亚市| 个旧市| 梧州市| 鄯善县| 乐陵市| 包头市| 织金县| 安阳市| 景洪市| 黑河市|