Google App Engine中的分片数量是多少?

bra*_*jam 11 google-app-engine sharding

我今天读到了Google App Engine中的分片计数器.文章说,您应该期望在数据存储中每个实体最多大约5 /每秒更新.但在我看来,这个解决方案并没有"扩展",除非你有办法知道你每秒有多少更新.例如,您可以分配10个分片,但随后会以每秒50次更新的速度开始阻塞.

那么你怎么知道更新的速度有多快,以及如何将这个数字反馈到分片数量?

我的猜测是,除了计数器,你可以保留一些最近活动的记录,如果你发现了尖峰,你可以增加分片的数量.这一般是怎么做的?如果是这样,为什么不在示例代码中完成?(最后一个问题可能是无法回答的.)更常见的做法是监控网站活动并在流量上升时更新分片计数,而不是在代码中自动执行此操作?

更新:碎片和窒息太少会带来什么实际后果?它只是意味着网站没有响应,或者是否因超时而丢失计数器更新?


顺便说一句 ,这个问题谈到了实现没有分片的计数器,但其中一个答案暗示即使流量很高,甚至需要对memcache进行分片.所以这个分片和调优问题似乎很重要.

Dav*_*ill 4

手动监控网站的受欢迎程度并根据需要增加分片数量显然更简单。我猜大多数网站都采用这种方法。以编程方式执行此操作不仅会很困难,而且听起来会增加不可接受的开销来记录所有最近的活动并尝试分析它以动态调整您正在使用的分片数量。

我更喜欢更简单的方法,即在您选择的分片数量上稍微犯一些错误。

您对于分片太少的实际后果的看法是正确的。过于频繁地更新数据存储实体,这最初会导致某些请求花费很长时间(同时写入重试)。如果它们堆积得足够多,那么它们将随着请求超时而开始失败。这肯定会导致漏算。从好的方面来说,您的页面将会非常慢,以至于用户应该开始离开,这应该会减轻数据存储上的压力:)。