代码之家  ›  专栏  ›  技术社区  ›  skyde

Postgresql HA集群与Patenti的一致性如何?

  •  1
  • skyde  · 技术社区  · 7 年前

    Postgresql HA集群与Patenti的一致性如何?

    我的理解是,由于故障转移使用的是一致意见(etc或zookeeper),因此系统将在网络分区下保持一致。

    这是否意味着在可串行化隔离级别下运行的事务也将提供线性化能力。

    如果没有,我将获得顺序一致性、因果一致性?

    2 回复  |  直到 5 年前
        1
  •  2
  •   Laurenz Albe    7 年前

    您不应该混淆主副本和副本之间的一致性以及数据库内的一致性。

    在Patenti集群中运行的PostgreSQL数据库是具有流复制副本的普通数据库,因此它提供了流复制的最终一致性(所有副本最终将显示与主副本相同的值)。

    Serializability保证您可以在针对主服务器运行的数据库事务中建立顺序,以便按照该顺序序列化执行的结果与实际的工作负载相同。

    如果我读对了定义,这与“线性化能力”是一样的。

    由于只能将Patenti集群中的一个节点写入(主节点),因此无论数据库是否位于Patenti集群中,都会保持这种状态。

        2
  •  2
  •   skyde    7 年前

    在分布式环境中,我们有一个对象状态的多个副本,如果调度是线性的,那么它是线性的 好像它们都是一次更新的 在单个时间点。

    写入完成后,任何副本的所有后续读取(挂钟时间)都应该看到该写入的值或后续写入的值。

    自PostgreSQL 9.6版以来,可能会有多个同步备用节点。这意味着,如果我们有3台服务器,并且使用num\u sync=2,则主服务器在执行提交之前,将始终等待write位于2备用服务器上。

    即使有故障切换,这也应该满足可线性化调度的约束。

    自从 Patenti 1.2版 ,当启用同步模式时,Patenti将仅自动故障切换到主设备故障时同步复制的备用设备。 这实际上意味着 没有用户可见的事务丢失 在这种情况下。