生產(chǎn)消費者模型 如何設(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是高可靠性,卡夫卡是高吞吐量,但不高可靠性。
操作系統(tǒng)中生產(chǎn)者消費者問題。消費者進程中,wait(full)和wait(mutex)順序不能顛倒,能否詳細說明為什么不?
也許網(wǎng)上有很多人在談?wù)摗?/p>
這是我自己的看法。首先,如果緩沖池是空的,就沒有產(chǎn)品,full=0。這里,我們還應(yīng)該強調(diào)mutex是一個全局mutex信號量。這時,消費者是第一位的。他的程序如下:wait(mutex)被掛起,mutex被占用。等待(滿)不管有多少消費者來,他們都在互斥隊列中排隊,這是死鎖的。此時,生產(chǎn)者的程序wait(empty)can wait(mutex):它也被掛起,因為mutex被消費者使用,也就是說,緩沖區(qū)被消費者占用了!生產(chǎn)者和消費者都在等待,系統(tǒng)陷入僵局。我希望你明白我的意思。