在路上

路上有惊慌,路上有理想

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  28 Posts :: 1 Stories :: 10 Comments :: 0 Trackbacks
   ——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 指定的时间。

posted on 2010-02-27 15:38 阮步兵 阅读(315) 评论(0)  编辑  收藏 所属分类: Architecture

只有注册用户登录后才能发表评论。


网站导航: