欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Kafka学习笔记【一】-原理

程序员文章站 2022-06-13 19:30:05
...
一、kafka的重要概念
Kafka学习笔记【一】-原理
            
    
    博客分类: 数据交换 kafka
1. kafka 分为 Producer、Consumer、Broker,基于topic发布与订阅消息。
2. 一个topic可以分多个partition,每个partition可以分布在不同的broker中。
3. 物理存储主要依赖partition。
4. 每个totic可以设置 Replications,因此物理存储partition也会有多个Replications。partition的replication中只有一个leader作为读写用。
5. producer负责产生消息,当往broker中放消息失败时可重发。
6. consumer负责消费消息,并维护消息消费pos, 这里的pos是对应partition中的位置。
7. 一个topic有多个partition的时候,每个partition能够保证内部有序,但不能保证跨partition的顺序。因此绝对有序,每个topic只能有一个partion,这影响性能。如果一个topic分多个patition,多个patition可以并发读写,可以提升性能,但是只能保证相对有序。
Kafka学习笔记【一】-原理
            
    
    博客分类: 数据交换 kafka
8. 一个topic可以被多个consumer group订阅,  每个consumer维护自己的pos.broker可以设置消息的生存时间,只有超过这个时间才会被删除,否则消息将一直存留。只要消息还没有被删除,consumer也可以更改pos重复消费。
9. consumer group包含多个consumer, 一个partition只能被consumer group中的一个consumer消费。因此consumer group中的consumer数量建议小于等于topic的partition数量,多了就会有consumer没有分配partition的浪费。
Kafka学习笔记【一】-原理
            
    
    博客分类: 数据交换 kafka
10.相同consumer group中的consumer可以并发消费同一个topic,因为读写的是不同的partition,因此提升了性能,且保证一个消息只被消费一次。
11.  Kafka中的Producer和consumer采用的是push-and-pull模式, 即producer推消息,consumer主动拉消息。
12. producer 向kafka推消息的时候,可以设置(acks)等待多少个replications响应才返回。设置为0就是异步,可以提升性能,但有可能丢失。建议设置为1.
13、Kafka支持以消息集合为单位进行批量发送,以提高push效率
14、Kafka中会把消息持久化到本地文件系统中,持久化是批量刷新,保持效率。
15、建议消息大小不要超过1M
16、默认情况下,Kafka根据传递消息的key来进行分区的分配,即hash(key) % numPartitions
17、kafka server.properties中配置的num.partitions为集群总的partitions数量。如果集群中的机器配置的num.partitions不一致,会提示跟lead节点不一致。
  • Kafka学习笔记【一】-原理
            
    
    博客分类: 数据交换 kafka
  • 大小: 40.1 KB
  • Kafka学习笔记【一】-原理
            
    
    博客分类: 数据交换 kafka
  • 大小: 19.1 KB
  • Kafka学习笔记【一】-原理
            
    
    博客分类: 数据交换 kafka
  • 大小: 26.2 KB
相关标签: kafka