国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

RPC框架原理及從零實現系列博客(三):zookeeper注冊中心原理

codergarden / 1387人閱讀

摘要:每個都可以通過其路徑唯一標識,同時每個節點還可以存儲少量數據。監聽機制,監聽某個當該發生變化時,會回調該,但是這個是一次性的,下次需要監聽時還得再注冊一次。

前面的文章中 我用netty實現了一個簡單的一對一的RPC

11個類實現簡單java rpc

接下來的文章中 我將使用zookeeper作為rpc調用的分布式注冊中心 從而實現多對多(多個調用者,多個提供者)的rpc調用,負載均衡及相應的分布式協調功能

首先簡單介紹下zookeeper

zookeeper是hadoop中一個重要組件,其主要是作為分布式協調服務
zookeeper采用節點樹的數據模型,類似linux文件系統,/,/app1,/app2 比較簡單

每個節點稱做一個ZNode。每個ZNode都可以通過其路徑唯一標識,同時每個節點還可以存儲少量數據。
節點可分為常規節點,臨時節點和順序節點
還有兩個比較重要的東西 session和watcher

session:

每個zk客戶端與zk連接時會創建一個session,在設置的sessionTimeOut內,客戶端會與zk進行心跳包的定時發送,從而感知每個客戶端是否宕機,如果創建某個臨時Znode的對應session銷毀時,相應的臨時節點也會被zk刪除

watcher:

監聽機制,監聽某個Znode 當該znode發生變化時,會回調該watcher,但是這個watcher是一次性的,下次需要監聽時還得再注冊一次。

當然 這幾個只是zookeeper的各種特性之一,能實現注冊中心的也不止zookeeper(例如redis),注冊中心也只是zk的功能之一,還有互斥鎖,樂觀鎖,命名服務等也是zk能實現的,本文只講述rpc框架需要的3個重要內容
臨時節點,session,watcher其余內容請讀者自行查閱

這是dubbo框架的注冊中心數據模型

zookeeper注冊中心思路如下

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

服務名稱作為次級znode,下層的znode為對應的類型,調用者還是提供者

對應的類型下面是他們的URL 即對應機器的IP地址 URL這個znode為臨時節點

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

負載均衡

常見負載均衡策略有(權重)輪詢,隨機,最小連接數,一致性hash等等

后續文章會分析并選取其中一種進行實現

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

下篇博客將是對上述思路的具體代碼實現,并整合進RPC框架
http://blog.csdn.net/we_phone...
歡迎持續關注我的博客及我的github:MeiZhuoRPC

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/68336.html

相關文章

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

    摘要:等之所以支持跨語言,是因為他們自己定義了一套結構化數據存儲格式,如的,用于編解碼對象,作為各個語言通信的中間協議。 前段時間覺得自己一直用別人的框架,站在巨人的肩膀上,也該自己造造輪子了 一時興起 就著手寫起了RPC框架 這里寫了系列博客拿給大家分享下 這篇是開篇的思路篇 項目最終的代碼放在了我的github上https://github.com/wephone/Me... 歡迎sta...

    tracy 評論0 收藏0
  • RPC框架原理從零實現系列博客(二):11個類實現簡單RPC框架

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

    you_De 評論0 收藏0
  • 2021 年最新基于 Spring Cloud 的微服務架構分析

    摘要:是一個相對比較新的微服務框架,年才推出的版本雖然時間最短但是相比等框架提供的全套的分布式系統解決方案。提供線程池不同的服務走不同的線程池,實現了不同服務調用的隔離,避免了服務器雪崩的問題。通過互相注冊的方式來進行消息同步和保證高可用。 Spring Cloud 是一個相對比較新的微服務框架,...

    cikenerd 評論0 收藏0
  • PowerDotNet平臺化軟件架構設計與實現系列(04):服務治理平臺

    摘要:的服務治理平臺發源于早期的個人項目。客戶端發現模式要求客戶端負責查詢注冊中心,獲取服務提供者的列表信息,使用負載均衡算法選擇一個合適的服務提供者,發起接口調用請求。系統和系統之間,少不了數據的互聯互通。隨著微服務的流行,一個系統內的不同應用進行互聯互通也是常態。 PowerDotNet的服務治理平臺發源于早期的個人項目Power.Apix。這個項目借鑒了工作過的公司的服務治理方案,站在...

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

    摘要:英文全名為,也叫遠程過程調用,其實就是一個計算機通信協議,它是一種通過網絡從遠程計算機程序上請求服務而不需要了解底層網絡技術的協議。 Hello,Dubbo 你好,dubbo,初次見面,我想和你交個朋友。 Dubbo你到底是什么? 先給出一套官方的說法:Apache Dubbo是一款高性能、輕量級基于Java的RPC開源框架。 那么什么是RPC? 文檔地址:http://dubbo.a...

    evin2016 評論0 收藏0

發表評論

0條評論

codergarden

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<