分布式系统你会设计了吗?不会阿里架构师来教你设计
通常情况下切换primary由监控节点q完成,引入quorum之后,选择新的primary的方式与读取数据相似,即q读取R个副本,选择R个副本中版本号最高的副本作为新的primary。新primary与除去q选举出的副本外,其余的至少W个副本完成数据同步后,再作为新的primary。 蕴含的道理是: R个副本中版本号最高的副本一定蕴含了最新的成功提交的数据。 虽然不能确定版本号最高的数据 == 这个最新成功提交的数据,但新的primary立即完成了对W个副本的更新,从而使其变成了成功提交的数据 例如:N = 5 W = 3 R = 3的系统,某时刻副本状态(V2 V2 V1 V1 V1),此时V1是最新成功提交的数据,V2是处于中间状态未成功提交的数据。V2是作为脏数据扔掉,还是作为新数据被同步,完全取决于能否参与q主持的新primary的选举大会。如果q选择(V1 V1 V1),则在接下来的更新过程中 V2会被当成脏数据扔掉;如果q选择(V2 V1 V1)则V2会将V1更新掉,成为最新成功的数据。 ![]() ![]() 2.5 日志技术 日志技术不是一种分布式系统技术,但分布式系统广泛使用日志技术做down机恢复。 2.5.1 数据库系统日志回顾 数据库的日志分为 undo redo redo/undo no-redo/no-undo四种,这里不做过多介绍。 2.5.2 redo与check point (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |