0-前言
消息中間件在高並發系統中作用尤為重要,幾乎必不可少,現在幾乎都是rabbitMQ、rocketMQ、kafka的天下,
其他的請忘了它們;
1-消息中間件的作用
提升系統性能;系統解耦;大流量削峰;
2-rabbitMQ、rocketMQ、kafka對比
kafka:
優點:
1、高吞吐量、高性能,單機十幾萬QPS
2、Kafka支持集群部署
缺點:
1、有可能會造成數據丟失
2、功能單一,主要就是收發消息;缺少高級功能;
rabbitMQ:
優點:
1、保證數據不丟失;
2、高可用,有高級功能;如消息重試、死信隊列等
缺點:
1、性能較低,QPS幾萬;
2、集群線性擴展麻煩;
3、erlang實現,懂得人不多,二次開發困難;
rocketMQ:
優點:
1、高吞吐量、高性能,單機十萬QPS
2、保證數據絕對不丟失
3、支持大規模集群部署,線性擴展方便
4、支持各種高級的功能,如延遲消息、消息回朔等
5、java實現,二次開發方便
缺點:
1、比kafka性能略低
3-如何選擇
1、小項目可以選擇rabbitMQ,性能略低,但使用和部署都簡單;
2、性能要求極高,且能允許丟失部分數據,可以選擇kafka,比如大數據日志處理相關場景;
3、除以上之外,rocketMQ無疑是一步到位的方案;
實際項目中,rocketMQ是首選;個人牆裂推薦;
實際上,除了大數據處理上適當考慮增加kafka,其他時候,rocketMQ就已經一勞永逸了;