浩鯨云計算科技股份有限公司 版權所有 2003-2023
News
News
傳統處理方法 使用了消息隊列的異步解耦的處理方法 Namesrv為無狀態服務,是WhaleDI-MQ的注冊中心,用于收集和更新路由信息;WhaleDI-MQ通過部署多個Namesrv節點保障高可用,當一個Namesrv異常退出后,客戶端能夠自動重連到其他的Namesrv節點。 Broker為實際對外提供消息發送和消費服務的節點,消息會輪詢發送到各個主節點Broker中,主備之間通過同步雙寫保障數據的可靠性;單個Broker master節點異常時,備節點會自動切換為master節點,繼續提供服務;當一組Broker的master、slave節點全部異常時,其他的Broker節點仍然可以提供服務,保證了服務的可用性。 WhaleDI-MQ利用ZK特性監控Broker的主備狀態,實現了Broker的自動切換功能。Zookeeper自身采用多節點(奇數個)部署的方式,利用ZAB協議特性保證自身組件的高可用。 Producer為生產者客戶端,采用多節點集群部署模式,具備極強的擴展能力,某個Producer異常,不影響其它Producer節點發送消息。 Consumer為消費者客戶端,和Producer一樣采用多節點集群部署模式,當某個Consumer節點異常時,WhaleDI-MQ根據負載策略動態再平衡,重新調整隊列路由。 作為Broker的注冊中心,維護Broker的服務地址和路由信息 客戶端通過Namesrv獲取以及更新路由信息 故障場景: 解決方案: 應用成果: Producer客戶端發送消息到Broker master節點 Master節點同步寫入到Slave從節點 Slave通知Maser節點消息寫入成功 Master節點返回成功寫入狀態至消息客戶端 痛點描述: 解決方案: 應用成果: 痛點描述: 解決方案: 同步復制:保證數據零丟失;異步復制:容災復制對主站點自身的消息寫入服務影響比較小,數據復制會有稍許的延時(秒級)。 應用成果:WhaleDI-MQ容災站點可以在主站點異常不可用時,進行一鍵容災切換,將容災站點切換為主站點,快速地恢復服務。 故障場景: BrokerA磁盤阻塞或寫入超時 生產者和BrokerA之間網絡超時、丟包等 BrokerA cpu、內存等使用率超過100% 解決方案: 資源隔離:單個Broker的異常不會影響其他Broker的消息發送 超時熔斷:當前的Broker在一定的時間內超時達到了一定的次數,并執行服務降級,并使用異步的機制探測恢復的情況 失敗熔斷:當發送失敗的調用次數達到一定閾值,如system busy、io滿載等則自動降級,并使用進行異步機制探測恢復的情況 應用成果: 痛點描述: 方案描述: 應用成果: