Rocket原理

1.延遲消息
2.死信消息
3.有序消息
rocketMQ隻能做到"相對有序",而不是全局有序,即Topic下的某個Queue内的消息是有序的。
需要開發者實作MessageQueueSelector邏輯
4.事務消息
業務場景:保證本地事務和投遞到下遊的消息,要麼一起成功,要麼一起失敗。一般用于分布式事務的場景
5.存在的問題
-
所有的消息共用commitlog檔案,預設過期14天,這個規則是針對所有topic的中的消息。kafka消息過期時間可以支援到topic級别。
-
所有的消息共用commitlog檔案,大吞吐場景下,假如有長時間的延遲隊列(比如7Days,1month這種)這種情況下消息可能不在pageCache中,導緻讀取磁盤,會影響整體的性能。
-
假如slave節點當機很久,slave重新開機後,會從master節點拉取曆史消息進行同步,會産生大量磁盤io,大幅降低pageCache命中率,導緻吞吐量降低
6.總結
-
支援積壓大量消息
-
自動容災,高可用
-
獨立維護各topic的index,pagecache使用率更高
-
不依賴zk,容易運維
-
不支援個性化topic過期時間配置