springboot項目中如何使用緩存 RabbitMQ如何通過持久化保證消息99.99%不丟失?
RabbitMQ如何通過持久化保證消息99.99%不丟失?Rabbitmq本身運行在內(nèi)存中。高速的同時,也意味著萬一停電,消息會從內(nèi)存中丟失。所以,我們需要做出堅持。讓 下面我們來談?wù)剅abbitmq
RabbitMQ如何通過持久化保證消息99.99%不丟失?
Rabbitmq本身運行在內(nèi)存中。高速的同時,也意味著萬一停電,消息會從內(nèi)存中丟失。所以,我們需要做出堅持。讓 下面我們來談?wù)剅abbitmq如何保證99.99%的消息。
堅持
正如我們在開始時介紹的,消息隊列在內(nèi)存中,因此我們需要將消息持久化到硬盤中,然后我們可以從硬盤中恢復(fù)數(shù)據(jù)。
Ack確認
發(fā)送消息后,讓消費者發(fā)送確認消息。如果沒有收到確認消息,服務(wù)器將保存該消息并從存儲器中刪除數(shù)據(jù),直到從消費者收到確認消息。
備份模式
它是消息隊列的鏡像備份,類似于mysql的主從復(fù)制。當(dāng)一個節(jié)點出現(xiàn)故障時,可以使用備份節(jié)點繼續(xù)傳輸消息。
航海日志記錄
任何消息都會出乎意料。這時候我們就可以通過日志分析數(shù)據(jù)來補償之前有問題的消息。
多做備份,多做記錄,就像我們平時寫日志一樣。記錄越詳細,我們能發(fā)現(xiàn)的問題就越多。當(dāng)然,記錄要適度。
springboot怎么實現(xiàn)集群?
這個問題比較模糊。集群本身是一個復(fù)雜的話題。你想在哪個層面實現(xiàn)集群化(web?服務(wù)?數(shù)據(jù)?等等),你的目標是什么?(負載均衡?停機會話復(fù)制?性能要求?那么我只能簡單介紹一下一些常見場景下與Spring boot相關(guān)的集群技術(shù)。如果您的微服務(wù)是無狀態(tài)的,您可以將它們部署在多個服務(wù)器實例上,并在前端使用負載平衡器(如nginx)。
如果您需要會話復(fù)制,對于動態(tài)容錯和部署,您可以查看spring-session。如果需要數(shù)據(jù)庫集群,請參考數(shù)據(jù)庫集群的相關(guān)技術(shù)。mongoDB和reddis都有自己的方案。如果是數(shù)據(jù)緩存集群,也有很多引用,比如memcache和Hazelcast。如果喜歡比較無腦的套餐,可以看看春云。