image.png
Kafka/RocketMQ選型:
Kafka高吞吐量钝侠,適合日志處理,大數(shù)據(jù)這類對(duì)于消息丟失不敏感的場(chǎng)景
RocketMQ:適合實(shí)時(shí)業(yè)務(wù)處理
使用場(chǎng)景
- Kafka 適合對(duì)于延遲不敏感够颠、批量型橱赠、Topic 數(shù)量可控止吐、對(duì)于消息丟失不敏感的場(chǎng)景。比如大數(shù)據(jù)場(chǎng)景的 MySQL-2Hive钞澳、MySQL-2-Flink 的數(shù)據(jù)流通道,日志數(shù)據(jù)流通道等涨缚。
- RocketMQ 適用于金融轉(zhuǎn)賬消息轧粟、訂單狀態(tài)變更消息、手機(jī)消息 Push 等業(yè)務(wù)場(chǎng)景。這些場(chǎng)景 Topic 數(shù)量通常過萬兰吟,對(duì)于消息延遲和丟失極度敏感通惫,數(shù)據(jù)通常是論條處理。對(duì)于海量數(shù)據(jù)的問題混蔼,一般地橫向擴(kuò)容完全可以解決履腋。
主要區(qū)分
性能:Kafka吞吐量更高,單機(jī)百萬/秒拄丰;RocketMQ單機(jī)10萬/秒府树。
特殊消息:Kafka不支持定時(shí),事務(wù)消息等
支持隊(duì)列數(shù):Kafka超過64個(gè)隊(duì)列(partition)性能下降嚴(yán)重料按,而RocketMQ最高支持5萬個(gè)隊(duì)列
原因:首先都是順序?qū)懭胙傧溃贿^ RocketMQ 是把消息都存一個(gè)文件中,而 Kafka 是一個(gè)分區(qū)一個(gè)文件载矿。每個(gè)分區(qū)一個(gè)文件在遷移或者數(shù)據(jù)復(fù)制層面上來說更加得靈活垄潮。但是分區(qū)多了的話,寫入需要頻繁的在多個(gè)文件之間來回切換闷盔,對(duì)于每個(gè)文件來說是順序?qū)懭氲耐湎矗菑娜挚雌鋵?shí)算隨機(jī)寫入,并且讀取的時(shí)候也是一樣逢勾,算隨機(jī)讀牡整。而就一個(gè)文件的 RocketMQ 就沒這個(gè)問題。
https://github.com/apache/rocketmq/blob/master/docs/cn/architecture.md