sync
2016-11-01 17:00:06 0 举报
Sync是一种技术,用于将数据或文件从一个设备或系统同步到另一个。它确保所有相关设备上的数据都是最新的和一致的。例如,当你在笔记本电脑上更改了一个文件,sync技术可以自动将这个更改应用到你的手机或平板电脑上。这样,无论你在哪里,都可以访问到最新的信息。Sync可以通过云服务、网络驱动器或其他连接方式实现。它是现代数字化生活中的重要组成部分,使我们能够无缝地在不同设备之间共享和访问数据。
作者其他创作
大纲/内容
Leader给Follower发送同步开始消息
Follower向Leader发送注册消息,消息中包括该Follower本地保存的最大事务ID、同步序列号、事务字符串等信息。然后把同步状态修改为s_register
一致
有
不合法
Follower在收到该同步开始消息之后,检查该消息中包含的同步序列号与Follower自己维护的同步序列号是否一致
Leader节点上对应数据库的工作线程从请求队列中取出这个同步请求,将请求转发给Leader节点的请求处理模块
正确
Follower收到这个同步消息之后,检查同步序列号和同步状态是否正确
生成一个LearnerHandler对象,并把该对象放入mLearners容器中
相同
结束
不一致
没有
依据前面已经确定的同步模式,Leader给该Follower发送同步消息,并把Leader自己维护的同步状态修改为 s_synced
生成LeaderSyncContext同步上下文对象,并初始化这个对象
该同步请求被放入Leader节点上对应数据库工作线程的请求队列中,等待工作线程处理
Follower记录同步开始时间点,初始化同步序列号,新建Follower同步上下文对象
合法
Follower按照同步消息中的信息更新FollowerSyncContext对象中的成员,更新完成后,把同步状态修改为 s_step2
Leader生成一个同步完成消息,并把该消息放入同步消息容器mSyncMsgs的最末端
根据各参数决定同步模式,并检查日志一致性
Leader节点上的请求处理模块在收到该请求后,首先检查请求类型,然后开始处理这个同步请求。
开始
检查发出同步请求的该节点是否有LearnerHandler对象
检查LearnerHandler对象中保存的同步序列号与该同步请求的同步序列号是否相同
将同步请求转交给LearnerHandler对象来处理
网络模块收到Follower发出的注册消息之后,将这个消息转交给Leader的消息处理模块,Leader的消息处理模块解析收到的网络消息包,生成对应的同步请求
更新Follower维护的epoch信息,把同步状态修改为 s_step1
不正确
Leader把需要发送给Follower的提案信息转换为同步消息,放入同步消息容器mSyncMsgs中
Follower在收到Leader发送的同步消息之后,按照写请求中两阶段提交的过程,先记录事务日志,记录完成后给Leader返回ACK,Leader在收到ACK之后,给Follower发送commit消息,Follower在收到commit消息之后,把提案提交到数据库
Follower检查该同步开始消息中的epoch是否合法
Leader从同步消息容器mSyncMsgs最前端开始依次取出该容器中的消息,将该消息发给Follower
Leader找出Follower所缺少的那部分提案信息,然后把该Follower加入需要广播提案的Follower列表中
Follower在收到Leader发送的同步完成消息之后,如果此时大多数节点还没有同步完成,该Follower给Leader发送一个ACK 消息,把同步状态修改为s_synced,至此,该Follower的同步过程全部结束
0 条评论
下一页