问题
(此题目考察对分布式设计的认知)
在分布式存储系统中,往往都会有一个【Leader】或【Master】角色,形成“一主一从”或“一主多从”的运行模式; 这里的“主”一般承担对数据的“写入”任务。
(1)“主”是必须的吗?难道没有“主”就没法干活吗?
(2)这样的设计背后到底存在什么样的原理呢?
结合场景阐述自己的理解!
答案
在分布式存储系统中,往往都会存在一个【主】,用于对数据进行“写入”;
这个【主】角色存在的背后原理到底是什么呢?主要有两点:
一、防止写冲突;
二、简化数据同步逻辑。
先说【防止写冲突】
假设一个分布式存储系统,包含nodeA、nodeB、nodeC 三个节点,这三个节点互为副本,没有主角色;
这三个节点上同时存在着 x=1 的数据记录;
假设有两个客户端 clientA 和 clientB 同时分别向 nodeA 和 nodeB 写入 x=5 和 x=9;
写入成功后, nodeA 会将 x=5 同步给 nodeC;同时,nodeB 会将 x=9 同步给 nodeC。
此时,我们需要理解 nodeC 的心情,它应该听谁的呢? x 应该是 5 还是 9,还是1呢?怎么解决 nodeC 比较困惑的问题呢?
通常的解决方案是: 必须要有一个“全局说了算”的角色存在,这个