在路上

          路上有驚慌,路上有理想

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            28 Posts :: 1 Stories :: 10 Comments :: 0 Trackbacks
             ——Apache Roller源碼分析

              系統(tǒng)中,某些DB數(shù)據(jù)需要頻繁更新,但實(shí)時性不強(qiáng),可以采用延時更新的方式。設(shè)定一個間隔時間,累計更新數(shù)據(jù),再通過特定的work thread統(tǒng)一更新。Apache Roller這個開源的Java Blog 正是才用了這種方式,實(shí)現(xiàn)站點(diǎn)計數(shù)的延時更新。

             優(yōu)點(diǎn):減少了數(shù)據(jù)庫的一部分壓力。尤其是在高并發(fā)下,數(shù)據(jù)庫I/O及并發(fā)處理的壓力

             缺點(diǎn):實(shí)效性差,用戶在某個時間點(diǎn)內(nèi)獲取的數(shù)據(jù)不準(zhǔn)確。

             附圖為 實(shí)現(xiàn)數(shù)據(jù)延時更新的Class Diagram

             

           

           說明:

               HitCountQueue.java 為站點(diǎn)計數(shù)隊(duì)列,singleton instance,通過processHit 方法添加站點(diǎn)計數(shù),通過resetHits方法清空Queue,為防止同步問題,增加了synchronized。在其構(gòu)造函數(shù)內(nèi),會啟動一個 workThread實(shí)例,完成隊(duì)列數(shù)據(jù)到數(shù)據(jù)庫的持久化工作。

              Job interface 為任務(wù)接口

              HitCountProcessingJob.java 實(shí)現(xiàn)了Job接口,完成數(shù)據(jù)更新的任務(wù)。

              WorkerThread.java 執(zhí)行Job的工作線程,ContinuousWorkerThread繼承自WorkerThread,增加了時間間隔的功能。線程執(zhí)行后,會sleep 指定的時間。

          posted on 2010-02-27 15:38 阮步兵 閱讀(329) 評論(0)  編輯  收藏 所屬分類: Architecture

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 来安县| 平阳县| 阿巴嘎旗| 泗水县| 佛学| 武隆县| 丹凤县| 辽阳市| 南京市| 绵竹市| 兴宁市| 漯河市| 辽阳县| 东光县| 墨脱县| 伊川县| 新郑市| 磐安县| 玛多县| 茂名市| 南安市| 任丘市| 宾阳县| 卓资县| 博罗县| 辽中县| 安岳县| 瓦房店市| 潢川县| 平谷区| 枞阳县| 勐海县| 安泽县| 禹城市| 德格县| 理塘县| 景谷| 区。| 巴彦淖尔市| 沁阳市| 乐清市|