认识KafKa-

版权声明:路漫漫其修远兮,吾将上下而求索。 https://blog.csdn.net/Happy_Sunshine_Boy/article/details/86345414

Producer and Consumer

  • Producer通过主动Push的方式将消息发布到Broker,Consumer通过Pull从Broker消费数据
Pull的优点
  • Consumer按实际处理能力获取相应的数据,不会被压垮
  • Broker实现简单
  • 如果处理不好,实时性相对不足

KafKad读写机制

  • 每个partition有一个leader和若干个Follower(replica)
    在这里插入图片描述
  • 用户的读写都是通过Leader完成
  • Follower从Leader拉取数据
    在这里插入图片描述

KafKa vs zookeeper

Leader,Follower
  • 所有的Follower都可提供读服务
  • 写操作都会被forward到Leader
  • Client与Server通过NIO通信
  • 所有的写操作全局串行化FIFO执行
    在这里插入图片描述

Consumer Group

High Level Consumer
  • 高层抽象,屏蔽掉细节,提供丰富的语义,适合大多数应用场景
  • 客户只需要从KafKa顺序读取数据,而无需关心offset等具体细节
  • 语义级别控制同一条消息只被某一个Consumer消费或被所有Consumer消费
  • 使用High Level Consumer 的客户程序提供给KafKa一个名字,这个名字被称为Consumer Group
  • Consumer Group是整个KafKa集群全局唯一的,而非针对某个Topic
  • 每个High Level Consumer实例都属于一个Consumer Group,若不指定则属于默认的Group
  • High Level Consumer从某个Partition读取的最后一条消息的offset会被存于KafKa的一个专用topic中
  • 消息被消费后,并不会被删除,只是相应的offset加一
  • 对于每条消息,在同一个Consumer Group里,只会被一个Consumer消费
  • 不同Consumer Group可消费同一条消息

Consumer Balance

  • 将Topic下的所有Partition排序
  • 对Consumer Group下所有Consumer排序
  • N=size§/size©,向上取整
  • 将N个Partition分配给C(每个Consumer分配N个Partition)

猜你喜欢

转载自blog.csdn.net/Happy_Sunshine_Boy/article/details/86345414