Kafka设计目标:

  • 高吞吐率 在廉价的商用机器上单机可支持每秒100万条消息的读写。
  • 消息持久化 所有消息均被持久化到磁盘,无消息丢失,支持消息重放。
  • 完全分布式 Producer,Broker,Consumer均支持水平扩展。
  • 同时适应 在线流处理离线批处理 。对接spark及hadoop。

Kafka架构图:

  • Broker Kafka集群包含一个或多个服务器,这种服务器被称为broker。
  • Topic 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
  • Partition Parition是物理上的概念,每个Topic包含一个或多个Partition.
  • Producer 负责发布消息到Kafka broker。
  • Consumer 消息消费者,向Kafka broker读取消息的客户端。
  • Consumer Group 每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。

消息发送的流程:

  1. Producer根据指定的partition方法(round-robin、hash等),将消息发布到指定topic的partition里面
  2. kafka集群接收到Producer发过来的消息后,将其持久化到硬盘,并保留消息指定时长(可配置),而不关注消息是否被消费。
  3. Consumer从kafka集群pull数据,并控制获取消息的offset

results matching ""

    No results matching ""