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