在路上

          路上有驚慌,路上有理想

            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

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


          網站導航:
           
          主站蜘蛛池模板: 三明市| 乌拉特前旗| 安溪县| 临漳县| 图木舒克市| 长垣县| 马山县| 阳东县| 北辰区| 新营市| 故城县| 库伦旗| 宜兰市| 来宾市| 文化| 仲巴县| 封丘县| 中卫市| 金堂县| 乳源| 灵石县| 济源市| 贵南县| 临邑县| 鄂伦春自治旗| 伊吾县| 中西区| 额尔古纳市| 湖南省| 沙田区| 区。| 河东区| 万全县| 民勤县| 股票| 灵武市| 安陆市| 永康市| 陈巴尔虎旗| 泰来县| 甘泉县|