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):消息发给服务器,不关心是否正常到达。