kafka简介

背景

  • 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