StateMachine
2016-08-10 21:35:45 0 举报
StateMachine(状态机)是一种编程模型,用于描述对象在其生命周期中可能经历的各种状态以及这些状态之间的转换。状态是对象的属性或条件,而转换则是根据特定事件触发的。状态机的主要优点是能够清晰地表示复杂的逻辑和控制流程,使得代码更容易理解和维护。在许多编程语言中,都有现成的库或框架支持状态机的实现,如Python的`transitions`库、Java的`javax.statemachine`包等。
作者其他创作
大纲/内容
NonExistentPartition
OnlineReplica
发送leaderAndIsr信息到当前replica
OnlinePartition
仅状态变化
NonExistentReplica
ReplicaDeletionSuccessful
1)选举出partition的leader;2)在zk上/brokers/topics/[topic]/partitions/[partitionId]/state下存放leaderAndIsr信息,同时更新到ControllerContext中;3)向partition下所有replica广播leaderAndIsr信息;
NewPartition
1)重新选举leader;2)在zk上/brokers/topics/[topic]/partitions/[partitionId]/state下存放leaderAndIsr信息,同时更新到ControllerContext中;3)向partition下所有replica广播leaderAndIsr信息;
更新ControllerContext中的AR列表
zk中存在leader信息时,从zk中获取leaderAndIsr信息,发送给当前Replica
仅更新状态
将zk中partition的AR信息更新到ControllerContext;
1)发送StopReplicaRequest到当前replica;2)将当前replica从所在partition的ISR中移除,如果当前topic不处于删除队列中,向新的replica列表广播新的ISR信息;在这个过程中,如果删除的replica = leader,将leader设置为Noleader;之后将leaderAndIsr更新到zk;
发送StopReplicaRequest到当前Replica
ReplicaDeletionStarted
OfflinePartition
NewReplica
OfflineReplica
ReplicaDeletionIneligible
0 条评论
下一页