Kafka学习笔记(二、Kafka中的角色)

目录:

  • Kafka Broker和集群
  • Kafka主题和分区
  • Kafka Producer和Consumer

Kafka Broker和集群:

1、Broker:一个独立的Kafka服务器被称为broker,它用于接收生产者的消息,并设置消息的偏移量,还会把消息保存到磁盘中

2、集群:多个Kafka实例组成Kafka集群,每个实例都被称为broker。其中每个Kafka集群中都会有一个节点被选为领导节点,也叫做broker中央控制器。

broker中央控制器的主要工作:

  • 管理整个集群的分区:当某个topic增加分区数量的时候,由中央控制器管理重新分配分区的工作。
  • 监控副本的状态
    • leader副本故障时,由中央控制器重新为改partition选举新的leader副本。
    • 当检测到同步列表发生变化时,由中央控制器通知所有broker更新其缓存的元数据。

broker中央控制器选举过程:每个Kafka启动的时候都会创建一个KafkaController对象,但集群中只能有一个leader。Kafka的做法是每个KafkaController都会去指定的zookeeper路径下创建临时节点,只有第一个成功创建的才能成为leader节点,其余的都是follower。当leader节点发生故障时,所有的follower节点都会都到通知,然后去竞争在改路径下创建节点,从而选举出新的leader节点。

Kafka主题和分区:

1、主题:数据记录发布的地方,可以用来区分业务系统。Kafka中的Topic是多订阅者模式,一个topic可以拥有一个或多个消费者来订阅它。

2、分区:对于每个topic,Kafka集群都会有一个或多个分区。分区的角色分为leader分区和follower分区,每个分区都是有序且顺序不便的数据集,并且不断的追加到结构化的log文件中。

Kafka Producer和Consumer:

生产者发送模式:

  • 同步(synchronize):调用send方法发送消息后会返回一个Future对象,可以通过Future对象知道消息是否发送成功(Kafka默认同步,即producer.type=sync)。
  • 异步(asynchronize):调用send方法并制定一个回调函数,服务器再响应时调用该函数。
  • 发送后就不管了(OneWay):消息发给服务器,不关心是否正常到达。
原文地址:https://www.cnblogs.com/bzfsdr/p/12181264.html