執行緒池和訊息佇列的一些理解

2021-09-21 17:34:11 字數 612 閱讀 1915

1.兩者內部都使用了佇列,如阻塞佇列、優先順序佇列;

2.使用執行緒池時應用伺服器既充當生產者又充當消費者,也是訊息佇列中介軟體的實現者,使用訊息佇列時中介軟體、生產者、消費者可以部署在不同的應用機器上(當然也可以部署在一台伺服器上但很少有人這麼用);

3.出於第2點執行緒池更適合非分布式的系統,但在分布式架構下訊息佇列明顯是更優項;

4.使用訊息佇列會帶來額外的網路開銷;

5.訊息佇列的耦合性更低,可擴充套件性更好,適用於弱一致性的場景,如對log日誌的解耦;

6.訊息佇列自動實現訊息的持久化,中間已經實現了大量功能,如訊息**、訊息拒絕、訊息重試,以及對訊息的一些監控,例如訊息的消費狀態、訊息的消費速率、訊息內容查詢等,使用執行緒池如果需要很多功能還要自己去實現,例如想要知道執行狀態還需要列印佇列數量、計算訊息消費速度;

7.在不同系統間的服務呼叫(呼叫協議也可能不一致)執行緒池很難實現或開銷很大,這時候訊息佇列可以遮蔽不同機器或不同協議的問題;

8.使用訊息佇列會提公升系統的複雜度,網路抖動怎麼辦?最大佇列長度怎麼設定?超時時間又設定多少?qos又設定為多少?消費者多少個比較合適?channel cache size又該設定為多少?業務線可能都是用同乙個mq,你佔資源太多,或者設計不當可能會導致整個mq故障。

對Tomcat執行緒池的一些理解

1.工作機制 tomcat啟動時如果沒有請求過來,那麼執行緒數 都是指執行緒池的 為0 一旦有請求,tomcat會初始化minsaprethreads設定的執行緒數 2.執行緒池作用 tomcat的執行緒池的執行緒數跟你的瞬間併發有關係,比如maxthreads設定為1000,當瞬間併發達到1000...

訊息佇列的一些奇葩問題

1 新建立的訊息佇列,兩個任務通訊過程中,乙個傳送訊息佇列,另乙個任務等待訊息佇列的 時候,這個過程一定要配套出現,就是按套路出牌。怎麼說?假如沒有按套路,第一種情況 任務一 osqpostfront str q,s100 傳送了,訊息佇列,勉強程式能跑起來,但這不是 正規出牌套路,你傳送了訊息,沒...

關於訊息佇列的一些了解

今天看自己的專案,用到的paas其實是中介軟體技術,了解了下什麼是中介軟體,以及訊息中介軟體。首先理解一下message queue。在平常的開發中,應用開發人員完全可以通過傳送和接受訊息的方式來方便的與應用程式進行可靠的通訊,並且訊息的處理為我們提供了方便的訊息傳遞和許多業務處理的可靠的防止故障的...