关于BigTable中实例数量的建议

问题描述 投票:0回答:1

在BigTable中应该有多少个实例,有什么好的做法或建议吗?在这两种情况下,什么是好的做法?

a) 有2个实例,每个实例有2个簇。

  • 实例A有2个集群:集群A1和集群A2;两者都在 us-east1 地区
  • 实例B有2个集群:集群B1和集群B2;两者都在 us-east4 地区

b) 只有1个INSTANCE,有2个集群。

  • C1群组在 us-east1 区域和
  • C2组 us-east4 地区

我理解集群是为了可复制性,上述两种情况都是复制的因素。

在我看来,b)的情况(1个实例)更有效,因为它不仅涵盖了复制,还涵盖了两个区域,us-EAST1和us-EAST4,而且少了1个实例(因此,少了$$)。

请根据你的知识或你是否也有任何实际的经验,对此提出建议。

google-cloud-bigtable bigtable
1个回答
0
投票

虽然每个用例都取决于业务需求,但每个复制配置都有自己的优势。我将指出这两种情况之间需要考虑的一些重要话题。

Bigtable是一个高性能可扩展的NoSQL数据库,是大型分析工作负载的理想选择。关于 复制根据文档,它使你能够提高可用性和耐久性。此外,它被认为是最终一致的,这意味着当你向你的集群写一个变化时,它将能够从实例中的其他集群读取变化,只是一旦变化在集群之间复制。

  • 复制和吞吐量

读取吞吐量:复制可以改善读通放,特别是当你使用多集群路由时。如果集群更接近客户的区域,它还可以减少延迟。你可以阅读更多关于它的信息 此处.

写入吞吐量根据《公约》规定: 文件但复制并不能提高写吞吐量。写入吞吐量可能会下降,因为对一个集群的写入必须复制到其他集群。因此,每个集群都要花费更多的CPU资源来从其他集群中提取变化。举个例子。

  • 如果一个集群的节点数增加了一倍,一个3个节点的集群现在有6个节点(例如),实例的写入吞吐量就会增加一倍。但是,数据只能在一个区域内使用。

  • 增加第二个节点数相同的集群,一个3节点的集群,再增加一个3节点的集群,共6个节点。那么,数据在两个不同的区域中可用,但写吞吐量可能会下降,因为每条数据在复制到其他集群时,都要写两次。

复制延迟。 不同区域的复制集群,一般来说,会比同一区域内的集群有更高的延迟。

您还应该考虑 应用程序配置文件和流量路由 在您的业务需求范围内。多集群路由可以最大限度地减少延迟,因为它是一种自动选择,将请求路由到实例中最近的集群(从应用程序的角度来看),从而尽可能地减少延迟。而单集群路由可以用于分离工作负载,或者在同一个集群中具有读写语义。

Google准备了一些复制用例的例子,以阐明每种设置的优势。我鼓励你看一看 此处.

如果你需要更多的建筑建议,你也可以联系GCP。此处.

更新

分析一下你的2个案例。

如果你有1个Instance,4个集群,它将保持你的数据高度可用。同时,如果你的集群在同一个区域,但在不同的区域,它将增加区域弹性和故障切换的能力,而不会产生跨区域复制成本。但是,你只能有一个有一个App Profile(多集群或单集群路由)。这意味着,你将无法将分析工作负载与其他应用分开。所以,当你有一个要运行一个大的批处理作业时,它可能会拖慢应用程序的用户的事情。

现在,如果你有2个实例,每个实例有2个集群。如果集群在同一实例的同一区域,你可以拥有高可用性,甚至区域弹性。但是,如果集群在不同的区域,就会产生从一个区域到另一个区域的复制成本。另外,tabledata属于实例。因此,您将能够将分析工作负载与其他应用程序分开,这将有助于提高性能(当运行大型批量作业时),每个实例都有自己的App Profile配置。

© www.soinside.com 2019 - 2024. All rights reserved.