kafka笔记

1、   Producer: 生产者,生产数据,就是我们客户端代码,写数据的

2、   Consumer:消费者:负责处理kafka服务里面消息

3、   Consumer Group/Consumers:消费者组:就是kafka独特处理轮询还是广播。

  轮询:消费者每一个处理一条,轮排

  广播:一条信息,多个消费者同时处理,比如,日志,写了文本日志,还写数据库日志

4、   Broker:就是kafka服务,一个Broker可以创建多个topic

5、   Topic:就是一个写入broker主题,一个kafka集群里面可以有多个Topic,为了区分业务和模块使用

6、   Partition:就是把一个topic的信息分成几个区,利用多个节点,把多个分区,放在不同节点上面,实现负载均衡,kafka内部实现的。

7、   Replica:副本,就是防止主节点宕机,然后数据丢失了,保证高可用

8、   Offset:偏移量,就是消息的主键,生产者负责写数据的时候,写进去然后偏移量,消费者消费数据,知道数据消费到什么地方,不要重复消费

9、   Kafka数据写入顺序,如果默认一个分区,则是有顺序;如果是多个分区,则不能保证数据的顺序

10、 Ack:生产者只有收到kafka节点返回的ack,才认为消息发送成功。有三种模式,

  ack=0(建议):性能最高,但是当写入到leader之后,返回ack,如果数据还没有落盘(写进磁盘),就宕机了,会数据丢失。日志收集系统,iot设备上传信息,都选择它,性能最高,可能会丢。。

  ack=1.性能中等,当数据写入leader并且落盘,然后返回ack,当落盘返回ack之后,leader挂了,则新的leader还没有备份数据,则数据丢失,只能通过人工参与找到丢的数据。。比较鸡肋。。食之无味弃之可惜。。

  ack=-1,性能最差,当leader和所有的副本节点都备份完成之后,再返回ack。肯定肯定不会有数据丢失,但是有了其他的问题。。当数据都备份了,然后此时此刻leader没有返回ack,然后宕机,则新的副本替代它成为leader,然后客户端生产者因为没有收到ack,所以补偿重试,再次发送信息,最后,数据重复。。可以结合配置,开启幂等性,发送的数据的时候,服务端会验证我们信息的唯一性,如果之前发送过,就不在接受,然后只会保留一条相同的信息。。 

11、ISR:同步的副本集合,维护当前还在存活办事的副本,解决防止当我们一个副本出现问题时候,不能正常的返回ack。根据节点和zookeeper的心跳频率(可配置),多久时间没有进行心跳,则认为挂了,从ISR集合移除,当心跳跟的上,再进入集合

12、多个分区要保证幂等性,要使用事务(分布式事务)

13、Kafka为什么可以高效读写:1、批量发送(根据时间、或者条数,满足其一就发送批量发送)2、顺序读写(在磁盘中顺序存放,不用费时找空间)3、零copy

14、消费端的签收分为自动(取到数据后就签收,如果消费端处理该消息时失败,则会丢数据)和手动(消费端处理消息成功后再提交签收,但如果签收提交时失败,可能重复消费,可以配合redis来解决)

15、消费模式有lastest(消费自从客户端启动后生产者生产的消息)、earlier(消费至今还未消费过的数据)、error(没数据可消费时会报错,一般不用)

16、Kafka和zookeeper配套使用,可视化客户端kafka tool连接的是zookeeper暴露出来的端口,代码里使用连接的是broker暴露的端口:

posted @ 2022-03-15 20:31  暗,伏!  阅读(135)  评论(0编辑  收藏  举报