生產者傳送訊息到broker的可靠性
服務端確認機制
交換機的可靠性(路由保證)
佇列的可靠性
消費端的可靠性
消費者確認機制
為什麼訊息會重複?
消費端**響應:假如生產者未收到**,重發(重發間隔、重發次數)。
如何冪等處理訊息
業務訊息必須有唯一的業務id,訊息id。即msgid、bizid。
資料庫中的唯一業務id保證冪等。
redis存訊息id保證冪等。
rabbitmq集群
集群目的:高可用、負載拓展
集群如何識別:通過erlang.cookie
集群節點型別:disc(元資料儲存在磁碟中)、ram(元資料在記憶體中)。至少需要乙個磁碟節點。
vrrp 虛擬路由冗餘協議
keepalived:負載、高可用
誰來建立exchange、queue:消費者
訊息佇列的作用和使用場景
削峰、非同步、解耦
channel和vhost的作用是什麼
復用連線、vhost提公升硬體利用率,資源隔離
rabbitmq有哪些路由方式,適合在什麼場景使用
direct、topic、fanout、headers
交換機和佇列、佇列和消費者的繫結關係
多對多無法被路由的訊息去了**
備份交換機;假如設定了mandatory為true,有**訊息;假如沒其他措施,則會丟失
訊息在什麼時候會變成死信
訊息被拒絕;訊息到達過期時間;佇列已滿。
rabbitmq怎麼實現延遲佇列
通過死信佇列+ttl,訊息過期後會到死信交換機中,進一步到達死信佇列。
訊息丟失?
傳送者->交換機->佇列->消費者,從整個鏈路分析
乙個佇列最多可以存多少條訊息
取決於硬體配置,和最大數量引數。
如何提高消費速率
增加消費者
如何動態建立消費者和佇列
在listenercontainer設定消費者數量
保證訊息順序性
乙個佇列對應乙個消費者
訊息堆積怎麼處理
尋找堆積的原因,**問題重啟。速率問題,優化**。清空佇列之後重發訊息。
mq選型分析
git gerrit 實踐經驗
用git一段時間,體驗還是比較好。尤其沒次改一批檔案,檔案列表非常清晰。和gerrit結合,diff,review 都非常方便,尤其你不需要自己手動提交到伺服器 有些缺點 如果多人改同乙個目錄,不是很方便。有些體驗如下 1 工作前都用 repo start dev 開始乙個branch 再工作 2 ...
Socket 網路程式設計實踐經驗
會話過期問題 同步還是非同步問題 資料快取問題 完全斷開連線問題 首先通過對比法來了解兩者不同的特性 下面列出在生產專案中應用 socket 所需要注意的幾點 網路斷開重連問題 連線會話和身份認證問題 同步和非同步問題 資料快取問題 完全斷開連線問題 的確,socket 連線在理想的網路環境下是持久...
專案管理各環節實踐經驗
開始做專案是一件令人激動的事情,專案組的每個成員都面臨著新的機會和挑戰。但同時也多少有些令人不安,大家都會考慮這樣乙個問題 我們如何按時完成乙個高質量的專案?因為在專案開始之前往往存在許多不確定的因素,它們也許會一直持續到整個專案結束。所以在專案準備階段,也有許多任務作要做。前提條件與主要任務 開始...