首页 \ 问答 \ Google云端Bigtable耐用性/可用性保证(Google Cloud Bigtable Durability/Availability Guarantees)

Google云端Bigtable耐用性/可用性保证(Google Cloud Bigtable Durability/Availability Guarantees)

我希望Google的某人提供有关Cloud Bigtable服务提供的耐用性和可用性保证的一些准则。

这是我迄今为止的理解:

  • 最小群集需要3个节点的事实表明,至少在一个区域内,数据非常耐用并且被复制到3个节点。

  • 然而,Google员工的这种回答表明,“Cloud Bigtable不会复制数据” - 与Cloud Bigtable主页上的报价直接矛盾,并声称其“采用复制存储策略”。 那它是哪一个? 它是否被复制? 如果是这样,保留多少份?

  • 群集只能在特定区域内建立的事实表明群集的可用性直接与该区域的可用性紧密相关。 因此,如果我想拥有一个高度可用的基于Bigtable的数据存储,最好的做法是跨多个区域设置独立的群集,并自行处理跨群集的写入同步?

没有关于跨区域的Bigtable集群是否独立的信息。 如果我要在多个区域建立集群,并且一个区域关闭,我们能否期望其他区域的集群继续工作? 或者是否存在一些潜在的单点故障,甚至可能跨区域影响集群?

与对这些细节非常具体的App Engine数据存储区相比,Cloud Bigtable文档相当缺乏,或者至少我没有设法找到详细介绍这些方面的页面。

Cloud Bigtable文档在其他方面同样模糊,例如在值的大小限制方面, 文档指出单个值应该保持在“每个单元约10 MB”以下。 “〜10 MB”是什么意思?! 我是否可以硬编码10MB的限制,并期望它始终能够正常工作,或者每天都会因为未知因素而发生变化?

无论如何,如果我听起来很激动,请道歉。 我真的很想使用Bigtable服务。 但是,我想,像其他很多人一样,在能够投资它之前,需要了解它的耐用性/可用性方面。 谢谢。


I would like someone from Google to provide some guidelines on the durability and availability guarantees provided by the Cloud Bigtable service.

Here is my understanding so far:

  • The fact that the minimum cluster requires 3 nodes suggests that, at least within a zone, the data is highly durable and replicated to 3 nodes.

  • However, this answer by a Googler states that "Cloud Bigtable doesn’t replicate data" — directly contradicting the quote on the Cloud Bigtable homepage which claims it "is built with a replicated storage strategy". So which is it? Is it replicated or not? And if so, how many copies are kept?

  • The fact that clusters can only be set up within a particular zone suggests that the availability of a cluster is tied directly to the availability of that zone. So if I want to have a highly available Bigtable-based data storage, would it be best practice to set up independent clusters across multiple zones and handle the synchronisation of writes across the clusters myself?

There is no information on whether Bigtable clusters across zones are independent or not. If I were to set up clusters across multiple zones, and one zone goes down, could we expect the clusters in other zones to carry on working? Or is there some underlying single point of failure which could impact clusters even across zones?

Compared to the App Engine datastore which is very specific about these details, the Cloud Bigtable documentation is rather lacking — or, at least, I've not managed to find a page which goes into detail on these aspects.

The Cloud Bigtable docs are similarly vague on other aspects, e.g. on the matter of size limits for values, the documentation states that individual values should stay below "~10 MB per cell". What on earth does "~10 MB" mean?! Can I hardcode a limit of exactly 10MB and expect it to always work or will that change from day to day dependent on unknown factors?

Anyway, apologies if I sound agitated. I genuinely would like to use the Bigtable service. But I, like presumably many others, need to understand the durability/availability aspects of it before being able to invest in it. Thank you.


原文:https://stackoverflow.com/questions/30757561
更新时间:2023-07-12 14:07

最满意答案

pom文件中提到的依赖项jar必须驻留在.m2 / repository目录中的特定文件夹(基于它们的组ID /版本号)中(通常位于用户的主目录下) - 也称为本地存储库 。 要实现这一点,您需要使用maven注册罐子以添加到本地存储库中)

请参阅此文章 ,了解如何将jar添加到本地存储库并设置项目的依赖项。 请注意,如果jar更改(例如,来自您自己的项目之一,而不是您下载的第三方库),则必须将jar更新/重新添加到本地存储库。

或者,如果您依赖第三方库,请在Web上检查该库是否已添加到您可以使用的某个maven存储库中(因此您无需手动添加它)。

此外,如果jar来自您自己的项目之一,最好将其设置为maven项目并将其添加到项目依赖项中,这样您就不需要更新/重新添加手工制作jar到本地的重新定位(通过maven编译其他项目会为你做这个)


