




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、電信營運設計后臺:數據采集與整合文檔編號:Version1.0達內科技2008年05月達內IT培訓集團修改記錄摘要日期修改原因版本2008-05-28新建1.0、UI設計(無)、數據采集類圖設計(一)數據采集客戶端1)類結構概要說明ColtecbofiLauchcir*main(args:StringU:slaticvoid數據采集Dat日Cote函r*ip:String琴則加日歸:CofedioniListener*cofedOwddgetNalwiPO.StnngmappingLogBuflferffflenfimeSiring):MappedBeBufferparseLogBuffert
2、togbuffer:MappedByteBufferJogout:Vector,bgiin:Vector):voiddhnalch(logoLJt:Vector,login:Vector):Vsclorpa站NagQ口gin:Vector,filename:Stnng)widdeidiv日由俚即ame:String):VedornittaflOLogOsaler:String%port:irtJockel.Sockel射叩曲trean:ObjecthputStream«lnlertafe»ColsclianListjenafde前儂唔oorclV0ctor<Match
3、edltocDfd>),voidLogRecordbusier:Stnnglong*us引ipStringft'labipSiring&id:iri事而0void#mitSock期0y口d室日懼0void心MatehedRecordHiser:Siringloginljme:longogoiMtime:long防labip:String加serip:Stung版Juralioin:long2)類功能結構說明-時序圖3)類詳細說明1.CollectionLaunchor采集主程序類,發動采集線程。CollectionLauchormain。a)客戶采集啟動器,主要啟動采集線
4、程,單獨啟動一個線程進行數據采集b)在main函數中創建CollectionThread線程對象,并調用run函數啟動線程。c)注意:該啟動器可以由用戶發起為一個后臺服務,也可以由Unix的定時服務發起,我們采用使用Unix發起的方式。用戶后臺服務發起的方式只需要把線程的運行方式改變成循環就是。2.CollectionThread采集線程,負責啟動采集過程。a)封裝一個采集線程。該類主要調用采集器類DataCollector進行數據采集。b)函數run():就是主要創建DataCollector對象,并調用其collection函數進行數據采集。該函數是Thread的run函數覆蓋函數.產生D
5、ataCollector對象調用數據采集函數collect釋放資源1J線程關閉returnc)函數start():負責啟動線程,該函數來自Thread線程類.d)注意:該線程是否循環決定采集器啟動的方式是否利用Unix的定時啟動功能,如果采用Unix的定時功能,則該線程采集完畢自動關閉清空。3.DataCollector負責采集環境的處理與數據采集,分析處理a)所有的采集任務有該類完成,主要獲取本機IP,復制備份并清空日志文件,讀取日志文件,解析日志文件,匹配處理日志登錄/登出記錄獲取用戶登錄時間,在線用戶下次匹配。DataCollector0'ip:String能igdeade:Co
6、llect1口nLi3iene*collect():voidgetNativelPQ:StringppingLogBufferffiIenanie:String):MappedByteBufferSparseLogBufferfbgbuffer:MappedByteBufTer,logout:Vector,login:Vector):voidmafciyiogoiit:Vectorlogin:Vector):Vectopas$ivate(bgin:Vector,filereme:Wiring):voidactivate(filename:String):VectornitlogQb)函數get
7、NativeIP讀取要采集服務器的IP,該IP用屬性文件配置。c)函數initlog()負責調用Runtime執彳mmvshell指令進行日志文件的備份并清空原始文件。備份的文件名wtmpx+年(4位)+月(2位)+日(2位)+時(2位),比如wtmpx2008053013.注意:利用Unix系統的Kenerl函數讀取的時候,該文件必須采用x結尾,在這里用java處理就不需要。調用move/var/adm/wtmpx/.指令清空登錄歷史紀錄d)函數mappingLogBuffer主要把備份的日志文件映射為本地內存緩沖,便于后面解析。參數是備份日志文件名,返回MappedByteBuffer.w
8、已知要采集的日志文件名filename倉I建/var/adm/wtmpx日志文件的FileInputStream流得到FileChannel通過FileChannel得到日志文件的內存映射MappedByteBuffere)函數parseLogBuffer,負責解析緩沖的內存結構,利用參數返回兩個Vector結構對象,一個存放登錄數據,一個存放登出數據,Vecotor中存放的元素類型是LogRecord.該類型t#參考LogRecord類說明。上、判定日志數據結束V返回logout,login兩個Vector類型的結構文件結束已知日志數據內存映射MappedByteBuffer對象logbuf
9、fer,login與logout兩個Vector存放解析結構的結構按照wtmpx文件的二進、制格式解析日志數據文件沒有結束把解析好的數據形成LogRecord對象把登錄數據放入Vector類型的login結構,把登出數據放入Vector類型的logout結構【參考】#defineEMPTY0#defineRUN_LVL1#defineBOOT_TIME2#defineOLD_TIME3#defineNEW_TIME4-登錄進程-用戶進程-終止進程#defineINIT_PROCESS5#defineLOGIN_PROCESS6#defineUSER_PROCESS7#defineDEAD_PR
10、OCESS8f)函數activate負責把上次為匹配的數據讀取為Vector結構。便于后面匹配。參數是存放上次未匹配的登錄日志記錄,返回Vector結構,其中元素類型LogRecord。7已知要讀取的數據文件名filenameI,一乂文件存在判定.1I七.存在wVector結構)讀取數據到不存在g)函數match,負責匹配登錄/登出數據,并返回用戶登錄時間數據。參數是兩個Vector類型的登錄/登出數據結構,元素類型是LogRecord,返回的是匹配好的用戶登錄時長記錄,數據類型是Vector,其中元素類型是MatchedRecord,詳細說明請參考MatchedRecord類的說明。已知lo
11、gin,logout兩個Vector類型的數據結構循環logout結、構/按順序得到logout中LogRecord類型的登出對象在login中查找最近、的匹配用戶與IP計算登錄時間產生MatchedRecord對象,并放入Vector類型的結構h)函數passivate,負責把這次沒有匹配好的登錄記錄保存成文件,以便下次采集的時候匹配。參數是沒有匹配好的登錄記錄,類型是Vector,其中元素類型是LogRecord.已知需要保存的Vector類型login結構和文件名filename打開文件保存結構,并關閉文件Ai)函數collect,負責整個采集過程。這是該類中的唯一的一個public函數
12、,主要供采集線程調用。獲取本地IPgetNativelP初始化日志、文件initlog)JII;I注入LogDealer類型的logdealer對象日志文件內存映射mappingLogBuffer讀取上次未匹配、的數據activateW解析日志parseLogBufferw登出數據匹酉己match保存未匹配數據passivate調用logdealer的deal函數進行數據處理4.LogRecord類,負責登錄/登出數據封裝。LogRecord勃u&e:String>visittime:longguserip:Stringalabip:String5. MatchedRecord類
13、,負責匹配好的數據的封裝。MatchedRecord整user:Stringalogintime:long勖logouttime:long覿abip:String覬scrip:String能duration:long6. CollectionListener接口,規范采集好的數據的處理方式。a)函數deal,負責匹配好數據的處理,返回void,參數是Vector類型,元素類型是MatchedRecord,是匹配好的所有登錄時長數據。7. LogDealer類,負責匹配好數據的發送處理,如果發送失敗,則數據被保存。該類主要實現CollectionListener接口。a)函數init,主要初始化
14、服務器參數,服務器參數使用屬性文件配置IP與Porto刀口軟底I土乂件J獲取ip與portb)函數initSocket,主要初始化網絡連接。如果初始化失敗,則保存數據退出c)函數send,主要負責數據發送。該函數先發送歷史失敗數據。d)函數deal,調用上面的三個函數完成整個處理過程。并接受服務器接收成功的標志。(二)數據采集服務起器端1)數據實體類(原則上對應數據結構的實體表)2)類結構概要說明-類圖3)類功能結構說明-時序圖ServerLauncherDataRecieverThCollectionTh:DBEnvInit:DetailDAO:Detail1:start()initDAO(
15、)3:itSocket()<14:start()5:getDBParamter()6:47:getConnection(Properties)8:9: recieve()10: new11:12:insert(Detail)4)詳細說明1. ServerLauncher類:服務器數據接受器啟動器a) ServerLauncher主要負責啟動服務器接受線程b) 函數main,主要創建DataRecieverTh對象,并調用起其start函數啟動線程。2. DataRecieverTh類,服務器接受主線程。DataRecieverTh”collectionth:Vector覦ervesock
16、et:ServerSocket?由口:DetailDAOinitDAOQ:DetailDAOinitQ:void*run():void的n槍ocket。,start。a)主要負責接受客戶連接,并為每個客戶啟動一個數據接收線程來進行客戶數據接收。該類繼承Threadob)成員collectionth是Vector的靜態數據結構,負責保存所有客戶連接。其中元素類型是CollectionTh.c)成員serversocket服務器Socketd)成員dao封裝對數據的連接及其對數據表訪問封裝,具體說明參考DetailDAO說明。e)函數initSocket,負責網絡服務器的初始化。f)函數initD
17、AO,負責數據庫連接初始化,并初始化數據訪問對象dao。g)函數init服務讀取數據庫連接擦參數的讀取,數據庫連接參數用屬性文件配置driver,url,user,password四個key-value鍵值對。該過程由DBEnvInit中兩個靜態函數完成。h)函數run是Thread類的覆蓋函數,負責接收客戶連接,并建立客戶處理線程并啟動線程,并在collectionth中記錄該客戶線程處理對象。3. CollectionTh類,每個客戶數據接收處理類。CollectionTh皂Socket防inputstream:Objectinputstream*run():voidstartf)reci
18、eve。:Detaila)該類主要接收采集器發送過來的數據,接收成功后發送一個成功標志,然后保存接收的數據。該類繼承Thread。b)函數run接收線程過程,主要調用receive私有函數。c)函數recieve,通過inputstream讀取數據,并發送成功標記,然后調用全局的dao保存數據。4. DBEnvInit類,數據庫環境初始化類DBEnvInit*getDBParamter():PropertiesgetConnection(dbpararrieter:Properties):Connectiona)該類封裝了兩個函數工具,完成對數據庫的連接。b)函數getDBParamter,負
19、責從屬性文件讀取數據庫連接參數。c)函數getConnection,負責根據連接屬性打開與數據庫的連接。注意:該工具可以提供對數據源的支持,在后繼版本中提供數據源與Hibernate的支持描述。5. DetailDAO類a)提供對Detail數據庫的插入等操作訪問。b)函數insert負責把接收到的數據插入到數據庫。6. BasicDAO<EntityType>泛型類a)封裝對數據庫訪問最常用的規范。在后面的DAO類,缺省必須實現該接口。7. Detail類,采集數據原始記錄實體類。a)該類與MatchedRecord完全一樣,在設計的時候為與客戶端分開,故意設計成實體類,主要便于
20、使用Hibernate。b)Detail類對應數據庫中對應的t_detail_x31張表。注意:該設計中缺少一個日志類,請自行設計,或采用apache中log4j.jar三、數據表結構設計(一)原始采集用戶登錄時長明細表(details_x)其中x是1-31字段英文名字段漢字名約束條件說明loginname登錄名Varchar(20)loginip登錄IPVarchar(24)logintime登錄時間Timestamplogouttime登出時間Timestamplabip實驗室IPVarchar(24)duration登錄時長long二、數據整合、UI設計、數據采集類圖設計1 .類結構概要
21、說明1)數據實體類結構(原則上對應數據庫表)2)數據整合類ServerLauncherDatelntegratorTh整合采用兩種實現;1、存儲過程2、用仲幅代碼實現*run()start。一-htegrartionFacto7*getlntegrationeallDAO():Integration*gethtegrationClientDAO0:IntegrationhtEg同ionByCM他con:Connection'integrate。«kil8rfece»IntegrationDBEnvTiitetDBParamterOgetConrectionODela
22、ilYearDAODetaiIYearIntegralonByClient電8n:ConnectionDetailMonthDAODetailIMontti«lntertace»BasicDAO<EntityType>公一*insert)*getByTimeO*in&ert()DetailDayDAO.、DetailDayIntsgratedDetailDayDAOkitegratedDetailDayIntegratedDetailMonthDAOIntegratedDetailMonth2 .類功能結構說明3 .類詳細說明1) ServerLaunc
23、her類:整合啟動程序類。2) DatalntegratorTh類:整合線程,主要完成整合的調用。3) Integration接口:整合接口規范4) IntegrationByCall類:整合的存儲過程調用實現5) IntegrationByClient:整合的Java調用實現。6) IntegrationFactory類:利用工廠模式產生的一個類,負責產生整合對象。7) DBEnvInit類:見數據采集存儲中的說明。8) DetailYearDAO,DetailMonthDAO,DetailDayDAO,IntegratedDetailDayDAO,IntegratedDetailMonthDAO,IntegratedDetailYearDAO負責每個表的整合。1 .負責數據庫中數據表的實際訪問操作,原則樣一個表對應一個DAO類。注意:整合過程分兩類:1 .根據客戶整合。2 .根據實驗室整合。由于整合過程就是數據庫分組統計查詢與數據插入操作,所以設計中其邏輯流程沒有設計。三、數據表結構設計1.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省無錫錫東片2025屆初三語文試題中考模擬試題含解析
- 五邑大學《開放性實驗》2023-2024學年第二學期期末試卷
- 蘆溪縣2025年數學三下期末統考模擬試題含解析
- 遼寧稅務高等專科學校《機電工程專業英語》2023-2024學年第一學期期末試卷
- 嘉興職業技術學院《臨床流行病學》2023-2024學年第二學期期末試卷
- 擔保協議書的范例二零二五年
- 二零二五場地轉租協議書
- 知識產權委托代理協議書二零二五年
- 學校校長聘用合同書協議書二零二五年
- 二零二五影視劇導演聘用勞動合同書例文
- 愛護牙齒-兒童保健課件
- 電廠水化驗培訓
- 社區衛生服務中心的運營與管理策略
- DB4401∕T 10.10-2019 反恐怖防范管理 第10部分:園林公園
- 機動車檢測站可行性研究報告
- 《醫學影像檢查技術學》課件-腹部X線攝影
- GB/T 30889-2024凍蝦
- 地產營銷培訓課件
- 【Flywheel】2024年電商消費趨勢年度報告
- 石墨勻質板施工方案
- 國核鈾業發展有限責任公司招聘筆試沖刺題2025
評論
0/150
提交評論