Kafka学习总结

一. KafKa介绍

  1. Kafka是一种分布式的,基于发布订阅的消息系统,实现业务与数据层解耦,减少冗余和丢失风险,扩展性高,灵活和高峰处理能力强,可恢复性高,具有顺序性,加入了缓冲层提高了执行效率,实现了异步处理机制。

二. Kafka的架构

  1. Broker:Kafka集群包含一个或多个服务器,这种服务器被称为broker
  2. Topic:每条消息有一个类别,这个类别被称为Topic,在逻辑上可以被认为是一个队列queue
  3. Partition:每个Topic包含一个或多个Partition,是物理上的概念
  4. Producer:负责发布消息到Kafka的broker中
  5. Consumer:向Kafka broker读取消息的客户端
  6. Consumer Group:每个consumer属于一个特定的Consumer Group,每个Group可以看成是一个订阅者
  7. Kafka删除旧数据的方法:基于时间,基于partition文件大小
  8. 可以配置每个partition需要备份的个数,每个partition将会被备份到多台机器上,以提高可用性
  9. 每个partition都有一个server为leader负责所有的读写操作,如果leader失效,将会有其它follower来接管,作为leader的server承载了全部的请求压力,因此有多个partitions就意味着有多个leader,kafka会将leader均衡分散在每个实例上,确保整体的性能稳定
  10. Kafka通过递增offset来消费数据,broker是无状态的,不需要标记哪些消息被消费过,不需要保证一个Group只有一个consumer消费,因此不需要锁机制,这是Kafka高吞吐率的原因之一
  11. 对于一个topic,同一个group中不能有多于partitions个数的consumer同时消费,否则将意味着某些consumer将无法得到消息
  12. 如果Topic中replicationfactor为N,那么允许N-1个kafka实例失效,即只要有一个replicas实例存活,可以保证消息正常的发送和接收

三.Producer消息路由

  1. Producer发送消息到broker时,会根据Partition机制选择存储到哪个Partition,从而实现负载均衡。在创建Topic时可以通过参数进行设置。
  2. 发送消息时,可以设置消息的key,例如key为整数,则key与Partition总数取余,则该消息会被发送到该数对应的partition中

四 消息传送机制

  1. Kafka中有3中不同的消息传送机制
  2. at most once: 最多一次,发送一次,无论成败,将不会重发
  3. at least once: 消息至少发送一次,如果没能接收成功,可能会重发,直到接收成功
  4. exactly once:消息只会发送一次,kafka中没有严格的实现,即没有必要

五 Consumer Group

  1. Consumer high level API,同一个Topic的一条消息只能被同一个Consumer Group内的一个consumer消费,但多个Consumer Group可同时消费这个消息
  2. Kafka实现广播的方法:每个consumer有一个独立的Group即可
  3. Kafka实现单播的方法:所有的consumer在同一Group里

六 分配

  1. 当broker启动后,会向Zookeeper注册自己的节点信息,当broker和zookeeper断开连接时,znode会被删除
  2. 每个consumer客户端被创建时,也会像zookeeper注册自己的信息,从而实现负载均衡
  3. consumer设置中,会设置每次fetch的消息大小,当消费一定量的消息之后,将会向zookeeper自动提交offset信息,每消费一条,先本地保存,然后定期提交,可以设置定期提交的时间间隔
  4. 在producer配置时,request.required.acks=0/1/2,其中0表示producer不会等待broker发送ack,1表示当leader接收到消息之后发送ack,22表示当所有follower都同步消息成功后发送ack
  5. producer可以设置同步或者异步,异步则消息会在本地buffer中,进行适时的批量发送,默认为sync同步,建议使用async
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值