我今天读到了 Google App Engine 中的分片计数器。文章说,您应该期望数据存储中每个实体每秒最多更新约 5 次。但在我看来,除非您有某种方式知道您每秒进行了多少更新,否则该解决方案不会“扩展”。例如,您可以分配 10 个分片,但随后会以每秒 50 次更新开始阻塞。
那么,您如何知道更新的速度有多快,以及如何将该数字反馈到分片数量中?
我的猜测是,与计数器一起,您可以保留一些最近活动的记录,如果您检测到峰值,您可以增加分片的数量。一般是这样处理的吗?如果是这样,为什么不在示例代码中完成?(最后一个问题可能无法回答。)是否更常见的做法是监控网站活动并在流量增加时更新分片计数,而不是在代码中自动执行?
更新:碎片太少和窒息的实际后果是什么?这是否仅仅意味着网站变得无响应,或者是否有可能因为超时而丢失计数器更新?
顺便说一句,这个问题谈到了在没有分片的情况下实现计数器,但其中一个答案暗示,如果流量很高,即使 memcache 也需要分片。所以这个分片分配和调整问题似乎很重要。