复制或多副本技术的目的:
多台机器保留多份相同的数据副本,需仔细考虑并发和所有可能出错并处理。至少,需处理好:
这里甚至不考虑更隐蔽的失效场景,如由于bug导致的无提示的数据损坏。
多副本方案:
每种方法都有优、缺点。单主复制很流行,因为易理解,无需担心冲突。出现故障节点,网络中断和延迟峰值时,多领导者、无领导者复制更稳健,但以更难推理并仅提供非常弱的一致性保证为代价。
复制可同步、异步,这在故障时对系统有深远影响。尽管系统平稳时异步复制很快,但复制滞后增加和服务器故障时要弄清楚会发生啥。若某领导者失败,且你提升了一个异步更新的追随者成为新的领导者,则最近提交的数据可能丢失。
一些可能由复制滞后引起的奇怪效应,也讨论了一些有助于决定应用程序在复制滞后时的行为的一致性模型:
最后讨论多领导者、无领导者复制固有并发问题:因为他们允许多个写并发,这可能冲突。我们研究了一个DB可能使用的算法来确定:
通过合并并发更新来解决冲突。