kafka中的coordinator

  • Post author:
  • Post category:其他



1、Transaction Coordinator

Kafka事务


Transaction Coordinator 事务的交易协调员

PID —通过—>

Transaction Coordinator---获得--->

Transaction ID

为了实现跨分区跨会话的事务,需要引入一个全局唯一的Transaction ID,并将Producer获得的PID和Transaction ID绑定。这样当Producer重启后就可以通过正在进行的Transaction ID获得原来的PID。

Kafka引入了一个新的组件Transaction Coordinator。Producer就是通过和Transaction Coordinator交互获得Transaction ID对应的任务状态。Transaction Coordinator还负责将事务所有写入Kafka的一个内部Topic,这样即使整个服务重启,由于事务状态得到保存,进行中的事务状态可以得到恢复,从而继续进行。

2、consumer coordinator

consumer coordinator存在的唯一目的就是保存consumer提交的位移offset。

consumer需要定期向Kafka提交自己的位置信息,这一过程称为位移提交(offset commit)。consumer会在所有的broker中选择一个broker作为consumer group的coordinator,用于实现组成员管理、消费分配方案制定以及位移提交等。选择该coordinator的依据就是kafka的内置topic(_consumer_offsets)。该topic与普通topic一样,配置多个分区,每个分区有多个副本,它存在的唯一目的就是保存consumer提交的位移。

Kafka Transaction



Transaction Coordinator

维护

Transaction Log

,该log存于一个内部的Topic内。由于Topic数据具有持久性,因此事务的状态也具有持久性。

Producer并不直接读写

Transaction Log

,它与

Transaction Coordinator

通信,然后由

Transaction Coordinator

将该事务的状态插入相应的

Transaction Log


Transaction Log

的设计与

Offset Log

用于保存Consumer的Offset类似。



版权声明:本文为qq_35139965原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。