/CppDataCenter

linux上模拟的c++数据中心

Primary LanguageC++

CPP数据中心

主要学习参考了吴哥的cpp气象数据中心。框架参考了ccfree

开发环境

  1. Centos 7.x linux环境
  2. MySQL 5.7
  3. gcc、g++
  4. 字符集utf-8
  5. Oracle 11GR2

项目目录

本人学习的代码存放在pthread1, idc1, tools1中。所有代码都可以使用makefile轻松编译测试。

  • public:存放框架
  • pthread1:演示线程使用 makefile
  • idc1:生成数据 makefile
    • start.sh 启动脚本
    • killall.sh 删除服务脚本
    • crtsurfdata5.cpp 用于生成全国气象站点观察的分钟数据
    • obtcodetodb.cpp 本程序用于把全国站点参数数据保存到数据库T_ZHOBTCODE表中
    • obtmindtodb.cpp 本程序用于把全国站点分钟观测数据入库到T_ZHOBTMIND表中,支持xml和csv两种文件格式
  • tools1:工具程序 makefile
    • checproc.cpp 守护进程
    • deletefiles.cpp 用于删除历史的数据文件或日志文件
    • gzipfiles.cpp 用于压缩历史的数据文件或日志文件
    • procctl.cpp 服务程序的调度程序,周期性启动服务程序或shell脚本
    • ftp模块
    • tcp模块
      • tcpputfiles.cpp 采用tcp协议,实现文件上传的客户端
      • tcpgetfiles.cpp 采用tcp协议,实现文件下载的客户端
      • fileserver.cpp 文件传输的服务
        • 采用异步通信机制
        • 解决粘包和分包,采用自定义报文格式,用整形变量存放报文长度。
    • mysql模块
      • diminingmysql.cpp 本程序是数据中心的公共功能模块,用于从mysql数据库源表抽取数据,生成xml文件
      • xmltodb.cpp 本程序是数据中心的公共功能模块,用于把xml文件入库到MySQL的表中
      • migratetable.cpp 本程序是数据中心的公共功能模块,用于迁移表中的数据
      • deletetable.cpp 本程序是数据中心的公共功能模块,用于定时清理表中的数据
      • syncupdate.cpp 本程序是数据中心的公共功能模块,采用刷新的方法同步MySQL数据库之间的表
      • syncincrement.cpp 本程序是数据中心的公共功能模块,采用增量的方法同步MySQL数据库之间的表
      • syncincrementex.cpp 本程序是数据中心的公共功能模块,采用增量的方法同步MySQL数据库之间的表
        • 本程序不使用Federated引擎
    • oracle模块
      • dminingoracle.cpp 本程序是数据中心的公共功能模块,用于从Oracle数据库源表抽取数据,生成xml文件
      • xmltodb_oracle.cpp 本程序是数据中心的公共功能模块,用于把xml文件入库到Oracle的表中
      • migratetable_oracle.cpp 本程序是数据中心的公共功能模块,用于迁移表中的数据
      • deletetable_oracle.cpp 本程序是数据中心的公共功能模块,用于定时清理表中的数据
      • syncupdate_oracle.cpp 本程序是数据中心的公共功能模块,采用刷新的方法同步Oracle数据库之间的表
      • syncincrement_oracle.cpp 本程序是数据中心的公共功能模块,采用增量的方法同步Oracle数据库之间的表
      • syncincrementex_oracle.cpp 本程序是数据中心的公共功能模块,采用增量的方法同步Oracle数据库之间的表。
        • 注意,本程序不使用dblink。
    • 数据服务总线
      • webserver.cpp 此程序是数据服务总线的服务端程序
        • 实践了线程池和数据库连接池
    • 代理模块
      • inetd.cpp 网络代理服务程序
        • 正向代理
      • rinetd.cpp 网络代理服务程序-外网端
        • 反向代理外网端
      • rinetdin.cpp 网络代理服务程序-内网端
        • 反向代理内网端

项目笔记