The dependency jars mentioned in the pom file have to reside in specific folders (based on their group id/version numbers) in the .m2/repository directory (usually under the user's home directory) -- also called the local repository. To achieve that, you will need to register your jars with maven to be added to the local repository)

See this article on how to add jars to the local repository and set up the dependencies for the project. Note that you will have to update/re-add the jar to the local repository if it changes (e.g. is coming from one of your own projects, not a 3rd party library you downloaded.)

Alternatively, if you are depending on a 3rd party library, check on the web if that library is already added to some maven repository you can use (so you don't need to add it manually).

Also, if the jar is coming from one of your own projects, it is better to set that up as a maven project as well and add it to your projects dependency that way, so you don't need to update/re-add the resulting jar to the local reposity by hand (compiling that other project via maven will do that for you)

相关问答

更多
  • pom文件中提到的依赖项jar必须驻留在.m2 / repository目录中的特定文件夹(基于它们的组ID /版本号)中(通常位于用户的主目录下) - 也称为本地存储库 。 要实现这一点,您需要使用maven注册罐子以添加到本地存储库中) 请参阅此文章 ,了解如何将jar添加到本地存储库并设置项目的依赖项。 请注意,如果jar更改(例如,来自您自己的项目之一,而不是您下载的第三方库),则必须将jar更新/重新添加到本地存储库。 或者,如果您依赖第三方库,请在Web上检查该库是否已添加到您可以使用的某个ma ...
  • 超级pom由标记定义: com.mycompany mvn 1.0.0-SNAPSHOT The super pom is defined by the tag: com.mycompany mvn
  • 尝试使用maven-versions-plugin ,特别是版本:use-latest-versions目标。 Try the maven-versions-plugin, in particular, the versions:use-latest-versions goal.
  • 你在用6.4.0.Final吗? 该版本的Eclipse向导存在问题,应该在以下更新站点中解决该问题: http : //downloads.jboss.org/jbpm/release/6.4.1.Final/updatesite/ Are you using 6.4.0.Final? There were issues with that version of the Eclipse wizard, that should be fixed in the following update site: h ...
  • 您描述的模式被称为“物料清单”。 您创建一个新的maven项目(物料清单),该项目只包含一个具有依赖关系管理块的pom。 在这里你声明你所有的依赖和它们的版本。 包装应该设置为pom 。 此物料清单(bom)项目现在用作所有其他项目的父项。 使用依赖关系时,仅指定组标识和工件标识,版本标记已忽略。 通过这种方式,该版本将从bom中获取,并且您有一个中心位置来管理依赖关系的版本。 更多的例子细节在这里 (在页面的下方)或在这里 。 The pattern that you describe is called ...
  • 事实证明,放入本地my.util.geo的jar( my.util.geo )的my.util.geo是maven归档器的默认清单 。 所以我需要编辑my.util.geo lib的构建脚本以包含所有必要的值 org.apache.maven.plugins maven-jar-plugin 2.1 ...
  • 如果你想进行声纳分析,你没有义务使用Maven。 您还可以使用Ant( 请参阅doc )或简单地使用Java Runner( 请参阅doc )。 Java Runner实际上是最简单的方法,这实际上是分析使用其他语言而不是Java构建的应用程序的首选方式(例如C#,PHP,Groovy,Python,Cobol,C / C ++ ......) 使用Maven for Java项目的主要优点是它编译项目并为您运行单元测试。 使用Ant肯定会有点复杂,但我们提供了可用于入门的示例应用程序 。 You're n ...
  • 我邮寄给这个插件的开发者,他的回答是: 警告来自Maven,基于原始的 pom.xml在Maven开始执行之前,创建了构建计划并分析了pom.xml,从而导致此警告。 flatten-maven插件会在生成扁平pom.xml的过程中启动,并确保正在安装/部署文件。 你的问题不能通过flatten-maven-plugin修复,也不会在Maven Core中修复(警告是有充分理由的)。 所以,它很好地回答了这个问题。 I mailed to developer of this plugin and his r ...
  • 您必须对项目进行更改并更改maven-jar-plugin的配置,该配置默认情况下已配置为将pom.xml文件添加到生成的jar中... maven-jar-plugin的归档配置将是正确的选择。 最好是创建一个pluginManagement部分并为maven-jar-plugin进行配置。 但我不明白为什么这是一个大问题。 You have to to your project and change the configuration of the maven-jar-plugin which is c ...
  • 右键单击您的项目,运行 - > maven install。 如果你看不到这些,你或者错误地安装了m2e,或者你需要将该项目导入为maven项目。 在这种情况下,从工作区中删除项目( 不要选中“删除磁盘上的内容”)。 右键单击项目资源管理器并单击导入...从该对话框中,您可以选择现有的maven项目,您需要导航到包含pom.xml文件的最高目录。 此外,如果您的计算机上安装了maven(而不是eclipse中的m2e),则可以打开包含pom.xml的目录,只需键入mvn clean install 。 这将 ...

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)