消息中间件Kafka 介绍

  • 为什么选择Kafka

    1. 多个生产者
    2. 多个消费组
    3. 基于磁盘的数据存储
    4. 伸缩性
    5. 高性能

  • 使用场景

    1. 活动跟踪
      前台用户活动的相关信息,例如页面访问次数和点击量,缓冲用户的资料。在大数据生态,为机器学习系统提供数据。
    2. 传递消息
    3. 度量指标和日志记录
    4. 提交日志
    5. 流处理

  • 主题和分区

  • Kafka的消息通过主题进行分类,主题可以被分为若干个分区,一个分区就是一个提交日志。消息以追加的方式写入分区,然后以先入先出的顺序读取。分区可以分布在不同的服务器上,也就是说,一个主题可以横跨多个服务器。
    消息中间件Kafka 介绍
  • 生产者和消费者

    • 生产者
      消息发布者或者写入者,一般情况下,一个消息会被发布到一个特定的topic上。不过,可以通过消息键和分区器把消息写到指定的分区。

    • 消费者
      消费者订阅一个或多个topic,并按照消息写入的顺序读取它们。消费者通过检查消息的偏移量来区分已经读取过的消息。偏移量是另一种元数据,它是一个不断递增的整数值,在创建时,Kafka会把它添加到消息里。消息偏移量保存在zookeeper上,如果消费者关闭或者重启,它的读取状态不会丢失。

    • 消费组
      消费者是消费组的一部分,也就是说,会有一个或多个消费组共同读取一个topic。每个分区只能被一个消费者读取。
      消息中间件Kafka 介绍

  • broker和集群

  • 一个独立的Kafka服务节点被称为broker。broker接收来自生产者消息,为消息设置偏移量,并提交消息到磁盘保存。broker为消息者提供服务,对读取分区的请求作出响应,返回已经提交到磁盘上的消息。
    broker是集群的组成部分。每个集群都有个broker同时充当了集群控制器的角色(自动从集群的活跃成员中选举出来)。控制器负责管理工作,包括将分区分配给broker。在集群中,一个分区从属于一个broker,该broker被称为分区的首领。一个分区可以分配给多个broker,这个时候会发生分区复制。
    消息中间件Kafka 介绍