Kafka与RabbitMQ对比
2024-09-01 23:49:41
Infi-chu:
http://www.cnblogs.com/Infi-chu/
Kafka是LinkedIn在2012年发布的开源的消息发布订阅系统,他主要用于处理活跃的流式数据、大数据量的数据处理上
RabbitMQ由Erlang语言开发,主要用在实时的对可靠性要求较高的消息传递上
1.架构模型
- RabbitMQ遵循AMQP协议,RabbitMQ的borker由Exchange、Binding和Queue组成,其中Exchange和Binding组成了消息的路由键,客户端Producer通过连接channel和server进行通信,Consumer从queue获取消息进行消费,有消息确认机制
- Kafka遵循从一般的MQ结构,producer、broker、consumer为中心,消息的消费信息保存在客户端consumer上,consumer根据消费的点,从broker上批量pull数据,无消息确认机制
2.吞吐量
- RabbitMQ吞吐量较低,RabbitMQ支持对消息的可靠传递,支持事物,不支持批量的操作,基于存储的可靠性要求存储可以采用内存或硬盘
- Kafka吞吐量较高,内部采用消息的批量处理,zero-copy机制,数据的存储和获取时候本地磁盘顺序批量操作,复杂度为o(1),消息处理效率较高
3.可用性
- RabbitMQ支持miror和queue,当主queue失效时,miror queue接管
- Kafka的broker支持主备模式
4.负载均衡
- RabbitMQ的负载均衡需要单独的loadbalance进行支持
- Kafka采用zookeeper对集群中的broker、consumer进行管理,可以注册topic到zookeeper上;通过zookeeper的协调机制,producer保存对应的topic的broker信息,可以随机或轮询发送到broker上,并且producer可以基于语义指定分片,消息发送到broker的某个分片上
最新文章
- jquery easyui 1.4.1 验证时tooltip 的位置调整
- 当你在浏览器地址栏输入一个URL后回车,将会发生的事情?
- google play iap 常见问题
- AngularJS学习之全局API(应用程序编程接口)
- 个人搜藏小技巧:eclipse 设定proxy,仍不能连网的问题
- Caused by: java.lang.IllegalStateException: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError
- phpmyadmin导入导出大数据文件的办法
- [Javascript] Ex: concatAll, map and filter
- uboot 连接脚本分析
- 具体解说Android的图片下载框架UniversialImageLoader之磁盘缓存的扩展(二)
- Img垂直居中
- SQL点滴1—SET QUOTED_IDENTIFIER OFF语句的作用
- UVA 10559 Blocks
- 确保 PHP 应用程序的安全 -- 不能违反的四条安全规则
- 手把手带你画一个漂亮蜂窝view Android自定义view
- 单例模式的优化之路(java)
- [Abp 源码分析]四、模块配置
- Java IO(五)——字符流进阶及BufferedWriter、BufferedReader
- 使用htpasswd及nginx auth模块对指定页面进行登录验证
- Java基础学习(一)---Java初识
热门文章
- 【CV现状-1】磨染的初心——计算机视觉的现状:缘起
- 原生js复制粘贴上传图片前后台代码,兼容firebox,chrome, ie11,亲测有效
- JS---DOM---总结绑定事件的区别
- Shell—详解$( )、$(( ))、``与${ }的区别
- styled-components:解决react的css无法作为组件私有样式的问题
- Java题库——Chapter14 JavaFX基础
- 获取本机的IP地址
- c#实现SharedMatting抠图算法
- JPA的entityManager的find、getReference、persisit、remove方法的使用
- JS基础语法---Array对象的方法