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