一种大数据同步架构设计
郝伟 2022/03/26
在分布式系统中,经常需要将文件从多台机器上汇总到指定的文件服务器上。当机器数量较多时,人工操作会比较麻烦。为解决此问题,本设计提出了一套基于SMB协议的跨平台文件传输汇总方案。
使用基于SMB协议,Windows自带,无需安装即可使用。在Linux下,也可通过安装smbda包实现SMB协议。所以,可以通过在S端启动SMB服务,配置共享文件夹,然后C端向S端发送数据。
为了方便描述,以下在举例时如无特别说明,则S端IP为 192.168.2.51,C端IP为 192.168.2.38。
系统采用分布式存储结构,有多个C端向S端进行文件传输。
其中C端是文件生产机器,S端是文件汇总机器。通过编写自动化脚本,实现文件的主动采集。
S端的核心内容为程序分发和配置。
注:每次同步前,先对S端进行验证,方法为 查看 qdas_syn\server_config.ini 是否存在。
通过共享文件夹存放同步程序,以便于C端读取,并使用配置文件指定当前运行的程序版本。
S端使用固定 qdas_syn 目录作为共享文件夹,如 \\192.168.2.51\qdas_syn,用于存放同步程序和配置信息。
主要目录结构如下:
\\192.168.2.51\qdas_syn
├─app_1.0.0
├─app_1.0.1
├─app_1.0.2
├─client_status
└─server_config.ini
其中,
app_x.y.z 为同步程序目录,x.y.z表示版本号;client_status 为C端状态目录,内容为 192.168.2.38.txt 这样的文件。server_config.ini 为S端的配置文件,内容如下:
current_version=app_1.0.1 指定当前同步程序的主版本;同步程序是真正用于文件同步收集的程序,用于执行具体的同步等相关任务,存放在 app_x.y.z 目录下。
目录下包括以下文件:
startup.bat 用于程序启动;stop.bat 用于程序停止app_config.ini 用于程序运行的配置文件。C端的主要任务是运行文件上传脚本,通过SMB协议,将源目录下的文件上传至服务器的指定目录,包括自动化Windows服务和文件上传脚本两块内容。
由于C端是无人值守的环境,为了保证文件上传脚本能够正常运行,不受环境影响而停止,建立Windows系统服务,用于运行上传脚本。C端服务的配置信息默认存放于 C:\data\qdas_service\client_config.ini,主要内容如下。
server_ip=192.168.4.50 表示主服务器,即当前使用的服务器backup_ip=192.168.4.51 表示备用服务器,当主服务器无法访问时,使用此服务器。update_app_interval=60 同步程序更新时间间隔,单位是秒。根据配置文件从远程共享文件夹获得同步程序版本并进行更新。
根据在S端的目录下 server_config.ini 中的 cur_ver=app_1.0.1,运行指定的程序。然后使用目录下的 startup.bat 脚本启动同步程序。
根据在S端的目录下 server_config.ini 中的 cur_ver=app_1.0.1,运行指定的程序。然后使用目录下的 stop.bat 脚本停止同步程序。
为了保证C端的服务正常,C端定期向服务器的指定共享文件追加运行记录,具体做法如下。
\\192.168.2.51\qdas_syn\client_status\192.168.2.38.txtYYYY-MM-dd HH:mm:ss code_list, 示例文件:\\192.168.2.51\qdas_syn\client_status\192.168.2.38.txt2022-03-26 16:32:53 100
2022-03-26 16:33:53 100
2022-03-26 16:32:54 105, 106
为了错误的统一管理,定义错误码如下:
100 工作正常
105 startup.bat 不存在
106 stop.bat 不存在
同步程序从服务器读取过来。