首页 > 游戏公会的总战力刷新问题

游戏公会的总战力刷新问题

在做的游戏中,有个需求是显示的游戏公会列表要按照总战力排序,比如显示战斗力最强的前30个公会。我们的数据库缓存了公会总战力,以方便数据库查询,但是在性能上碰到了一些问题。

做法1、每个成员有战力变更的时候,重新取一遍公会的所有成员的战力,然后加起来。这种做法比较准确,但也比较耗。
做法2、每个成员有战力变更的时候,传递增量给公会,公会总战力加上增量就是新的总战力。这种做法相对没那么耗,但是可能会出现数据不准确的情况。
做法3、定期计算公会的所有成员的战力之和,然后更新数据库的数据。这种做法会带来持续上的性能消耗,例如一个没有人上线的公会都有性能消耗。

目前打算采用做法1,先把问题记下来,看看后面有没有更好的思路


第二种做法为什么会不准呢,如果个人的修改事件必然能触发到工会的修改事件?
当然,题主考虑的可能是上面的事件前者不一定能确保触发到后者。如果这样的话,其实做法 1 也有同样的问题,也不能确保触发,只是后续的某一次触发可能会修正前面的偏差。
好,那么也就是允许偏差的存在和修正的时延性。那么既然这样的话,不如结合 1 和 3,在 1 的时候打上一个 flag,然后在 3 中定期计算(反正都有偏差和时延性)的时候只计算 flag 的工会。
这样会不会好一点?

【热门文章】
【热门文章】