單機偽集群的意義?
2.1. 單個 Master
這種方式風險較大,一旦 Broker 重啟或者宕機時,會導致整個服務不可用,不建議線上環境使用。
2.2. 多 Master 模式
一個集群無 Slave,全是 Master,例如 2 個 Master 或者 3 個 Master
優點:配置簡單,單個 Master 宕機或重啟維護對應用無影響,在磁盤配置為 RAID10 時,即使機器宕機不可恢復情況下,由與 RAID10 磁盤非常可靠,消息也不會丟(異步刷盤丟失少量消息,同步刷盤一條不丟)。性能最高。
缺點:單臺機器宕機期間,這臺機器上未被消費的消息在機器恢復之前不可訂閱,消息實時性會受到受到影響。
先啟動 NameServer
在機器 A,啟動第一個 Master
在機器 B,啟動第二個 Master
2.3. 多 Master 多 Slave 模式,異步復制
每個 Master 配置一個 Slave,有多對 Master-Slave,HA 采用異步復制方式,主備有短暫消息延遲,毫秒級。
優點:即使磁盤損壞,消息丟失的非常少,且消息實時性不會受影響,因為 Master 宕機后,消費者仍然可以從 Slave 消費,此過程對應用透明。不需要人工干預。性能同多 Master 模式幾乎一樣。
缺點:Master 宕機,磁盤損壞情況,會丟失少量消息。
先啟動 NameServer
在機器 A,啟動第一個 Master
在機器 B,啟動第二個 Master
在機器 C,啟動第一個 Slave
在機器 D,啟動第二個 Slave
2.4. 多 Master 多 Slave 模式,同步雙寫
每個 Master 配置一個 Slave,有多對 Master-Slave,HA 采用同步雙寫方式,主備都寫成功,向應用返回成功。
優點:數據與服務都無單點,Master 宕機情況下,消息無延遲,服務可用性與數據可用性都非常高
缺點:性能比異步復制模式略低,。目前主宕機后,備機不能自動切換為主機。
先啟動 NameServer
在機器 A,啟動第一個 Master
在機器 B,啟動第二個 Master
在機器 C,啟動第一個 Slave
在機器 D,啟動第二個 Slave
以上 Broker 與 Slave 配對是通過指定相同的 brokerName 參數來配對,Master 的 BrokerId 必須是 0,Slave 的 BrokerId 必須是大與 0 的數。另外一個 Master 下面可以掛載多個 Slave,同一 Master 下的多個 Slave 通過指定不同的 BrokerId 來區分。