[导入]基于Apache Roller的数据延时更新示例

[导入]基于Apache Roller的数据延时更新示例
   ——Apache Roller源码分析

    系统中,某些DB数据需要频繁更新,但实时性不强,可以采用延时更新的方式。设定一个间隔时间,累计更新数据,再通过特定的work thread统一更新。Apache Roller这个开源的Java Blog 正是才用了这种方式,实现站点计数的延时更新。

   优点:减少了数据库的一部分压力。尤其是在高并发下,数据库I/O及并发处理的压力

   缺点:实效性差,用户在某个时间点内获取的数据不准确。

   附图为 实现数据延时更新的Class Diagram

   

 

 说明:

     HitCountQueue.java 为站点计数队列,singleton instance,通过processHit 方法添加站点计数,通过resetHits方法清空Queue,为防止同步问题,增加了synchronized。在其构造函数内,会启动一个 workThread实例,完成队列数据到数据库的持久化工作。

    Job interface 为任务接口

    HitCountProcessingJob.java 实现了Job接口,完成数据更新的任务。

    WorkerThread.java 执行Job的工作线程,ContinuousWorkerThread继承自WorkerThread,增加了时间间隔的功能。线程执行后,会sleep 指定的时间。

你可能感兴趣的:([导入]基于Apache Roller的数据延时更新示例)