背景
- kafka最初为limkedIn的一个内部基础服务
- 最早的设计观念是、把数据看作流、消费者、订阅和发布各种各样的消息、这在大数据上应用非常广泛
组成部件
- 一个部件broker、每一个broker就是一个单独的服务器
- 每一个集群有一个broker作为集群控制器角色【分区选举】、与rocketmq区别是、rocketmq使用了nameserver作为注册中心
- 多级群中、kafka提供了一个mirrorMaker工具实现集群间消息复制
- mirroMaker核心部分是一个生产者一个消费者、中间是一个队列、也是kafka的最基本原理、实际上在复杂的集群环境中、对于数据的可靠性更复杂些
{———-}
发展
- kafka的愿景做一个数据生态系统、提供消息发布和消息订阅、
使用场景
- 活动跟踪、点击量
- 传递消息
- 度量指标和日志记录
- 提交日志
- 流处理
- 结合hadoop做数据流的队列
技术选型
- rocketmq、rabbitmq、kafka
- 没有谁好谁坏
- kafka起源最早、解决消息流处理问题、最早解决监控平台对各个服务模块的消息监控、
- rabbitmq、采用AMQP协议开发、建立了最早的消息模型、定义了消息驱动模式、
- rocketmq、类似于kafka、不过语言是java、经历了阿里的双十一足以证明它的性能。
个人见解
- 吞吐量优先、消息丢失小事、选择kafka、kafka的吞吐量要强一个量级
- 稳定不丢消息:rocketmq、tabbitmq、
- rabbitmq底层是erlang语言、erlang语言特性、并发性能优秀、
- rocketmq底层netty、异步机制优秀
- 实时性要求高、同时又要求高的吞吐量 rabbitmq
- 非实时性要求高、同时又要求高吞吐量 rocketmq