java延遲隊(duì)列 如何設(shè)計(jì)一個(gè)MQ消息隊(duì)列?
如何設(shè)計(jì)一個(gè)MQ消息隊(duì)列?1. 在上圖中定義發(fā)送和使用消息的過(guò)程2。首先定義消息協(xié)議,如ActiveMQ、stomp、XMPP等3。定義消息協(xié)議,定義消息隊(duì)列需要滿足的場(chǎng)景是否要保證消息的可靠性,必要
如何設(shè)計(jì)一個(gè)MQ消息隊(duì)列?
1. 在上圖中定義發(fā)送和使用消息的過(guò)程
2。首先定義消息協(xié)議,如ActiveMQ、stomp、XMPP等
3。定義消息協(xié)議,定義消息隊(duì)列需要滿足的場(chǎng)景
是否要保證消息的可靠性,必要時(shí)要保證存儲(chǔ)的高可用性
是否要支持同步和異步消息
是否要保證消息隊(duì)列例如rocketmq是高可靠性,卡夫卡是高吞吐量,但不高可靠性。
何時(shí)使用分布式消息隊(duì)列?
據(jù)我所知,消息隊(duì)列目前有幾種用途。
1. 消除峰值并控制流量
例如,在這種情況下,今天標(biāo)題中的百萬(wàn)個(gè)答案需要在完成后寫(xiě)入數(shù)據(jù)庫(kù)。雖然你的MySQL只允許你以每秒300的速度寫(xiě),但是消息隊(duì)列是一個(gè)很好的方法。離線計(jì)算
日志分析,圖像處理,這些都屬于這類應(yīng)用。
例如,您希望能夠根據(jù)網(wǎng)站的日志進(jìn)行監(jiān)視。此時(shí),在不影響web服務(wù)的情況下,可以通過(guò)消息隊(duì)列定期發(fā)送日志流
3。解耦
想象一個(gè)用戶上傳圖片的服務(wù)。用戶只想上傳到空間,但需要添加水印。如果同時(shí)添加水印和用戶記錄,速度會(huì)非常慢。因此,通常的方法是web服務(wù)接受圖像并通過(guò)消息隊(duì)列將其轉(zhuǎn)發(fā)給水印服務(wù)。web服務(wù)本身不會(huì)阻止。
您所說(shuō)的分布式隊(duì)列只是為了適應(yīng)高吞吐量消息隊(duì)列的優(yōu)化實(shí)現(xiàn)。
本人本科大二,隨手可以寫(xiě)java網(wǎng)課上的倉(cāng)儲(chǔ)系統(tǒng)(無(wú)法聯(lián)網(wǎng),圖形化界面,sql),在業(yè)內(nèi)算什么水平呢?
我做軟件已經(jīng)20多年了。編程不僅是關(guān)于使用什么語(yǔ)言,而且是關(guān)于思考。編程語(yǔ)言只是一種工具。如果你熟悉一個(gè)工具,那就沒(méi)什么值得驕傲的了,除非你想把編程和詩(shī)人比較一下。一個(gè)軟件要實(shí)現(xiàn)哪些功能,這些功能用戶如何使用才能酷、易用、穩(wěn)定如新是最重要的。否則,就是半衰期,在這個(gè)領(lǐng)域沒(méi)有太大前途