Kafka - 分布式消息队列

 

 

Kafka简介

Kafka原理

Kafka使用

 

 

Kafka简介

概念

  • 基于发布/订阅的分布式消息系统
  • 由Linkedin开发,用Scala语言编写

特性

  • 消息持久化:采用时间复杂度O(1)的磁盘存储结构,即使TB级以上数据也能保证常数时间的访问速度
  • 高吞吐:即使在廉价的商用机器上,也能达到单机每秒10万条消息的传输
  • 高容错:多分区多副本
  • 易扩展:新增机器,集群无需停机,自动感知
  • 同时支持离线、实时数据处理

 

 

Kafka原理

基本概念

  • Broker(代理)
    • Kafka的一个实例或节点,一个或多个Broker组成一个Kafka集群
  • Topic(主题)
    • Topic是Kafka中同一类数据的集合,相当于数据库中的表
    • Producer将同一类数据写入同一个Topic,Consumer从同一个Topic中读取同类数据
    • Topic是逻辑概念,用户只需指定Topic就可以生产或消费数据,不必关心数据存于何处
  • Partition(分区)
    • 分区是一个有序的、不可修改的消息队列,分区内消息有序存储
    • 一个Topic可分为多个分区,相当于把一个数据集分成多份,分别存储不同的分区中
    • Partition是物理概念,每个分区对应一个文件夹,其中存储分区的数据和索引文件
  • Replication(副本)
    • 一个分区可以设置多个副本,副本存储在不同的Broker中
  • Producer(消息生产者)
    • 向Broker发布消息的客户端
  • Consumer(消息消费者)
    • 从Broker消费消息的客户端
  • Consumer Group(CG,消费者组)
    • 每个Consumer都隶属于一个特定的CG
    • 一条消息可以发送给多个不同的CG,但一个CG中只能有一个Consumer读取该消息
  • Zookeeper
    • Kafka将元数据保存在Zookeeper中
    • 负责Kafka集群管理,包括配置管理、动态扩展、Broker负载均衡、Leader选举,以及Consumer Group变化时的Rebalance等

 

工作机制

  • 消息在Broker中按Topic(主题)进行分类,相当于为每个消息打上标签
  • 一个Topic可划分为多个Partition(分区)
  • 每个Partition可以有多个Replication(副本)
  • 消息存储在Broker的某一Topic的某一Partition中,同时存在多个副本
  • Partition是一个FIFO队列,写入消息采用在队列尾部追加的方式,消费消息采用在队列头部顺序读取的方式
  • 一个Topic可分为多个Partition,仅保证同一分区内消息有序存储,不保证Topic整体(多个分区之间)有序

 

 

 

 

Kafka使用

 

 

 

 

— EOF —

 

posted @ 2023-10-19 00:38  HOUHUILIN  阅读(9)  评论(0编辑  收藏  举报