Apache kafka 木筏日志应记录哪些事件

Apache kafka 木筏日志应记录哪些事件,apache-kafka,distributed-system,raft,Apache Kafka,Distributed System,Raft,我对驱动我系统状态机的木筏日志有点困惑 以卡夫卡为例, 每个分区都有一个先导&一个副本,这是否意味着每个分区都有一个RAFT实例 如果是,那么每次生产者发送一条记录时,是否应该在附加到Kafka分区之前将其保存在RAFT日志中 如果否,那么卡夫卡如何在故障期间保持leader&replica同步 共识让我困惑 国际海事组织有多个共识,我不确定在哪里使用救生筏,在哪里不需要救生筏。e、 集群领导者选举,分区领导者,甚至复制对我来说都是一种共识 关于木筏的其他疑问 据说,追随者只有在提交完

我对驱动我系统状态机的木筏日志有点困惑

以卡夫卡为例,

  • 每个分区都有一个先导&一个副本,这是否意味着每个分区都有一个RAFT实例
如果是,那么每次生产者发送一条记录时,是否应该在附加到Kafka分区之前将其保存在RAFT日志中

如果否,那么卡夫卡如何在故障期间保持leader&replica同步

  • 共识让我困惑
国际海事组织有多个共识,我不确定在哪里使用救生筏,在哪里不需要救生筏。e、 集群领导者选举,分区领导者,甚至复制对我来说都是一种共识

关于木筏的其他疑问

  • 据说,追随者只有在提交完成后才应该更新他们的状态机,如果追随者被隔离并最终提交错误的事件呢?这可能吗?如果是,状态机是否应该具有回滚逻辑?根据我在弹性搜索方面的经验,对于过时的事件,应该始终有一个回滚机制

我正在尝试实现类似于卡夫卡的东西以供学习,我甚至不知道如何开始实现一个,我不确定我是否理解这个问题,但卡夫代码是开源的,我已经尝试研究过代码。这很难理解。我认为是什么使它变得复杂,因为我不知道分布式系统是如何设计的,所以我了解所有管理任务,如创建主题、分配分区、成员身份、主副本和副本都应该通过raft日志,以便所有节点都是一致的。我的主要疑问是主副本和副本如何保持同步?每个事件都应该通过筏式日志吗?这是不是太大的开销?这表明复制不需要经过一致的协议。对我来说,困惑在于复制本身就是primary和ReplicateNevermind之间的共识。这是最后一个成功复制的偏移量