付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 零售业门店经理面试技巧详解
- 护理信息系统的应用与管理
- 大学就业指导讲师培训
- 专科英语专业就业指南
- 护理科研设计与实施
- 快消品行业市场分析高级专员面试技巧
- 零售业培训专员招聘面试全解
- 基于智能化的高效焊接技术研究
- 旅游行业的数据分析工程师面试全解析
- 基于人工智能的现代农业种植管理系统
- 投诉处理资料归档管理制度
- 1.3 《利用磁铁辨别方向》 课件(内嵌视频) 2025-2026学年科学三年级下册教科版
- 《网页设计语言》-第1章 HTML
- 分级诊疗双向转诊共享决策机制
- 2026年及未来5年中国连续排放监测系统(CEMS)行业市场发展现状及投资方向研究报告
- (2026春新版)人教版二年级数学下册全册教学设计
- 炼钢厂各岗位薪酬制度
- 产前诊断中心建设方案
- 乡镇卫生院医保基金使用管理制度
- 横纹肌肉瘤免疫治疗耐药性的逆转策略
- 2026年锡林郭勒职业学院单招综合素质考试题库附答案解析
评论
0/150
提交评论