redis集羣環境redis
生產者有多個 消費者有多個 兩邊隨時可增長隊列
redis上消息只會被一個消費者消費,不會有多個訂閱者消費同一個消息,簡單一對一內存
解決:部署
消費者崩潰問題:RPOPLPUSH保證不會因爲程序問題致使消息不丟失。那麼這部分中間狀態數據如何處理。考慮集羣copy到目標隊列名稱須要根據消費者程序部署unique名,可結合zk來作,當出現程序崩潰,該隊列會自動成爲可消費隊列,消費完成後會被幹掉集羣
爲了利用集羣,多個隊列寫,生產者只負責輪訓寫,消費者輪訓讀redis集羣
生產者崩潰問題,一樣有成效記錄來補償中間狀態。相似消費者來決定中間狀態值的改變。程序
考慮redis內存問題,生產者根據隊列狀況進行閥值控制,避免消費太慢,寫入太快數據