messageflow 的集群架構設計 手稿

2021-09-05 23:45:44 字數 1415 閱讀 6564

多個server的問題。

假設citibox.com / cosmosd.com 各有乙個server。

他們的客戶端要互聯。

方法:1. 在citibox.com / cosmosd.com 之間建立橋,實現互聯。

結論:建立伺服器的橋。

2. 客戶端同時面對citibox.com / cosmosd.com

結論:否決。

3. 僅開乙個伺服器,例如pixysoft.net 其他的鏈結到這個伺服器。

結論:否決。實在不方便。而且不容易負載平衡

------------------

伺服器集群的思路:

1. citibox.com = 伺服器a

cosmosd.com = 伺服器b

pixysoft.net = 伺服器c

他們各自負責對應的**的comet、格仔有im的帳號。

現在, 我是乙個客戶端:[email protected]。需要同時能夠和三颱伺服器的內部節點、外部節點對話。

------------------

1. 使用直接轉接。

轉接者不負責處理,僅僅把資料交給乙個中心機。例如pixysoft.net是核心系統,擁有所有資訊。其他的僅僅是轉接。

例如轉接者是:citibox.com,他擁有客戶a/b/c,以及pixysoft.net。

那麼當a/b/c和citibox.com交流的時候,他會直接把資訊轉移到pixysoft.net。由pixysoft.net負責。

這個時候citibox.com本身不需要建立任何的對話快取,而是只要收到資訊就**。

設計簡單,但是增加了節點之間的通訊;例如本來的設計中:

a -- citibox.com -- admin

現在a -- citibox.com -- pixysoft.net -- admin

------------------------

2. 各自為政,當本節點無法處理的時候,才交給轉接節點。

citibox.com = a

cosmosd.com = b

client c in a

client d in b

c ---(bind d)--- a

a 發現沒有,則建立乙個connectioncache,同時傳送乙個轉接指令

a ---(redirect d) --- b

如果b發現存在,則

1. b - redirectpass - a

2. b - bind d - d

3. a - succeed - c

如b不存在

1. b - redirectfail - a

2. a - 取消connectioncache

3. a - fail - c

以上都會在a建立了d的快取,這樣下次a再訪問可以直接讀取快取。

Mycat集群架構

架構圖集群總共需要有8臺機子,mysql需要4臺,mycat需要2臺,負載均衡和高可用需要2臺。之所以mycat需要集群這樣的架構,是為了避免mycat單點失效的情況,mysql主機有4臺 db1 db4 其中db1和db3是組一 主主複製 db2和db4是組二 主主複製 之所以需要主主複製是因為m...

Linux集群架構

高可用集群通常為2臺伺服器 功能和角色是一樣的 一台在工作,另一台作為冗餘。當提供服務的機器宕機,冗餘將接替繼續提供服務,這樣就可以提供系統可用的效率。高可用集群的衡量標準要保證集群服務100 時間永遠完全可用,幾乎可以說是一件不可能完成的任務。比如,在這幾年雙十一剛開始的時候,一下子進來買東西的人...

MYSQL集群架構

1 讀寫分離架構 主從架構 一寫多讀,一主多從 問題 應用程式需要連線多個資料來源 mycat可以解決 主從之間同步是非同步的 資料時弱一致性的 pxc集群 2 中介軟體 問題 主從之間同步是非同步的 資料時弱一致性的 pxc集群 中介軟體的效能將成為系統的瓶頸 3 多個中介軟體的架構 問題 主從之...