Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine Google App Engine HRD-如果我超过每秒写入实体组1次的限制,该怎么办?_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Google app engine Google App Engine HRD-如果我超过每秒写入实体组1次的限制,该怎么办?

Google app engine Google App Engine HRD-如果我超过每秒写入实体组1次的限制,该怎么办?,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,根据Google App Engine文档,使用高复制数据存储时,对一个实体组的写入限制为每秒写入一次。所以 如果我超过这个限制会发生什么?某种例外?我该怎么办 我怎么知道我快要超过这个极限了?我可以设计应用程序,使特定操作(添加实体…)不太可能经常发生,但我不能保证这一点 每秒写入一次有点低。它实际上支持的不止这些。我甚至会说每秒写5到10次,但我当然不能保证这一点 如果你达到这个极限,你会得到一个例外是的。异常消息将为: 这些数据存储实体上的争用太多。请重试。 但我不知道/不记得会出现什么例

根据Google App Engine文档,使用高复制数据存储时,对一个实体组的写入限制为每秒写入一次。所以

  • 如果我超过这个限制会发生什么?某种例外?我该怎么办
  • 我怎么知道我快要超过这个极限了?我可以设计应用程序,使特定操作(添加实体…)不太可能经常发生,但我不能保证这一点

  • 每秒写入一次有点低。它实际上支持的不止这些。我甚至会说每秒写5到10次,但我当然不能保证这一点

    如果你达到这个极限,你会得到一个例外是的。异常消息将为:
    这些数据存储实体上的争用太多。请重试。

    但我不知道/不记得会出现什么例外情况

    此时,您可以选择重试、继续或任何您认为正确的操作


    您无法判断是否接近每秒写入1次的限制。它会发生,你会处理它。

    根据GAE文档和我有限的经验:

  • 期望1QPS速率,并相应地调整你的应用程序
  • 是处理数据存储争用的常见模式
  • 始终添加防御代码以处理每个可能的异常(
    应用程序错误5,数据存储操作超时,实体组的事务冲突,…)
  • 如果出现错误,请重试写入操作,将任务移动到适当的任务队列中,或者,如果可以,只需提醒用户重试即可
  • 重试写入,通常有效
  • 在可能的情况下,使用写后缓存机制将可能导致争用的写操作移动到并降低数据存储命中率
  • 避免争用的一个好方法是保持实体组较小,但不要过于依赖它
  • 您甚至可以在单个实体上进行争用

  • java.util.ConcurrentModificationException是您要查找的例外不,我不需要。不使用java;)。但是如果我愿意,那么这可能是我寻找的例外。对于HRD来说,限制实际上接近于1比10。放置Thread.sleep(1000);在后台任务中写入数据存储?