Tarena 培训集团
电信营运设计
后台:数据采集与整合
文档编号:
Version 1.0
2008 年 05 月
达内 IT 培训集团
Tarena 培训集团
修改记录
摘要 日期 修改原因 版本
2008-05-28
新建 1.0
Tarena 培训集团
一、 数据采集
一、 UI 设计
(无)
二、 数据采集类图设计
(一) 数据采集客户端
1) 类结构概要说明-类图
CollectionListener
deal(logrecord : Vector<MatchedRecord>) : void
<<Interface>>
LogRecord
user : String
visittime : long
userip : String
labip : String
pid : int
DataCollector
ip : String
logdealer : CollectionListener
collect() : void
getNativeIP() : String
mappingLogBuffer(filename : String) : MappedByteBuffer
parseLogBuffer(logbuffer : MappedByteBuffer, logout : Vector, login : Vector) : void
match(logout : Vector, login : Vector) : Vector
passivate(login : Vector, filename : String) : void
activate(filename : String) : Vector
initlog()
CollectionLauchor
main(args : String[]) : static void
CollectionThread
run() : void
start() : void
LogDealer
ip : String
port : int
socket : Socket
inputstream : ObjectInputStream
init() : void
initSocket() : void
send() : void
MatchedRecord
user : String
logintime : long
logouttime : long
labip : String
userip : String
duration : long
2) 类功能结构说明-时序图
Tarena 培训集团
:
CollectionLauchor
:
CollectionThread
:
DataCollector
: LogDealer : LogRecord :
MatchedRecord
1: start( )
2: collect( )
16: deal(Vector)
6: new
11: new
3: getNativeIP( )
4: initlog( )
5: mappingLogBuffer(String)
8: parseLogBuffer(MappedByteBuffer, Vector, Vector)
7: activate(String)
10: passivate(Vector, String)
9: match(Vector, Vector)
12: new
13: init( )
15:
14: initSocket( )
17: send( )
3) 类详细说明
1. CollectionLaunchor 采集主程序类,发动采集线程。
CollectionLauchor
main()
a) 客户采集启动器,主要启动采集线程,单独启动一个线程进行数据
采集
b) 在 main 函数中创建 CollectionThread 线程对象,并调用 run 函数启动
线程。
Tarena 培训集团
CollectionThread 创建线程
th=new CollectionThread
启动线程
th.start();
c) 注意:该启动器可以由用户发起为一个后台服务,也可以由 Unix 的
定时服务发起,我们采用使用 Unix 发起的方式。 用户后台服务发
起的方式只需要把线程的运行方式改变成循环就是。
2. CollectionThread 采集线程,负责启动采集过程。
a) 封装一个采集线程。该类主要调用采集器类 DataCollector 进行数据
采集。
b) 函数 run():
就是主要创建 DataCollector 对象,并调用其 collection 函数进行数据
采集。该函数是 Thread 的 run 函数覆盖函数.
DataCollector产生
对象
调用数据采集函
collect数
释放资源
return线程关闭
c) 函数 start():