spring boot 集成 zookeeper 搭建微服務架構


PRC原理

  RPC 遠程過程調用(Remote Procedure Call)

  一般用來實現部署在不同機器上的系統之間的方法調用,使得程序能夠像訪問本地系統資源一樣,通過網絡傳輸去訪問遠程系統資源,RPC框架實現的原理都是類似的,如下圖:

  Client Code:客戶端調用方代碼實現,負責發起RPC調用,為調用方用戶提供使用API。

  Serialization/Deserialization:負責對RPC調用通過網絡傳輸的內容進行序列化與反序列化,不同的RPC框架有不同的實現機制,主要分為文本與二進制兩大類。(文本序列化機制主要有XML與JSON兩種格式,二進制類別的序列化機制常見的有Java原生的序列化機制,以及Hessian、protobuf、Thrift、Avro、Kryo、MessagePack等),不同的序列化方式在可讀性,碼流大小,支持的數據類型以及性能等方面都存在較大差異,需要根據實際情況進行篩選。

  Stub Proxy:可以看做是一種代理對象,屏蔽RPC調用過程中復雜的網絡處理邏輯,使得RPC調用透明化,能夠保持與本地調用一樣的代碼風格。

  Transport:作為RPC框架底層的通信傳輸模塊,一般通過Socket在客戶端與服務端之間傳遞請求與應答消息。

  Server Code:服務端服務業務邏輯具體的實現。

服務注冊中心介紹

我和你都有表達的能力,但是我們怎么溝通呢?見面聊?電話談?還是微信語音呢?

顯然,注冊中心來解決這個問題:

ZooKeeper介紹

  zookeeper是dubbo中的注冊中心,dubbo是一個分布式服務框架,自帶RPC,dubbo使用maven引入。

  要運行dubbo,首先需要一個注冊中心,可供選擇的注冊中心有Zookeeper、Multicast、Redis、Simple。

下載從官網去下載

解壓后進入conf目錄,里面有一個zoo.cfg (如果沒有就自己創建)  配置說明如下:

  tickTime=2000  #單位毫秒 zk中最小時間單位長度

  dataDir=/user/local/zookeeper/data  #zk服務器存儲快照文件目錄

  dataLogDir=/user/local/zookeeper/logs  #zk服務器存儲事務日志文件目錄

  clientPort=2181  #服務端對外的服務端口

  initLimit=5  #tickTime的倍數  Leader等待Follower啟動並完成數據同步的時間

  syncLimit=2  #tickTime的倍數  Leader與Follower之間心跳最大延時時間

 

進入bin目錄下 運行 sh zkServer.sh start  (Windows直接雙擊)

spring boot 集成 zookeeper

稍微介紹一下設計

一共有3個模塊:

web:服務消費者,包含入口層與業務邏輯層。  (war包)

service.user:服務提供者,用戶服務層  (war包)

base.core:共用層  包含對象實體  interface  (jar包)

多的我就不說了,都在代碼里

源碼分享

Fork me on Gitee

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM