1. 程式人生 > >java B2B2C 原始碼 Springcloud多租戶電子商城系統-Consul整體架構

java B2B2C 原始碼 Springcloud多租戶電子商城系統-Consul整體架構

本文簡單介紹了 Consul 的原理,希望能吸引感興趣的朋友一起探討研究。
需要JAVA Spring Cloud大型企業分散式微服務雲構建的B2B2C電子商務平臺原始碼 一零三八七七四六二六
Consul 是一個支援多資料中心分散式高可用的服務發現和配置共享的服務軟體,由 HashiCorp 公司用 Go 語言開發, 基於 Mozilla Public License 2.0 的協議進行開源. Consul 支援健康檢查,並允許 HTTP 和 DNS 協議呼叫 API 儲存鍵值對.
命令列超級好用的虛擬機器管理軟體 vgrant 也是 HashiCorp 公司開發的產品.
一致性協議採用 Raft 演算法,用來保證服務的高可用. 使用 GOSSIP 協議管理成員和廣播訊息, 並且支援 ACL 訪問控制.

Consul 的使用場景
docker 例項的註冊與配置共享
coreos 例項的註冊與配置共享
vitess 叢集
SaaS 應用的配置共享
與 confd 服務整合,動態生成 nginx 和 haproxy 配置檔案
Consul概覽

在這裡插入圖片描述
首先Consul支援多資料中心,在上圖中有兩個DataCenter,他們通過Internet互聯,同時請注意為了提高通訊效率,只有Server節點才加入跨資料中心的通訊。

在單個數據中心中,Consul分為Client和Server兩種節點(所有的節點也被稱為Agent),Server節點儲存資料,Client負責健康檢查及轉發資料請求到Server;Server節點有一個Leader和多個Follower,Leader節點會將資料同步到Follower,Server的數量推薦是3個或者5個,在Leader掛掉的時候會啟動選舉機制產生一個新的Leader。

叢集內的Consul節點通過gossip協議(流言協議)維護成員關係,也就是說某個節點了解叢集內現在還有哪些節點,這些節點是Client還是Server。單個數據中心的流言協議同時使用TCP和UDP通訊,並且都使用8301埠。跨資料中心的流言協議也同時使用TCP和UDP通訊,埠使用8302。

叢集內資料的讀寫請求既可以直接發到Server,也可以通過Client使用RPC轉發到Server,請求最終會到達Leader節點,在允許資料輕微陳舊的情況下,讀請求也可以在普通的Server節點完成,叢集內資料的讀寫和複製都是通過TCP的8300埠完成。java B2B2C 原始碼 Springcloud多租戶電子商城系統