电信采集子项目1(大体架构)

大体分为两个方面:

  1.客户端   负责采集各个区域产生的数据信息分为5个模块

    1.1  配置模块

    1.2  日志模块

    1.3  采集模块

    1.4  备份模块

    1.5  网络模块

  2.服务器   接收数据

    1.1  配置模块

    1.2  日志模块

    1.3  入库模块

    1.4  备份模块

    1.5  网络模块

BIDR类  用来分装采集好的数据

接口

Gather接口    客户端采集模块

  负责采集指定文件中的数据(AAA服务器产生的文件)
  需要实现的方法:
  Collection<BIDR> gather();

  采集文件样例:
  #briup1660|037:wKgB1660A|7|1239110900|44.211.221.247
  #briup4418|037:wKgB4418A|7|1239138480|251.196.223.191
  #|037:wKgB1660A|8|1239203860|44.211.221.247
  ...
  ..

  问题:
    1.怎么获得文件路径
    2.了解每一行数据的意思
      2.1 数据中使用的是|进行分割
      2.2 数据一共分为俩种
        遵循7上8下的规则
          包含 7 的数据 表示用户上线
          包含 8 的数据 表示用户下线
          包含7的数据
        数据分为五个部分
          第一部分:登录的用户名字(去掉#号)
          第二部分:NAS服务器的名称
          第三部分:一定是7
          第四部分:上线的时间(单位是秒)
          第五部分:登录时的IP
      2.4 包含8的数据
        数据分为五个部分
          第一部分:一定是个符合 #
          第二部分:NAS服务器的名称
          第三部分:一定是8
          第四部分:下线的时间(单位是秒)
          第五部分:登录时的IP

    3.如何读写数据
    4.如何封装数据
    5.采集的数据分俩种情况
      第一种情况数据:
        用户上线了同时也下线了
      第二种情况数据:
        用户上线了但是还没有下线
    6.俩种数据情况怎么处理
      上面描述的第一种数据:
        封装好对象之后就准备传给服务器端
      上面描述的第二种数据:
        进行数据的备份,在一下次采集中,需要把这个备份的数据重新读出来使用,因为用户可能在一下次采集中下线了
    7.第二次读取数据的时候,如何从第一次读完数据的下一行开始读
      可以记录一下本次总共读取了多少个字节,下一次可以直接跳过这么多个字节,接着读就可以了
    8.在读取过程中或者处理过程中,如果出现了异常,需要把数据进行备份
    9.注意重要信息的日志记录

Client接口 客户端网络模块
  负责把采集好的数据发给服务器
    需要实现的方法:
      void send(Collection<BIDR> c)
问题:
  1.如何得到连接服务器的相关信息
  2.如何得到采集好的数据
  3.如何把数据发送给服务器
  4.如果发送数据失败怎么处理
  5.注意重要信息的日志记录

Server接口 服务器端网络模块
  负责接收客户端传过来的数据
    需要实现的方法:
    Collection<BIDR> revicer();
      void shutdown();
问题:
  1.如何获得服务器启动时候用的相关信息
  2.如何关闭关闭服务器
  3.如何接收客户端传过来的信息
  4.如何处理客户端并发的问题
  5.接收到数据之后一下步怎么做
  6.数据的接收或者处理过程备份的问题
  7.注意重要信息的日志记录

DBStore接口 服务器端入库模块
  负责接收到的数据插入到数据库中
    需要实现的方法:
    void saveToDB(Collection<BIDR> c)
   问题:
    1.如何获得连接数据库的相关信息
    2.怎么把数据插入到数据库中
    3.插入数据时候的效率问题
    4.什么样的数据对应哪一种表

Logger接口 公共的日志模块
   负责记录系统运行过程的一些重要信息
    需要实现的方法:
      void debug(String msg);
      void info(String msg);
      void warn(String msg);
      void error(String msg);
      void fatal(String msg);
问题:
  1.怎么来实现日记记录
  2.了解日志级别
  3.怎么设置日志的级别
  4.怎么获得日志对象
  5.怎么控制日志的格式
  6.怎么控制日志输出到控制台和指定文件中

    BackUP接口 公共的备份模块
      负责备份一些没有处理完的数据
        需要实现的方法:
          void store(String filePath, Object obj,
          boolean append)
          Object load(String filePath, boolean del)
问题:
  1.如何获得备份文件存放的目录信息
  2.如何把数据备份到文件
  3.如何读取文件中的备份数据
  4.如何实现备份数据时候的追加或者是覆盖
  5.如何控制读取备份数据后文件是否需要删除

Configuration接口 公共的配置模块
  该模块相当于一个工厂
负责
  1.产生各个模块对象
  2.读取各个模块所需的信息,并且把信息注入到每个模块中
    注:这时候需要每个模块都实现接口WossModule
  3.如果某个模块A中需要用到配置模块,那么就需要把自己(因为自己就是配置模块)注入到这个模块A中
    注:这时候需要模块A实现接口ConfigurationAWare

    需要实现的方法:
      Logger getLogger();
      BackUP getBackup();
      Gather getGather();
      Client getClient();
      Server getServer();
      DBStore getDBStore();

问题:
  1.怎么获得每个模块的相关信息
  2.如何创建每个模块的对象
  3.怎么把每个模块需要的数据注入到模块中
  4.什么时候可以把自己(配置模块本身)注入到需要的模块中

    WossModule接口

    例如:模块A中需要使用一些参数(比如读取xml的路径、连接数据的地址等等),模块A就需要实现WossModule接口,那么这个模块A就有一个方法:
    init(Properties p)

    将来我们就可以调用这个init方法,把数据注入到模块A中

ConfigurationAWare 接口

  Configuration是配置模块接口
    例如:模块A中需要使用到配置模块,模块A就需要实现ConfigurationAWare接口,那么这个模块A就有一个方法:
    setConfiguration(Configuration c)

将来我们就可以调用这个方法将配置模块对象注入给模块A

数据库:
  1.有31张表
  t_detail_1
  ..
  t_detail_31

表中的列:
  (
  aaa_login_name VARCHAR2(30),
  login_ip VARCHAR2(32),
  login_date DATE,
  logout_date DATE,
  nas_ip VARCHAR2(32),
  time_duration NUMBER(10)
  )
  2.每张表对应一个日子
  3.不同的数据需要插入到不同的表里面
    例如:1号(不关注年和月)产生的数据,就需要把数据插入到第1张表中,15号产生的数据,就需要插入到第15张表里面
  4.建表语句
使用PL/SQL建表
  BEGIN
  FOR i IN 1..31 LOOP
  EXECUTE IMMEDIATE
  ‘CREATE TABLE t_detail_‘||TO_CHAR(i)||
  ‘(
  aaa_login_name VARCHAR2(30),
  login_ip VARCHAR2(32),
  login_date DATE,
  logout_date DATE,
  nas_ip VARCHAR2(32),
  time_duration NUMBER(10)
  )‘;
  END LOOP;
  END;
  /

使用PL/SQL删除表
  BEGIN
  FOR i IN 1..31 LOOP
  EXECUTE IMMEDIATE
  ‘DROP TABLE t_detail_‘||TO_CHAR(i);
  END LOOP;
  END;
  /

时间: 2025-01-09 12:00:47

电信采集子项目1(大体架构)的相关文章

电信采集子项目2(具体实现)

1.项目所用到jar包: woss-interface.jar:规范项目的各个模块 各个接口的功能在我的上一篇文章中有介绍,感兴趣的去找一下. demo4j-1.6.1.jar:解析xml文件 log4j-1.2.15:提供日志记录 ojdbc14.jar:jdbc的jar包 3.流程图 画的不好别见怪,嘿嘿. 2.项目的各个模块的具体实现 2.1客户端采集模块 假如我们需要采集的数据的结构如下: #briup1660|037:wKgB1660A|7|1239110900|44.211.221.

电信采集项目

# 电信采集子项目个人总结: # ## (1)功能分析: ## 记录使用电信宽带的登录人员信息,获得他们的上线时长,为后面的计费模块做铺垫. ## (2)需求分析: ## 数据采集:将采集到的数据文件通过io流读入到内存,并将数据保存在java对象中: 网络模块:将存储数据的对象集合从客户端发送给服务器, 数据入库:服务器拿到的数据应该保存在数据库中,采用jdbc技术进行java和数据库的交互: 备份模块:是在数据采集中边采集边备份,将异常信息进行备份在一个文件中,并且可以通过唯一标识(登入人员

实现对象缓存框架一、框架的大体架构

在github看了很久关于缓存的一些框架,也积累了一些基础,想自己试试写一写神秘的缓存框架. 首先,我们分析一下如何开始? 框架的大体架构是什么? 下面给出示意图: 那么框架结构出来了: 1. ZSYCache提供一些Api给调用者使用关于缓存的所有方法 2. ZSYCacheQueue.ZSYCachePool作为缓存数据的结构 3. ZSYCacheHolder持久化对象 4. ZSYCacheObject包装被持久化的对象相关附加属性: 保存对象的NSData.记录对象过期的时间 注:对象

电信采集之数据处理

该项目的实质就是就是将3A服务器记录下来的日志封装成对象保存在数据库中 一.需求分析 1.1需求概述 所谓电信采集指的是3A服务器通过中心处理系统对一个记录了用户上线.下线等用户信息的文件的一个采集,将获取到的信息传送到数据库中进行持久化保存,并将为传输到数据库中的信息进行备份. 1.2需求分析 将一段时间内采集到的数据记录为数据清单,记作t_detail_x,通过中心处理系统对数据清单中的数据进行分析,根据七上八下的原则将数据分为完全信息和不完全信息(只包含7的即只有上线记录的为不完全信息,包

百万PV网站大体架构

大体简介 PV(page view)即页面浏览量,或点击量,通常是衡量一个网络网站的主要指标采用四层模式实现,主要分为前端反向代理层.Web层.数据库缓存层和数据库层.前端反向代理层采用主备模式,Web层采用集群模式,数据库缓存层采用主备模式,数据库层采用主从模式. 软件 版本 简介 Keepa 1.3.5-6.el7 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服

jq大体架构。先记录再慢慢剖析

//工具方法 Utilities //回调函数列表 Callbacks Object //异步队列 Deferred Object //浏览器功能测试 Support //数据缓存 Data //队列 Queue //属性操作 Attributes //事件系统 Events //选择器 Sizzle //DOM遍历 Traversing //DOM操作 Manipulation //样式操作CSS (计算样式.内联样式) //异步请求 Ajax //动画 Effect //坐标 Offset.

图的大体架构以及主要知识

首先把图分为4点来定义 1.什么是图 图的定义图就是由两个集合组成的含有定点集合以及边集合 分为有向图无向图 2.图的存储 邻接矩阵: 行:表示尾(通过遍历非0元素个数可以知道入度) 列:标示头(通过遍历非0元素个数可以知道出度) const int MaxVex=100; //图中最大顶点数 typedef char VertexType; typedef struct vertex { int adjvex; VertexType data; //顶点的位置 }VType; typedef

iOS开发之组件化架构漫谈

前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目.在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构.当然不是直接拿来照搬,还是要根据公司具体的业务需求设计架构. 在学习组件化架构的过程中,从很多高质量的博客中学到不少东西,例如蘑菇街李忠.casatwy.bang的博客.在学习过程中也遇到一些问题,在微博和QQ上和一些做iOS的朋友进行了交流,非常感谢这些朋友的帮助. 本篇文章主要针对于之前蘑菇街提出的组件化方案,以及cas

iOS 组件化架构漫谈

组件化架构漫谈 前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目.在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构.当然不是直接拿来照搬,还是要根据公司具体的业务需求设计架构. 在学习组件化架构的过程中,从很多高质量的博客中学到不少东西,例如蘑菇街李忠.casatwy.bang的博客.在学习过程中也遇到一些问题,在微博和QQ上和一些做iOS的朋友进行了交流,非常感谢这些朋友的帮助. 本篇文章主要针对于之前蘑菇街提出的组件化