成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

RPC框架原理及從零實(shí)現(xiàn)系列博客(三):zookeeper注冊(cè)中心原理

codergarden / 1403人閱讀

摘要:每個(gè)都可以通過(guò)其路徑唯一標(biāo)識(shí),同時(shí)每個(gè)節(jié)點(diǎn)還可以存儲(chǔ)少量數(shù)據(jù)。監(jiān)聽(tīng)機(jī)制,監(jiān)聽(tīng)某個(gè)當(dāng)該發(fā)生變化時(shí),會(huì)回調(diào)該,但是這個(gè)是一次性的,下次需要監(jiān)聽(tīng)時(shí)還得再注冊(cè)一次。

前面的文章中 我用netty實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的一對(duì)一的RPC

11個(gè)類(lèi)實(shí)現(xiàn)簡(jiǎn)單java rpc

接下來(lái)的文章中 我將使用zookeeper作為rpc調(diào)用的分布式注冊(cè)中心 從而實(shí)現(xiàn)多對(duì)多(多個(gè)調(diào)用者,多個(gè)提供者)的rpc調(diào)用,負(fù)載均衡及相應(yīng)的分布式協(xié)調(diào)功能

首先簡(jiǎn)單介紹下zookeeper

zookeeper是hadoop中一個(gè)重要組件,其主要是作為分布式協(xié)調(diào)服務(wù)
zookeeper采用節(jié)點(diǎn)樹(shù)的數(shù)據(jù)模型,類(lèi)似linux文件系統(tǒng),/,/app1,/app2 比較簡(jiǎn)單

每個(gè)節(jié)點(diǎn)稱(chēng)做一個(gè)ZNode。每個(gè)ZNode都可以通過(guò)其路徑唯一標(biāo)識(shí),同時(shí)每個(gè)節(jié)點(diǎn)還可以存儲(chǔ)少量數(shù)據(jù)。
節(jié)點(diǎn)可分為常規(guī)節(jié)點(diǎn),臨時(shí)節(jié)點(diǎn)和順序節(jié)點(diǎn)
還有兩個(gè)比較重要的東西 session和watcher

session:

每個(gè)zk客戶(hù)端與zk連接時(shí)會(huì)創(chuàng)建一個(gè)session,在設(shè)置的sessionTimeOut內(nèi),客戶(hù)端會(huì)與zk進(jìn)行心跳包的定時(shí)發(fā)送,從而感知每個(gè)客戶(hù)端是否宕機(jī),如果創(chuàng)建某個(gè)臨時(shí)Znode的對(duì)應(yīng)session銷(xiāo)毀時(shí),相應(yīng)的臨時(shí)節(jié)點(diǎn)也會(huì)被zk刪除

watcher:

監(jiān)聽(tīng)機(jī)制,監(jiān)聽(tīng)某個(gè)Znode 當(dāng)該znode發(fā)生變化時(shí),會(huì)回調(diào)該watcher,但是這個(gè)watcher是一次性的,下次需要監(jiān)聽(tīng)時(shí)還得再注冊(cè)一次。

當(dāng)然 這幾個(gè)只是zookeeper的各種特性之一,能實(shí)現(xiàn)注冊(cè)中心的也不止zookeeper(例如redis),注冊(cè)中心也只是zk的功能之一,還有互斥鎖,樂(lè)觀鎖,命名服務(wù)等也是zk能實(shí)現(xiàn)的,本文只講述rpc框架需要的3個(gè)重要內(nèi)容
臨時(shí)節(jié)點(diǎn),session,watcher其余內(nèi)容請(qǐng)讀者自行查閱

這是dubbo框架的注冊(cè)中心數(shù)據(jù)模型

zookeeper注冊(cè)中心思路如下

(這是我的思路 可能沒(méi)和dubbo框架一模一樣)

服務(wù)名稱(chēng)作為次級(jí)znode,下層的znode為對(duì)應(yīng)的類(lèi)型,調(diào)用者還是提供者

對(duì)應(yīng)的類(lèi)型下面是他們的URL 即對(duì)應(yīng)機(jī)器的IP地址 URL這個(gè)znode為臨時(shí)節(jié)點(diǎn)

提供者服務(wù)啟動(dòng)后向zookeeper注冊(cè)他有的services,并將自己的ip地址和端口作為路徑,創(chuàng)建對(duì)應(yīng)的URL臨時(shí)節(jié)點(diǎn)
調(diào)用者調(diào)用相應(yīng)服務(wù)時(shí),找到對(duì)應(yīng)的service節(jié)點(diǎn),獲得service所有的子節(jié)點(diǎn),并且watch service節(jié)點(diǎn),然后同樣注冊(cè)自己的znode節(jié)點(diǎn)
每個(gè)調(diào)用端需明確提供者和調(diào)用者的數(shù)量以及提供者相應(yīng)的IP地址
之后調(diào)用端獲得 service/providers的所有子節(jié)點(diǎn) 即獲得所有的提供者的IP 使用對(duì)應(yīng)負(fù)載均衡策略連接其中一個(gè)ip地址,進(jìn)行rpc調(diào)度
當(dāng)提供者或調(diào)用者出現(xiàn)宕機(jī)或者網(wǎng)絡(luò)故障時(shí),對(duì)應(yīng)session的臨時(shí)znode會(huì)被銷(xiāo)毀,即哪個(gè)IP的機(jī)子宕機(jī)了,他對(duì)應(yīng)的url節(jié)點(diǎn)在sessionTimeOut后,就會(huì)被銷(xiāo)毀,此時(shí)由于service節(jié)點(diǎn)已發(fā)生了變化,所有可用調(diào)用者都會(huì)收到watcher的通知,此時(shí)重新獲得所有的調(diào)用者提供者IP及其數(shù)量,并繼續(xù)監(jiān)聽(tīng),從而悉知調(diào)用端和服務(wù)端的服務(wù)可用情況。

