java - 实时产品评级的 GAE/J fragment 计数器计算

标签 java android google-app-engine google-cloud-datastore sharding

我有一个处理产品项目的 Android 客户端,我想创建一个界面来在任何给定时间显示最流行的程序。

我已阅读并使用 fragment 计数器来实现高度可扩展和并行计数。就计数而言,这一直运作良好。

但是,当需要为单个请求计算前 10 个最受欢迎的产品项目时,问题就开始了,我必须首先获取它们的所有产品实体,获取每个的 fragment 计数器并将它们相加,然后最后对它们进行排序以获得最受欢迎的。

这里的问题是,为了找出最受欢迎的是什么,我必须重新计算所有 fragment 计数器。将其乘以 10000 个产品项,我对单个用户的请求变得非常慢。

我想到了使用 cron 作业来计算结果并将其存储起来的想法。你会推荐我去那条路吗?有没有其他人处理过类似的情况?

谢谢!

最佳答案

按照您的建议定期将计数器聚合成一个只读值,或者使用替代方法来保留高并发计数器,例如 this .

如果您采用前一种方法,您可能希望使用从 cronjob 触发的 mapreduce。

关于java - 实时产品评级的 GAE/J fragment 计数器计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7663973/

相关文章:

java - 对 double 组进行排序

iphone - Android 的 viewDidLoad 和 viewDidAppear 等效

python - App Engine django 基本模型和 db.Model 之间的区别

android - 为什么 Picasso 在后台线程中运行会阻塞 onActivityResult?

android - 在谷歌地图上添加搜索工具栏,就像在原生 android 应用程序中一样

python - 使用 Google App Engine Python 将大文件上传到 Google Drive 时出现 400 错误请求

java - 在 Google App Engine 中,如何在更新 SDK 后保持开发数据存储可用?

java - 黑名单服务引用

java - "java web start"有什么用?

Java Swing 匿名操作