1. 程式人生 > >Storm的容錯機制

Storm的容錯機制

信息 完整 提交 nimbus storm 監控 zookeepe 將在 次數

任務級容錯

Bolt任務crash引起的消息未被應答。此時,acker中所有與此Bolt任務關聯的消息都會因為超時而失敗,對應的Spout的fail方法將被調用。
acker任務失敗。如果acker任務本身失敗了,它在失敗之前持有的所有消息都將超時而失敗。Spout的fail方法將被調用。
Spout任務失敗。在這種情況下,與Spout任務對接的外部設備(如MQ)負責消息的完整性。例如,當客戶端異常時,kestrel隊列會將處於pending狀態的所有消息重新放回隊列中。
2、任務槽(slot)故障

Worker失敗。每個Worker中包含數個Bolt(或Spout)任務。Supervisor負責監控這些任務,當worker失敗後會嘗試在本機重啟它,如果它在啟動時連續失敗了一定的次數,無法發送心跳信息到Nimbus,Nimbus將在另一臺主機上重新分配worker。
Supervisor失敗。Supervisor是無狀態(所有的狀態都保存在Zookeeper或者磁盤上)和快速失敗(每當遇到任何意外的情況,進程自動毀滅)的,因此Supervisor的失敗不會影響當前正在運行的任務,只要及時將他們重新啟動即可。
Nimbus失敗。Nimbus也是無狀態和快速失敗的,因此Nimbus的失敗不會影響當前正在運行的任務,但是當Nimbus失敗時,無法提交新的任務,只要及時將它重新啟動即可。
3、集群節點(機器):

Storm集群中的節點故障。此時Nimbus會將此機器上所有正在運行的任務轉移到其他可用的機器上運行。
Zookeeper集群中的節點故障。Zookeeper保證少於半數的機器宕機系統仍可正常運行,及時修復故障機器即可。

Storm的容錯機制