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 应用程序引擎数据存储上的Golang-使用PutMulti提高性能_Google App Engine_Go_Google Cloud Datastore - Fatal编程技术网

Google app engine 应用程序引擎数据存储上的Golang-使用PutMulti提高性能

Google app engine 应用程序引擎数据存储上的Golang-使用PutMulti提高性能,google-app-engine,go,google-cloud-datastore,Google App Engine,Go,Google Cloud Datastore,我有一个GAE Golang应用程序,应该能够处理数百个并发请求,对于每个请求,我对输入进行一些处理,然后将其存储在数据存储中 使用任务队列(appengine/delay-lib)我获得了相当好的性能,但是为每个请求执行单行插入似乎仍然非常低效(即使使用任务队列延迟插入) 如果这不是appengine,我可能会将输出附加到一个文件中,每隔一段时间,我会使用cron作业/其他类型的计划服务将该文件批量加载到DB中 因此,我的问题是: 是否有一个等效的方案可以在app engine上实现?我是 思

我有一个GAE Golang应用程序,应该能够处理数百个并发请求,对于每个请求,我对输入进行一些处理,然后将其存储在数据存储中

使用任务队列(appengine/delay-lib)我获得了相当好的性能,但是为每个请求执行单行插入似乎仍然非常低效(即使使用任务队列延迟插入)

如果这不是appengine,我可能会将输出附加到一个文件中,每隔一段时间,我会使用cron作业/其他类型的计划服务将该文件批量加载到DB中

因此,我的问题是:

  • 是否有一个等效的方案可以在app engine上实现?我是 思考——也许我应该写一些行给memecache,然后 然后每隔几秒钟,我将批量加载来自的所有行 然后清除缓存
  • 这真的需要吗?你能打开数据存储吗 处理数千次并发写入-每个http请求一次写入 应用程序正在运行

  • 这取决于你的设置。您正在使用祖先查询吗?如果是这样的话,那么每个祖先(以及所有的孩子,孙子)每秒只能写一次。数据存储有一个自然队列,因此如果您尝试写得太快,它将对其进行排队。只有当你写得太多太快的时候,它才会成为一个问题。您可以阅读一些最佳实践

    如果你认为你会超过这个极限,那就用一个。您可以将每个实体放入队列中。通过一个备份模块(10分钟超时),您可以批量(10-50-100…)拉入条目,并批量对其执行put_异步。它将处理以适当的速度将它们放入。工作时,您可以排队等待下一批。只是要提防超时