[Kafka权威指南] Chapter 1. 初识Kafka

What is Kafka?

 

基于“发布/订阅”模型的消息队列

 

Why Kafka?

  1. 多生产者
    1. 方便数据聚合
  2. 多消费者
    1. 多个消费者同时消费同一个消息流,消息可以被多次重复消费。
    2. 多个消费者可以组成一个Group,保证特定消息只消费一次。
  3. 消息持久化
    1. 消费者不需要战战兢兢地消费消息,就算忙不过来,Kafka也能缓一下
  4. 可扩展
  5. 高性能

 

Basic Concepts of Kafka

 

主题Topic & 分区Partition

主题 Topics就好像文件夹一样,用于对消息进行归类。

分区,也就是文件夹内的文件,则用于消息的实际存储。

生产者将消息被追加到分区末尾,消费者从分区头部读取消息。

分区的个数,可能不会只有一个。

因而,从Topic的角度来看,消息的消费顺序可能并不等同于生产顺序。

 

 

消息Message

Message = [可选的Key] + Message Payload

Key主要用于分区的选择,PartitionIndex  = hash(key) % Npartitions

当Key不存在时,Kafka自动在多个分区之间做负载均衡

Kafka不定义Message的结构,应用可以使用JSON等工具进行序列化

相较之下,小数据包对网络负载的影响更大。

因此,同属一个Partition的消息,可以打包压缩后一起传输,称为Batch

如上图示意的一样,当消息被放入分区Partition时会分配一个offset,用于消息的索引。
 

生产者 & 消费者

生产者将消息写入特定的Topic下;

消费者订阅一(多)个Topic,从而消费消息。

消费者在消费时,会记录当前已消费消息的offset。

 

每个消费者都隶属一个消费者Group

每条消息只能被消费者Group里的一个消费者消费(比如说一个程序里的多个线程协同处理,单次消费)

但是,不同消费Group可以同时消费同一条消息(比如说,A, B, C三个系统对同一份数据进行不同的处理,反复消费)

 

Brokers & 集群 & Leader

 Broker就是Kafka服务节点,服务于生产者/消费者。

多个Broker可以构成一个集群。此时,其中一个Broker会被作为controller,负责集群的管理。

 分区就好比一个文件,既可以存在A服务器上,也可以存在B服务器上,甚至都存。

但是,这总要有一个主/副之分。

分区主体所在的Broker,称为Leader。

在处理这个分区时,所有的消费者和生产者都必须连接至Leader

 

 

参考文献

1. 《Kafka权威指南》

2. https://www.cnblogs.com/xubiao/p/5361400.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值