我需要通过增加 Google Cloud Datastore 中的写入吞吐量来提高服务器的性能。
要求:
当服务器同时收到超过 5 个创建用户数据的请求时,服务器需要创建或更新这些实体。
但是,我遇到了一个写入争用的问题。
我知道一个可能的解决方案是使用后写式缓存机制,将可能导致争用 Memcache 和任务队列的写入操作转移到会降低 Cloud Datastore 命中率的位置。
但我想并行进行,没有任何延迟时间。
1.是否可以应用“分片计数器”来创建或更新 ndb 的用户模型?
2.你能提供一些示例代码吗?
最佳答案
我做了一些研究,想分享如下 https://weishihhsun.blogspot.com/search/label/Google%20App%20Engine
关键是我们可以使用随机唯一 ID 对我们的实体组进行分片,如下所示。
NUM_SHARDS = 1000
shard_string_index = str(random.randint(0, NUM_SHARDS - 1))
FriendShip(id=shard_string_index,
user_key='user Id',
friend_key='frind Id')
要同时并行写入一千个Friendship实体,我们只需要将NUM_SHARDS的数量设置为1000。
关于google-app-engine - 如何实现 "Sharding Counters"以在 Cloud Datastore 中创建或更新每秒超过 5 次写入的单个实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43605922/