标签:mac postgresq 日志 这一 关键点 主从备份 static serve 中心
在阅读raft论文的时候,考虑两个问题:
在raft协议中,每一个server中都有一个Replicated State Machine,只要每个server接收到的输入命令是相同的,那么Replicated State Machine最后的结果就是相同的,也就达到了最终的共识性。那么我们可以考虑下,如果不使用Replicated State Machine,还有其他的方式吗。其实一共两种方式的复制方式:
为了令进程实现高可用,我们可以对进程进行备份,而实现进程的主从备份主要有两种方法
第二种就是刚才所说的Replicated State Machine。假设考虑使用第一种,我们需要将server中整个数据复制到每个其他server, 性能成本显然是不可行的,所以在多副本复制的情况下都采用Replicated State Machine,只需要将增量命令应用于状态机就能达到最终的共识。
WAL,Write-Ahead Logging。WAL的中心思想是对数据文件的修改必须发生在这些修改已经记录到日志之后,也就是先写日志落盘然后写数据。如果遵循这一过程,就不需要每次提交事务的时候把数据块刷回磁盘,因为出现奔溃的情况下可以用日志来恢复数据。
那么这有什么好处呢?为什么不直接落盘呢?
因此,在raft中,leader将log复制到follower后就表示该操作已经被持久化,而复制到大多数后就表示该消息在整个系统中已经不会丢失了(个人理解)
标签:mac postgresq 日志 这一 关键点 主从备份 static serve 中心
原文地址:https://www.cnblogs.com/set-cookie/p/9463807.html