基于SSH的电信数据采集与整合.docx
《基于SSH的电信数据采集与整合.docx》由会员分享,可在线阅读,更多相关《基于SSH的电信数据采集与整合.docx(50页珍藏版)》请在冰豆网上搜索。
基于SSH的电信数据采集与整合
基于SSH的电信数据采集与整合
序言
本课题采用由亚信公司提供的“电信用户管理和计费系统NetCTOSS”该系统是一个典型的基于Unix平台、Mysql数据库、Web界面,以Java语言实现的大型软件项目,是为电信运营的IP计费服务的。
该系统运行于Tomcat平台,采用JavaEE架构、Struts框架,Hibernate、Spring技术及Mysql数据库,并成功运行于SunSolarisUNIX及Windows2000环境下。
该系统主要分为用户自服务管理模块,管理员管理模块,用户管理等模块,资费模块,帐单和帐务模块以及数据采集与整合模块。
本论文主要阐述的是该系统下的两个模块,数据采集与整合。
数据采集与整合是整个系统的后台实现,功能是定期采集(采集系统)原始计费日志文件,并将采集的数据封装整合,然后通过Socket将数据传送到数据采集服务端;中数据采集服务端将数据保存到Mysql数据库当前时间所对应的t_daily_x表中,最后周期性进行数据的整合(整合系统)。
该课题在设计中要解决的主要问题就是在采集过程中,如何解决数据匹配问题,如何将采集到的有效数据封装成我们需要的结构并输出到网络另一端,由接收端将数据插入到数据库中,如何在数据库中进行周期整合,产生系统所需要的各个表。
指导这些问题解决的思想就是文件读写、socket编程和UNIX下的作业操作。
在设计中主要用到的语言以及技术主要是Java、jdbc。
之所以选择这些语言及技术,一方面是因为在电信运营支撑系统中,安全性有着很关键的作用,安全性直接影响着整个系统的使用,另一方面是在Java语言中,已经存在对日志文件读取的各种方法,可以很方便的实现采集。
考虑到数据采集与整合的这些诸多特点,所以在做该子系统时选择了Java、jdbc等语言和技术。
第1章概述
1.1课题的背景及意义
随着网络的不断发展,网络几乎进入了家家户户。
查资料需要网络,看新闻需要网络,看电影需要网络,买东西也需要网络,网络给人们带来的方便无处不在,人们需要使用网络的愿望也越来越大。
无法想象人们离开网络会是什么样的。
现阶段,要想上网就必须向网络运营商申请代理服务器,随之而产生的问题就是计费和管理问题。
另一方面为了让用户更放心的使用网络运营商的代理服务器,让用户随时可以查询自己的信息及使用情况,方便网络运营商管理一系列的复杂事物,以及处理大量的数据,我们设计了本系统。
系统只针对电信运营商出租的实验室,即服务器。
《基于SSH电信系统》是利用J2EE平台下的WEB技术设计和运行。
通过读取服务器日志文件采集数据然后整和到数据库中,供用户和管理员使用.其中持久层采用封装了JDBC的Hibernate框架,数据库采用Mysql,利用Struts框架作为控制器,页面显示采用JSP技术,并且用Spring框架整合Hibernate、Struts,完成企业级应用。
1.2课题内容及目标
基于SSH的电信系统的后台数据服务模块分为数据采集和数据整合模块。
数据采集模块负责读取数据服务器日志文件,并进行过滤,将符合要求的数据存入数据库;数据整合端负责将数据库中的原数据按年、月、日进行数据整合,并将整合后的数据存入数据库中。
1.3开发及运行环境
基于SSH的电信系统的后台数据服务模块在开发时采用C/S架构,使用Myeclipce6.0的运行环境;服务器和客户机都采用WindowsXP操作系统;数据库服务器是Mysql5.0;
第2章系统分析和设计
2.2系统设计思想
随着网络的不断发展,网络几乎进入了家家户户。
查资料需要网络,看新闻需要网络,看电影需要网络,买东西也需要网络,网络给人们带来的方便无处不在,人们需要使用网络的愿望也越来越大。
无法想象人们离开网络会是什么样的。
现阶段,要想上网就必须向网络运营商申请代理服务器,随之而产生的问题就是计费和管理问题。
另一方面为了让用户更放心的使用网络运营商的代理服务器,让用户随时可以查询自己的信息及使用情况,方便网络运营商管理一系列的复杂事物,以及处理大量的数据,我们设计了本系统。
系统只针对电信运营商出租的实验室,即服务器。
《基于ssh的电信计费系统》是利用J2EE平台下的WEB技术设计和运行.通过采集数据然后整和到数据库中,供用户和管理员使用.其中持久层采用封装了JDBC的Hibernate框架,数据库采用Oracle,利用Struts框架作为控制器,页面显示采用JSP技术,并且用Spring框架整和Hibernate、Spring,完成企业级应用。
2.2系统功能描述:
WEB系统可供用户和管理员查询相关内容。
通过登录该系统,用户可以完成查询帐单,修改个人信息,浏览电信运营商提供的各种资费服务。
管理员可以完成查询所有用户帐单,修改管理员信息,对用户进行管理(开通,关闭,删除用户帐号),对管理员进行管理(开通,关闭,删除管理员帐号),修改资费项目,查看电信服务器运行情况。
采集模块每小时执行一次,从日志文件中循环读取数据,过滤掉不符合要求的数据,采集符合要求的数据并将数据封装成bIDR结构发送到中央服务器端。
整合模块根据采集到的数据进行整合并插入到各个表中,每小时执行一次。
2.3需求分析:
各模块功能:
资费管理:
增、删、改、查资费信息(指定价格)
管理员管理:
增、删、改、查管理员信息
用户管理:
增、删、改、查用户信息(开通帐号,修改自身信息和需求)
帐单查询:
按月生成用户月计费帐单
帐务查询:
按月生成帐务月、年统计报表(对自己业务的查询,对服务器查询,管理)
采集模块:
定期采集(次/小时)原始计费Log(wtmpx)文件,整理成bIDR数据清单,并上传给中心处理系统。
中心处理系统(接收系统)侦听并收集采集系统发送的数据信息bIDR,并将数据保存的数据库表t_detail_X。
整合模块:
按小时合并清单表t_detail_X生成所有用户计费数据日表t_day_X;
按天合并日表t_day_X生成所有用户计费数据月表t_month_X;
按月合并月表t_month_X生成所有用户计费数据年表t_year_X;
按小时合并清单表t_detail_X生成所有Lab_IP数据日表t_day;
按天合并日表t_day生成所有Lab_ip数据月表t_month;
按月合并月表t_month生成所有Lab_ip数据年表t_year;
1、用户管理需求:
用户开通管理:
管理用户登陆OpenLab的帐号,包括帐号开通、暂停(加锁)、恢复、删除。
用户资料管理:
管理用户资料,包括姓名(单位)、身份证号码、住址及资费信息等。
用户信息:
ID,姓名、帐务帐号/密码、OpenLab帐号/密码、状态(正常/暂停/关闭)、联系电话、Email、开通日期、停止日期、付款方式(现金/邮寄/支票/转帐/电子银行)、证件号码、职业(学生/IT从业人员/非IT从业人员)、国籍(中国/美国/加拿大/日本/英国/澳大利亚/其他)、性别(男/女)、单位、联系地址、邮政编码。
注意:
本系统一个用户对应一个帐务帐号,可以对应多个OpenLab帐号。
2、管理员管理需求:
管理员开通管理:
管理用户登陆NetCTOSS的帐号,包括帐号开通、暂停(加锁)、恢复、删除。
管理员资料管理:
管理管理员资料,包括姓名、身份证号码、住址等。
管理员权限管理:
改变管理员的各类权限。
管理员信息:
ID,姓名、帐号(一个)、密码、状态(正常/暂停/关闭)、联系电话、Email、开通日期、停止日期、权限
注意:
一个用户对应一个帐号。
3、帐单管理需求:
整合系统按月生成用户月帐单。
帐单信息用户标识信息:
帐单ID,姓名、帐号、状态(正常/暂停/关闭)、联系电话、Email、开通日期.
帐务信息:
帐号、日期、登录时长、本月费用
帐单明细:
登录时间退出时间时长
4、帐务管理需求:
按月、年分别生成《月帐务信息统计报表》和《年帐务信息统计报表》。
月帐务信息
生成一个计费月周期中,每一天的帐务信息。
月帐务信息:
日期时长费用
年帐务信息
生成一个计费年周期中,每一月的帐务信息。
年帐务信息:
月份时长费用
5、资费管理需求:
用户可以通过登录系统来查询电信公司所提供的一些资费信息,以方便用户来使用。
管理员通过登录系统可以根据公司运营情况来向其中增、删、改资费信息。
资费信息:
资费ID,资费名称,月租,使用费,描述
6、采集模块需求:
所需系统文件:
计费Log文件
数据库表资料信息表:
用户信息、管理员信息、资费信息、URL信息
数据存储表:
明细表、日表、月表、年表
7、整合模块需求:
所需数据库表:
用户消费明细表、日表、月表、年表
产生数据库表:
服务器被使用量的日表、月表、年表
业务模型:
用户首先通过3A服务器验证后,可以使用出租实验室,并记录用户的登录与退出信息,信息经过加工处理生成系统所需数据持久化在数据库中,供管理和查询,如下图:
2.4系统概要设计
2.4.1系统模块划分:
该系统包括两个子系统:
数据采集与整合系统与WEB系统。
在数据采集与整合系统中又可分为数据采集模块与数据整合模块。
数据采集与整合系统中的数据采集模块主要功能是将电信服务器上的计费文件中所有用户的消费记录采集并且整理出来,然后插入到数据库中。
从功能上讲,该系统共分为三个模块,分别是采集模块,入库模块和网络模块。
从部署运行方面讲该采集系统分为客户端和服务器端两个部分。
客户端部署在电信服务器上,用于采集和整理计费文件中的原始记录并把结果发送到服务器端。
服务器端用于接收从客户端发送过来的数据,并持久化到数据库中相应的表中。
数据整合模块主要功能是将数据库中的用户原始的消费数据进行整合,形成可供用户和管理查询的帐单,如日清单,月报表,年报表,以及仅供管理员查询的帐务清单,主要用于考察电信服务器的运行情况。
该子系统是电信运营支撑系统中的后台实现,也是WEB系统的依赖。
WEB系统是整个电信运营支撑系统的表现,是和用户进行交互的部分。
该系统可供用户和管理员查询相关内容。
通过登录该系统,用户可以完成查询帐单,修改个人信息,浏览电信运营商提供的各种资费服务。
管理员可以完成查询所有用户帐单,修改管理员信息,对用户进行管理(开通,关闭,删除用户帐号),对管理员进行管理(开通,关闭,删除管理员帐号),修改资费项目,查看电信服务器运行情况。
根据以上功能,该系统可分为六个模块,用户管理模块,管理员管理模块,用户自服务模块,帐单管理模块,资费管理模块,帐务管理模块。
2.4.2业务流程图:
通过底层的采集与整合模块将系统所需要的数据插入到数据库当中,供用户及管理员使用。
由图可看出,用户想使用Openlab服务器就必须通过3A服务器的验证,验证通过则允许使用并记录日志。
在web部分用户可以通过登录系统来查询及修改自己的信息,管理员可以管理相应的信息。
如用户管理和计费管理
2.4.3总体架构图:
采集系统解析日志文件中的信息,把对我们有用的信息采集回来,封装成一个结构传输到中央处理系统,然后持久化到数据库当中,经过整合这些数据,再分别存储到不同的表中,供系统使用。
通过登录系统,用户可完成相应的操作,包括查询自己的消费信息,修改自己的一些信息等等。
管理员则可对用户、业务及服务器进行管理。
2.4.4课题相关模块
2.4.4.1系统部署图:
下图中“中央处理器”模块包括:
数据采集服务端、数据整合端,也包括存储数据的数据库。
采集部署图
查询和管理部署图
2.4.2.2部署、用例与组件图
用例图
用例描述
用例名称
查询月帐单
描述
管理员可以进行月账单查询
用例参与者
管理员
前置条件
管理员已经登录成功
基本事件流
登录成功后,管理员进入系统主页面,在主页面的导航菜单中点击[帐单管理]链接,页面就显示出系统中所有帐务帐号在上月的总的费用的列表
基本事件流
登录成功后,管理员进入系统主页面,在主页面的导航菜单中点击[帐单管理]链接,页面就显示出系统中所有帐务帐号在某年某月总的费用的列表,因为帐务帐号很多,不利于查看,在此页面上有分页的功能,在列表下方有上一页和下一页的链接和选择页码的拉列表框,可以直接点击这两个链接或直接在列表框里选择页码来跳转到帐单列表页面,显示指定页面的信息
基本事件流
登录成功后,管理员进入系统主页面,在主页面的导航菜单中点击[帐单管理]链接,页面就显示出系统中所有帐务帐号在某年某月总的费用的列表,在此页面中有查询某帐务帐号在某年某月的功能,操作流程是,在页面上方有文本提示写着帐务帐号,后边有一个文本框,在里面填写你要查询的帐务帐号名,后边还有两个下拉列表框,后边文本提示分别写着年、月,在这两个下拉列表框里分别选中你要查询的年和月,然后点击查询按钮完成操作,如果输入的帐务帐号存在,就会在列表页面显示此帐务帐号在某年某月总的费用,如果在帐务帐号文本框里没有输入会查某年某月所有帐号总的费用
其他事件流
无
异常事件流
如果查询不到任何结果,则显示没有查询到任何记录。
后置条件
无
用例名称
查询月帐单明细
描述
管理员可以进行月账单明细进行查询
用例参与者
管理员
前置条件
管理员已经登录成功
基本事件流
登录成功后,管理员进入系统主页面,在主页面的导航菜单中点击[帐单管理]链接,页面就显示出系统中所有帐务帐号在某年某月总的费用的列表,在每个帐务帐号的总费用之后都会有一个[明细]的链接,直接点击链接就会进入帐单明细页面,此页面会显示该帐务帐号上所有业务帐号上发生的所有费用的明细信息
其他事件流
无
异常事件流
无
后置条件
无
组件图
帐务管理模块:
用例图
用例描述
用例名称
查询月总计清单
描述
管理员浏览服务器的月使用时长清单
用例参与者
管理员
前置条件
管理员已经登录成功
基本事件流
登录成功后,进入系统主页面,管理员点击左边导航条的[帐务管理]后,则显示当前月前一月以小时为单位的所有服务器一整月总计使用时间长度列表页面.
基本事件流
登录成功后,进入系统主页面,管理员点击左边导航条的[帐务管理]后,则显示当前月前一月以小时为单位的每台服务器一整月总计使用时间长度列表页面.管理员可以选择年份和月份,查看指定某年某月的以小时为单位的所有服务器一整月总计使用时间长度列表
异常事件流
如果查询不到任何结果,则显示没有查询到任何记录。
后置条件
无
用例名称
查询年总计清单
描述
管理员浏览服务器的年使用时长清单
用例参与者
管理员
前置条件
管理员已经登录成功
基本事件流
登录成功后,进入系统主页面,管理员点击左边导航条的[帐务管理]后,则进入服务器月总计列表页面,管理员可点击页面上方[服务器年帐务查询]链接,进入服务器年总计列表页面,在该页面显示以小时为单位的所有服务器去年总计使用时间长度.
基本事件流
登录成功后,进入系统主页面,管理员点击左边导航条的[帐务管理]后,则进入服务器月总计列表页面,管理员可点击页面上方[服务器年帐务查询]链接,进入服务器年总计列表页面,在该页面管理员可以选择一个年份,查看指定年的以小时为单位的所有服务器一整年总计使用时间长度
异常事件流
如果查询不到任何结果,则显示没有查询到任何记录。
后置条件
无
用例名称
查询月详细清单
描述
管理员浏览服务器一月每日的使用时长清单
用例参与者
管理员
前置条件
管理员已经登录成功
基本事件流
登录成功后,进入系统主页面,管理员点击左边导航条的[帐务管理]后,进入月帐务总计页面.在该页面中管理员点击要查看明细的服务器项最后的[详细清单]链接,进入月帐务明细页面,在该页面中显示出指定服务器在指定月份中每一天被访问的时长信息。
异常事件流
如果查询不到任何结果,则显示没有查询到任何记录。
后置条件
无
用例名称
查询年详细清单
描述
管理员浏览服务器一年每月使用时长的清单
用例参与者
管理员
前置条件
管理员已经登录成功
基本事件流
登录成功后,进入系统主页面,管理员点击左边导航条的[帐务管理]后,则进入服务器月总计列表页面,管理员可点击页面上方[服务器年帐务查询]链接,进入服务器年总计列表页面,在该页面中管理员点击要查看明细的服务器项最后的[详细清单]链接,进入年帐务明细页面,在该页面中显示出指定服务器在指定年份中每个月被访问的时长信息。
异常事件流
如果查询不到任何结果,则显示没有查询到任何记录。
后置条件
无
组件图
2.5课题设计思想:
本人所负责模块的设计思想是从记录有用户登录与退出信息的文件中读取信息,并经过解析,提取出有效信息,并封装成我们所需要的结构,通过SOCKET编程将采集到的数据提交到中央处理系统,经过处理插入到数据库的原始数据表中。
然后经过整合,分别整合成符合系统需求所需要的各个表中,供系统使用,如图1:
图1:
采集与整合设计模型
2.6课题详细描述:
用户首先需要访问3A服务器(Authentication:
认证,Authorization:
授权,Accounting:
记账,UNIX系统本身就可以作为3A服务器),3A服务器根据其中事先已经记录的用户名(UNIX下:
/etc/shadow)及密码(UNIX下:
/etc/passwd)进行校验。
验证通过则3A服务器允许用户登录。
登录成功后,用户可以使用出租实验室,并生成一个LOG文件。
同时将用户的登录与退出的所有信息记录到文件中(UNIX系统中的/var/adm/wtmpx),该文件中记录的数据包括用户名,用户ID,用户IP,进程号,登录类型,状态,时间,SESSIONID等信息,这些都是为后面的数据采集做准备。
数据采集主要是解析3A服务器记录的用户上、下网数据形成用户登录数据,通过SOCKET方式将数据从3A服务器发送至中央处理系统,中央处理系统将收到的数据进行持久化处理保存到Mysql数据库里对应的表(details_x:
x代表一个月中的每一天)中。
在这个过程中所要解决的问题有:
(1)如何从文件中读取数据;
(2)如何过滤并选择对我们有用的数据;(3)如何匹配同一个用于上、下网的信息,以及采集过程中有可能产生的其它问题(4)怎样将选择的数据封装成我们所要的结构,并传输到中央处理系统中。
数据整合模块,将details_x表中的数据整合到detaildays_x中,x代表一个月中的第几天;将detaildays_x表中的数据整合到detailmonths_x表中,x代表一年中的第几个月;将detailmonths_x表中的数据整合到detailyears_x表中,x代表每一个年。
另一方面,将details_x表中的数据整合到detaildays,detailmonths,detailyears三个表中,这三个表分别存放的是每个服务器在一天、一个月以及一年中的使用量,这三张表只能供管理员来使用。
这些操作需要在数据库中通过写存储过程和定制作业来完成。
需要说明的是上面的几张表,detaildays_x表是用户计费数据日表(统计当天每小时每个服务器上的每个用户的总时长)每条数据记录的是:
一个服务器上的一个用户某一小时的总时长对于一个服务器上的一个用户,最多有24条记录;detailmonths_x表是用户计费数据月表(统计当月每天每个服务器上的每个用户的总时长)每条数据记录的是:
一个服务器上的一个用户某一天的总时长对于一个服务器上的一个用户,最多有31条记录;detailyears_x表是用户计费数据年表(统计当年每月每个服务器上的每个用户的总时长)每条数据记录的是:
一个服务器上的一个用户某一月份的总时长对于一个服务器上的一个用户,最多有12条记录。
采集模块从日志文件中采集数据并封装成一个结构,然后将这个结构传送到中央处理系统中,然后插入到明细表中,如图2左半部分所示。
由采集模块插入到数据库中的数据是一些零碎的,比较详细的记录,这些数据对用户来说是没什么用处的,需要由整合模块整合到各个表中以供用户使用。
整合模块首先将由采集模块采集到的数据按服务器IP,用户登录IP和用户名分组,然后将分组查询到的数据统计后插入到天表中,进而再将天表中的数据整合到月表,月表中的数据整合到年表。
需要说明的一点就是整合模块将用户消费的原始数据信息整合成了两套表,一套表包括detaildays_x,detailmonths_x,detailyears_x。
这些表供用户使用,用来查询自己的消费信息;另一套表包括detaildays,detailmonths,detailyears。
这套表供管理员来使用,用来统计各服务器的使用情况,为企业的决策提供依据,如图1右半部分所示。
这两套表是系统中资费管理模块,帐单查询模块,帐务查询模块赖以运行的基础。
图2:
采集与整合数据流程
2.5数据库设计
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及应用系统,使之能够有效地储存数据,满足各种用户的应用需求.
由于整个电信运营支撑系统的功能很复杂,并且要存取大量的数据,因此简单的使用文件来存储和管理数据显然是不明智的。
因此,本系统采用Mysql数据库来存储和管理数据。
根据系统需求分析需要创建以下的数据表来存储数据。
基于SSH的电信系统的后台数据的采集与整合模块涉及到的数据库设计:
1、details_x表用于保存从采集系统传过来的数据,由中央处理系统负责插入到数据库中。
31张表
字段名称
数据类型
说明
Login_name
Varchar(20)
用户登录姓名
Login_ip
Varchar(128)
用户登录IP
Login_date
timestamp
用户登录时间
Logout_date
timestamp
用户退出时间
Lab_ip
Varchar(128)
服务器IP
Time_duration
long
时长
2、detaildays_x表是用来统计用户计费数据日表,31张表
字段名称
数据类型
说明
Login_name
Varchar(20)
用户登录名
Login_ip
Varchar(128)
用户登录IP
Logout_date
timestamp
统计日期
Lab_ip
Varchar(128)
服务器IP
Time_duration
long
时长
3、detailmoths_x表是用来统计用户计费数据月表,12张表
字段名称
数据类型
说明
Login_name
Varchar(20)
用户登录名
Login_ip
Varchar(128)
用户登录IP
Logout_date
timestamp
统计日期
Lab_ip
Varchar(128)
服务器IP
Time_duration
long
时长
4、detailyears_x表是用来统计用户计费数据年表,2005-2014年10张表
字段名称
数据类型
说明
Login_name
Varchar2(20)
用户登录名
Login_ip
Varchar2(128)
用户登录IP
Logout_date
timestamp
统计日期
Lab_ip
Varchar2(128)
服务器IP
Time_duration
long
时长
5、detaildays是用来存储服务器一天之内