如何更高效的处理文章访问量插入与显示问题?
世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。
-
情景
针对文章访问量显示,大家在网页上看到的文章,访问量是实时显示的,但是如果文章每刷新一次,程序就在数据库中插入一次或到数据库中查找一次,消耗实在太大,但是如果只是使用缓存记录的话,缓存因为某些原因突然失效,那访问量的记录都会丢失。当然也有一种缓存预支的情况,即缓存先增加访问量返回给页面,然后再插入到数据库中,这种也不错,但是保持缓存中的数据与数据库一致也是一个问题。所以这里想到了一种缓存与批量处理结合的架构方式来处理访问量实时显示,使后台程序与数据库之间是批量交互,但是前台页面也无需等待就会获取到结果,当然这样做并不是完全一致的实时,不再是刷新一次,访问量一定会增加,但是经过启动过程以后,显示结果的速度会非常快。并且可以让后台的压力得到很大的减轻。 -
设计图
本设计使用缓冲+缓存+批量处理,插入时使用缓冲加批量处理插入(批量定时插入),查询时采用批量定时查询,在过了初期的访问量缓存阶段以后,缓存层作为页面访问量获取的主力,批量查询为它提供支持。这样做的效果访问量更新会产生一定的延迟,但是页面会实时看到访问量,不会因为没有查询出访问量数据而一直处在加载状态,而影响了页面的其他功能。并且可以保证缓存中的数据与数据库记录的访问量是一致的。