Postgresql集群与Patroni的一致性是什么?
我的理解是,由于故障转移使用的是一个共识(等等或动物园管理员),系统将保持一致的网络分区。
这是否意味着在可序列化隔离级别下运行的事务也将提供线性化。
如果没有,我会得到顺序一致性,因果一致性。?
发布于 2018-02-12 19:25:29
在分布式上下文中,我们有一个对象状态的多个副本,如果它是,则调度是可线性的,就好像它们都在同一时间点被更新一样。
一旦写入完成,所有以后从任何副本中读取的(挂钟时间)都会看到该写入的值或后续写入的值。
自从PostgreSQL版本9.6以来,就有可能有多个同步的标准节点。这意味着,如果我们有3台服务器,并且使用num_sync = 2,那么主服务器在执行提交之前总是等待写在2备用状态下。
这应该满足线性化调度的约束,即使有故障转移。
由于版本1.2的Patroni,当启用同步模式时,Patroni将自动失败,仅用于在主故障时同步复制的备用设备。这实际上意味着,在这种情况下,没有用户可见的事务会丢失。
发布于 2018-02-10 17:02:27
您不应该混淆主副本和副本之间的一致性以及数据库中的一致性。
运行在Patroni集群中的PostgreSQL数据库是一个具有流副本的普通数据库,因此它提供了流复制的最终一致性(所有副本最终将显示与主副本相同的值)。
Serializabiliy保证您可以在数据库事务中建立一个与主事务运行的顺序,以便按该顺序序列化执行的结果与实际的工作负载相同。
如果我正确地理解了这个定义,那就是“线性化”。
由于只能将Patroni集群中的一个节点写入(主节点),所以无论数据库是否位于Patroni集群中,这都将保持为真。
https://stackoverflow.com/questions/48713900
复制相似问题