YugabyteDB 在 2 个数据中心的部署
YugabyteDB deployment in 2 datacenters
[用户在 YugabyteDB Community Slack 上发布的问题]
我有两个不同的数据中心,我希望应用程序同时写入两个数据中心的数据库。主数据中心和辅助数据中心中的实例都应该处于活动状态并接受写入,并且应该同步或异步复制。但是,应维护 ACID 属性,以便在两个站点上一致地读取数据。 Primary 中的数据库应该具有 Secondary 中的所有数据,反之亦然。数据中心之间的延迟为 40 毫秒。
选项 1:使用跨数据中心的单个多区域 YugabyteDB 集群。 YB 在单个集群内使用同步复制。这使用仲裁(共识)协议。
对于此部署,由于使用了 RAFT 协议,因此建议使用奇数个数据中心(通常为 3 个),以便您可以容忍数据中心故障并仍然处于活动状态。缺点:这种部署通常会有更高的写入操作延迟。 DC 之间的距离越远,延迟就越高。
在 tablet 级别,领导者必须协调写入。因此,无论您来自哪个节点/DC。该请求首先必须路由到 tablet 的领导者。如果分片的领导者在 DC1 中但您的写入请求(即应用程序在 DC(⅔) 中为 运行),这可能会增加 40 毫秒。如果您主要从一个 DC 写入并且您选择该 DC 作为保留所有领导者的首选区域(默认情况下),则不会有此惩罚。
最重要的是,网络往返次数取决于操作是否是快速路径(单分片)事务——例如,简单的单行插入(在这种情况下大约需要 40 毫秒)。或者,如果它涉及分布式事务(例如,多行插入或插入到 table 具有一个二级索引)——这种情况将涉及大约两次网络往返……接近 80 -100 毫秒。
选项 2:使用两个 YugabyteDB 集群。一个在 DC1 中,一个在 DC2 中。每个都是 RF=3,并且相互异步复制。两个集群都可以进行写入,写入延迟将保持在 DC 内部延迟(因此它会比选项 1 快得多)。但是,您不会在两个站点上使用异步复制立即保持一致,因此没有完整的 ACID 实现。此外,如果您在两个站点上都进行写入并双向执行异步复制,则必须小心。如果这两个集群接触到一组不相关的 keys/records,那么问题就不大了。如果他们正在更新相同的记录,那么语义就是“最新作者获胜”,而不是 ACID。基本上,应该使用双向异步复制 carefully/has 由于异步复制的本质,您可以想象这些注意事项。
[用户在 YugabyteDB Community Slack 上发布的问题]
我有两个不同的数据中心,我希望应用程序同时写入两个数据中心的数据库。主数据中心和辅助数据中心中的实例都应该处于活动状态并接受写入,并且应该同步或异步复制。但是,应维护 ACID 属性,以便在两个站点上一致地读取数据。 Primary 中的数据库应该具有 Secondary 中的所有数据,反之亦然。数据中心之间的延迟为 40 毫秒。
选项 1:使用跨数据中心的单个多区域 YugabyteDB 集群。 YB 在单个集群内使用同步复制。这使用仲裁(共识)协议。
对于此部署,由于使用了 RAFT 协议,因此建议使用奇数个数据中心(通常为 3 个),以便您可以容忍数据中心故障并仍然处于活动状态。缺点:这种部署通常会有更高的写入操作延迟。 DC 之间的距离越远,延迟就越高。 在 tablet 级别,领导者必须协调写入。因此,无论您来自哪个节点/DC。该请求首先必须路由到 tablet 的领导者。如果分片的领导者在 DC1 中但您的写入请求(即应用程序在 DC(⅔) 中为 运行),这可能会增加 40 毫秒。如果您主要从一个 DC 写入并且您选择该 DC 作为保留所有领导者的首选区域(默认情况下),则不会有此惩罚。 最重要的是,网络往返次数取决于操作是否是快速路径(单分片)事务——例如,简单的单行插入(在这种情况下大约需要 40 毫秒)。或者,如果它涉及分布式事务(例如,多行插入或插入到 table 具有一个二级索引)——这种情况将涉及大约两次网络往返……接近 80 -100 毫秒。
选项 2:使用两个 YugabyteDB 集群。一个在 DC1 中,一个在 DC2 中。每个都是 RF=3,并且相互异步复制。两个集群都可以进行写入,写入延迟将保持在 DC 内部延迟(因此它会比选项 1 快得多)。但是,您不会在两个站点上使用异步复制立即保持一致,因此没有完整的 ACID 实现。此外,如果您在两个站点上都进行写入并双向执行异步复制,则必须小心。如果这两个集群接触到一组不相关的 keys/records,那么问题就不大了。如果他们正在更新相同的记录,那么语义就是“最新作者获胜”,而不是 ACID。基本上,应该使用双向异步复制 carefully/has 由于异步复制的本质,您可以想象这些注意事项。