在路上

          路上有驚慌,路上有理想

            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 阮步兵 閱讀(324) 評論(0)  編輯  收藏 所屬分類: Architecture

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 嘉黎县| 太白县| 雷山县| 文昌市| 乌鲁木齐县| 德兴市| 陆丰市| 庄浪县| 布拖县| 潢川县| 句容市| 青海省| 邛崃市| 芜湖县| 错那县| 九江市| 平凉市| 平顺县| 华容县| 宽甸| 方正县| 西充县| 景谷| 霍林郭勒市| 白朗县| 偏关县| 丽水市| 廉江市| 丰都县| 镇康县| 琼结县| 乃东县| 自贡市| 安乡县| 偃师市| 连云港市| 达拉特旗| 西青区| 建水县| 肥东县| 买车|