我在这里遇到了设计问题,我将PHP和MySQL与Java结合使用(我的项目是一个Android应用程序).我必须决定如何定期运行一系列服务器端计算.这里有很多关于如何创建cron作业的材料,这很好,我很可能会在那里结束,但我不确定如何在更广泛的意义上解决我的项目的这一部分.
该应用程序完全以用户的地理位置为中心.它们总是以4到40之间的任意簇组织,这些簇在我的数据库中形成一个实例记录.这些实例可以随时变为活动或非活动状态.
对于我的数据库中的每个记录,或者,我更喜欢实例,在每个时代,我想从其用户位置重新计算实例的质心(这很容易,特别是使用标量方法,因为它们非常接近),有效地移动位置通过更新实例的数据库中的纬度和经度值来实例化实例.用户随后将在他们打电话回家时定期收到这些新的实例质心坐标.
由于我缺乏经验,这就是它变得混乱的地方.我开始时编写了一个相对简单的计算,涉及一个SQL选择查询和一个后续的SQL更新操作,每个实例,在每个时期.如果我们假设现在大约20-30秒的更新间隔,那不到一分钟,显然这违反了cron作业1分钟的限制.(应该注意的是,如果绝对必要的话,时期之间的时间差可以是硬编码的).
在短期内,由于实例/集群很少,因此这个过程可能只需要花费的时间可以忽略不计.但是,如果实例的数量达到数千个,那么它可能会堆积很多SQL查询并且需要花费大量时间来处理所有计算......为了减少不必要的负载,我自然想要结合一些机制来排除非活动实例,但我想仍然可以想象所需的计算时间可能超过时期间隔.我想这是(很多)以后的问题.
就目前而言,问题是双重的:
我目前的做法如下:
以上方法听起来不错吗?在这一点上,我打算这样做,除非有更好的建议.我真的没有办法确定如何安排任务在每个时代执行(第4点),但是......我看了很多地方,我自己无法解决这个问题没有一些指导,我还不是很好.:)一如既往,任何建议将不胜感激.