負(fù)載均衡

常見(jiàn)負(fù)載均衡策略有(權(quán)重)輪詢(xún),隨機(jī),最小連接數(shù),一致性hash等等

后續(xù)文章會(huì)分析并選取其中一種進(jìn)行實(shí)現(xiàn)

以上為rpc框架使用zookeeper作為注冊(cè)中心的思路

下篇博客將是對(duì)上述思路的具體代碼實(shí)現(xiàn),并整合進(jìn)RPC框架
http://blog.csdn.net/we_phone...
歡迎持續(xù)關(guān)注我的博客及我的github:MeiZhuoRPC

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68336.html

相關(guān)文章

  • RPC框架原理從零實(shí)現(xiàn)系列博客(一):思路篇

    摘要:等之所以支持跨語(yǔ)言,是因?yàn)樗麄冏约憾x了一套結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)格式,如的,用于編解碼對(duì)象,作為各個(gè)語(yǔ)言通信的中間協(xié)議。 前段時(shí)間覺(jué)得自己一直用別人的框架,站在巨人的肩膀上,也該自己造造輪子了 一時(shí)興起 就著手寫(xiě)起了RPC框架 這里寫(xiě)了系列博客拿給大家分享下 這篇是開(kāi)篇的思路篇 項(xiàng)目最終的代碼放在了我的github上https://github.com/wephone/Me... 歡迎sta...

    tracy 評(píng)論0 收藏0
  • RPC框架原理從零實(shí)現(xiàn)系列博客(二):11個(gè)類(lèi)實(shí)現(xiàn)簡(jiǎn)單RPC框架

    摘要:項(xiàng)目版本源碼在上一博文中跟大家講了的實(shí)現(xiàn)思路思路畢竟只是思路那么這篇就帶著源碼給大家講解下實(shí)現(xiàn)過(guò)程中的各個(gè)具體問(wèn)題讀懂本篇需要的基本知識(shí)若尚未清晰請(qǐng)自行了解后再閱讀本文動(dòng)態(tài)代理框架的基本使用的基本配置最終項(xiàng)目的使用如下調(diào)用端代碼及配置測(cè)試類(lèi) 項(xiàng)目1.0版本源碼 https://github.com/wephone/Me... 在上一博文中 跟大家講了RPC的實(shí)現(xiàn)思路 思路畢竟只是思路...

    you_De 評(píng)論0 收藏0
  • 2021 年最新基于 Spring Cloud 的微服務(wù)架構(gòu)分析

    摘要:是一個(gè)相對(duì)比較新的微服務(wù)框架,年才推出的版本雖然時(shí)間最短但是相比等框架提供的全套的分布式系統(tǒng)解決方案。提供線程池不同的服務(wù)走不同的線程池,實(shí)現(xiàn)了不同服務(wù)調(diào)用的隔離,避免了服務(wù)器雪崩的問(wèn)題。通過(guò)互相注冊(cè)的方式來(lái)進(jìn)行消息同步和保證高可用。 Spring Cloud 是一個(gè)相對(duì)比較新的微服務(wù)框架,...

    cikenerd 評(píng)論0 收藏0
  • PowerDotNet平臺(tái)化軟件架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)系列(04):服務(wù)治理平臺(tái)

    摘要:的服務(wù)治理平臺(tái)發(fā)源于早期的個(gè)人項(xiàng)目??蛻?hù)端發(fā)現(xiàn)模式要求客戶(hù)端負(fù)責(zé)查詢(xún)注冊(cè)中心,獲取服務(wù)提供者的列表信息,使用負(fù)載均衡算法選擇一個(gè)合適的服務(wù)提供者,發(fā)起接口調(diào)用請(qǐng)求。系統(tǒng)和系統(tǒng)之間,少不了數(shù)據(jù)的互聯(lián)互通。隨著微服務(wù)的流行,一個(gè)系統(tǒng)內(nèi)的不同應(yīng)用進(jìn)行互聯(lián)互通也是常態(tài)。 PowerDotNet的服務(wù)治理平臺(tái)發(fā)源于早期的個(gè)人項(xiàng)目Power.Apix。這個(gè)項(xiàng)目借鑒了工作過(guò)的公司的服務(wù)治理方案,站在...

    reclay 評(píng)論0 收藏0
  • dubbo源碼解析(一)Hello,Dubbo

    摘要:英文全名為,也叫遠(yuǎn)程過(guò)程調(diào)用,其實(shí)就是一個(gè)計(jì)算機(jī)通信協(xié)議,它是一種通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù)而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。 Hello,Dubbo 你好,dubbo,初次見(jiàn)面,我想和你交個(gè)朋友。 Dubbo你到底是什么? 先給出一套官方的說(shuō)法:Apache Dubbo是一款高性能、輕量級(jí)基于Java的RPC開(kāi)源框架。 那么什么是RPC? 文檔地址:http://dubbo.a...

    evin2016 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<