我有一个处理产品项目的Android客户端,我想创建一个界面,用于在任何给定时间显示最受欢迎的程序。
我已经阅读并使用了分片计数器来实现高度可扩展和并行计数。就计数而言,这一直运作良好。
然而,当出现单个请求计算前10个最受欢迎产品项目的时候,问题就出现了,我必须首先获取所有产品实体,获取每个产品实体的分片计数器然后再添加它们然后最后对它们进行排序以获得最受欢迎的。
这里的问题是,为了找出最受欢迎的东西,我必须重新计算所有分片计数器。乘以10000个产品项目,我对单个用户的请求变得很慢。
我认为使用cron作业来计算结果并存储它的想法。你会建议我这样走吗?有没有其他人处理类似的情况?
谢谢!
答案 0 :(得分:1)
按照您的建议,定期将计数器聚合为单个只读值,或使用其他方法保留高并发计数器,如this。
如果你采用前一种方法,你可能想要使用从cronjob触发的mapreduce。