该文档描述了数据存储中实体组的吞吐量限制,但对于限制的具体内容含糊其辞。我的困惑有两部分:
1. 限制什么?
具体来说是:
- 写入次数?
- 写入数据存储的事务数量?
- 无论是读取还是写入数据存储,事务数量如何?
2. 限制的类型是什么?
具体来说是:
- 人为强制执行每秒一次的硬规则?
- 根据经验观察到的最大吞吐量,在实践中根据网络负载等因素可能会更好?
本身没有吞吐量限制,但为了保证事务中的原子性,必须对更新进行序列化并按顺序应用,因此,如果您进行了足够多的更新,事情就会开始失败/超时。这就是所谓的数据存储争用 https://cloud.google.com/appengine/articles/scaling/contention:
当单个实体或实体组更新太快时,就会发生数据存储争用。数据存储将对并发请求进行排队以等待轮到它们。超过超时时间在队列中等待的请求将引发并发异常。如果您希望每秒更新单个实体或写入实体组多次,最好尽早重新设计您的设计,以避免部署应用程序后可能出现的争用。
为了简单地直接回答您的问题,它具体是每个实体组的写入次数(每秒 5 次左右),这只是一个经验法则,您的里程可能会有所不同(很大)。
有些人报告根本没有争用,而另一些人则遇到每秒超过 1 次更新的问题。正如您可以想象的那样,这取决于操作的复杂性以及执行中涉及的所有机器的负载。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)