简单说一下kafka 与其他消息队列
? RabbitMQ:分布式,支持多種MQ協議,重量級
? ActiveMQ:與RabbitMQ類似
? ZeroMQ:以庫的形式提供,使用復雜,無持久化
? redis:單機、純內存性好,持久化較差
? kafka:分布式,較長時間持久化,高性能,輕量靈活
? RabbitMQ也是常見的消息對列,它支持多種MQ的協議,jms啊,等多種協議等等,它的缺點比較重
? ActiveMQ也和RabbitMQ類似,支持的協議比較多
? ZeroMQ是一個socket的通信庫,它是以庫的形式提供的,所以說你需要寫程序來實現消息系統,它只管內存和通信那一塊,持久化也得自己寫,還是那句話它是用來實現消息隊列的一個庫,其實在storm里面呢,storm0.9之前,那些spout和
bolt,bolt和bolt之間那些底層的通信就是由ZeroMQ來通信的,它并不是一個消息隊列,就是一個通信庫,在0.9之后呢,因為license的原因,ZeroMQ就由Netty取代了,Netty本身就是一個網絡通信庫嘛,所以說更合適是在通信庫這一層,不應該是MessageQueue這一層
?
? Redis,本身是一個內存的KV系統,但是它也有隊列的一些數據結構,能夠實現一些消息隊列的功能,當然它在單機純內存的情況下,性能會比較好,持久化做的稍差,當持久化的時候性能下降的會比較厲害
? Kafka的亮點,天生是分布式的,不需要你在上層做分布式的工作,另外有較長時間持久化,前面的幾個MQ基本消費就干掉了,另外在長時間持久化下性能還比較高,順序讀和順序寫,另外還通過sendFile這樣0拷貝的技術直接從文件拷貝到網絡,減少內存的拷貝,還有批量讀批量寫來提高網絡讀取文件的性能。
?
總結
以上是生活随笔為你收集整理的简单说一下kafka 与其他消息队列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kafka删除topic Note
- 下一篇: 谈一谈RDD 持久化的三个算子:cach