APP下载

分布式平台数据同步软件的分析与设计

2021-06-28谢剑

现代信息科技 2021年1期

摘  要:分布式架构在互联网企业中已得到广泛应用,各平台间的数据如何同步是应用中需解决的关键问题,结合“面向对象编程(高级)”课程内容,对通用数据同步软件进行了分析与设计。该设计主要包含待同步记录扫描、数据通知、数据接收、状态查询以及相应的数据库操作、参数配置、日志记录等功能,可实现数据的安全高效同步,以便汇总统计分析,支撑业务发展,具有较高实用价值。

关键词:分布式平台;数据同步;安全高效

中图分类号:TP311.5      文献标识码:A 文章编号:2096-4706(2021)01-0018-04

Analysis and Design of Data Synchronization Software on Distributed Platform

XIE Jian

(Hunan College of Information,Changsha  410200,China)

Abstract:Distributed architecture has been widely used in internet enterprises. How to synchronize data among various platforms is the key issue that needs to be solved in application. Combined with the course content of the “Object-Oriented Programming(Advanced Level)”,general data synchronization software is analyzed and designed. The design mainly includes the following functions,such as scanning of records to be synchronized,data notification,data receiving,status inquiry,and corresponding database operations,parameter configuration,log records,etc.,which can achieve safe and efficient synchronization of data,so as to make summarization and statistical analysis,support business development,it has higher practical value.

Keywords:distributed platform;data synchronization;safe and efficient

0  引  言

分布式系統架构是指由多台计算机和通信软件通过计算机网络连接组成的结构,是建立在网络之上的软件系统,具有高度的内聚性和透明性。在该系统中一台服务器的系统崩溃不会影响到其他的服务器,且容易部署上线新功能,由于有多台计算机的计算能力,该系统比其他系统的处理速度更快,正因为分布式系统的的这些优点,使其在互联网企业中得到了广泛的应用。但是由于其分布式的特性,也使得各个平台的数据无法与其他平台共享,不便于统计分析,易产生业务上的风险,因此需要一个数据同步软件来将各个平台上的数据汇总到一个总平台,总平台的数据更新也可以及时更新到各个分平台,从而达到数据共享的目的。

作者通过对数据同步软件的分析与设计,使学生加深对“面向对象编程(高级)”课程相关知识点的理解与掌握,增强软件架构设计能力。

1  系统需求分析

根据实际需求,将提供更新数据的系统称为更新系统,将接收数据并更新自身数据的系统称为被更新系统,同步软件需要在两个系统上都进行部署。软件主要由扫描模块、通知模块、接收通知模块、接收查询模块、数据库操作模块、配置模块、日志模块七个模块组成。扫描模块根据配置文件的配置信息扫描更新系统上指定表是否有符合时间要求的记录更新,或插入并生成对应通知队列表记录等待通知;通知模块根据通知队列表记录及配置信息,向被更新系统上的接收模块发送同步数据,并对相应通知队列记录进行处理;接收通知模块用于接收更新系统发送的同步数据,并在IP白名单检查、表白名单检测、签名校验等多重校验通过后更新至数据库保存;接收查询模块用于查询通知队列记录同步状态,以及扫描模块是否运行正常;数据库操作模块负责数据库相关增删改查操作,实现及数据库性能优化处理;配置模块负责配置文件信息的读取及修改操作;日志模块主要负责记录通知,及接收模块中关键点的日志信息,便于在出现问题后及时查找并解决问题。

2  系统详细设计

2.1  系统功能结构设计

软件主要由7个功能模块组成,功能结构图如图1所示,下文将从流程图及类图的角度对各个模块进行阐述说明。

(1)扫描模块。扫描模块是一个定时执行程序,按照设定的时间定时启动、执行,然后退出,该模块部署在更新系统上。扫描模块根据设定的规则扫描出指定表中符合条件的记录,并生成对应的通知队列记录,以便由通知模块完成数据的同步。分布式平台涉及的业务往往具有多变性,短时间内某条记录的状态可能发生多次改变,为了避免由这种短时间内记录多次变化,造成同一条记录多次被同步的现象,对扫描进行了条件限制,即只有表中当前最新的记录更新时间戳与配置文件中记录的上次扫描时间戳间的差值大于指定间隔时间时才进行处理,否则不做任何操作,如此可在一定程度上降低资源消耗,提升性能。若需获取表中当前最新的记录更新时间戳,只需要将上次扫描时间戳作为查询条件进行搜索,并将结果按更新时间降序排序即可,结果集中的第一条记录中就有所需时间戳。当符合条件的记录都生成对应的通知队列记录后,需要将配置文件中的上次扫描时间戳更新为本次扫描中记录的最新更新记录时间,以避免记录的重复同步。模块功能流程图如图2所示。

(2)通知模块。通知模块是个生产者—消费者模式程序,部署在更新系统上。生产者程序负责从通知队列表中根据已通知次数及下次通知时间条件筛选出符合要求的记录并分配给消费者程序处理,该模式下的生产者只有一个,其每次生产的最大记录数可以通过配置文件配置,消费者可以有多个,其数目也可配置,以此提高并发处理效率,但是出于对系统的安全及稳定性考虑,最大数目一般不超过1 000。模块可配置同步指定表中的所有字段或某些字段信息,但是若某字段设计为非空字段时则必须同步,考虑到实际环境下被更新系统中待同步的目标表的名称和当前被扫描表的名称可能不一致,对应字段也可能不一致,因此被扫描表中需同步字段、待同步目标表的名称以及目标表待同步的字段都应可以通过配置文件进行设置,以便接收端能正常更新。由于通知队列表中只会保存带同步记录的主键信息,因此还需要利用此主键信息去原始表中扫描需要同步的字段及其对应数值信息,并以键值对的形式拼接到字符串中,每次同步的记录数较多,各个记录之间以分号隔断,以便接收模块拆分解析。根据配置的地址发送数据,再根据返回的响应报文对通知队列记录进行处理。考虑到实际更新系统的记录数据量大且增速快,为保证数据同步的时效性,在HTTP通信交互实现上采用完成端口异步IO模型实现,该模型是Windows平台下效率最高的网络通信模型,本模块采用该网络模型能最大限度地提升同步效率,避免产生性能瓶颈。模块功能流程图如图3所示。

(3)接收通知模块。接收通知模块是一个HTTP请求服务端程序,用于接收并处理各个HTTP请求发送端发送的报文,此模块部署在待更新系统上。为了处理高并发的HTTP请求,本模块同样采用完成端口来实现报文的交互处理。除了效率问题,安全问题也是本模块需要重点考虑的因素。因此,接收通知模块在启动时就将IP白名单、同步表白名单、签名秘钥等校验用信息读取到内存,在收到同步數据后首先对来源IP进行白名单校验,再对待同步的表名进行白名单校验,然后根据接口协议进行签名校验,通过后再对数据串进行防SQL注入处理,无问题后最后将接收数据拼接成SQL语句进行数据库操作,否则不做任何处理,无论是否成功都需按照接口协议返回相应响应数据。接收通知模块功能流程图如图4所示。

(5)接收查询模块。接收查询模块也是一个服务端程序,负责监听网络端口,接收查询请求并返回结果数据。查询返回的数据有两种,一种是通知队列表中未通知和通知失败的记录条数,此类数据用于监控通知模块是否工作正常,当上述两类记录达到一定数目时,就应进行检查,及时发现并解决问题。其中未通知记录的定义是:状态为未通知且通知次数等于0,请求时间大于1分钟的记录;通知失败记录的定义是:通知次数大于等于6的记录。另一种返回的数据是扫描模块配置文件中的上次扫描时间戳,通过该时间戳是否正常更新来判断扫描模块是否假死。接收查询模块功能流程图如图5所示。

(6)数据库操作模块。数据库操作模块实现与MySQL数据库连接、增删改查功能以及高并发情况下性能优化处理,相关类主要有两个,如图6所示,一个是CDataBase类,其中封装了MySQL数据库的基本API函数,实现基本的数据库增删改查等操作功能。另一个为CDBConncetPool类,该类继承自CDataBase类,并在其基类基础上增加了数据库连接池的功能,即在程序启动时就将数据库连接对象都创建好,并保存到队列中,直到程序退出再释放,避免频繁的进行数据库连接及释放操作,降低在高并发的数据库操作时造成性能瓶颈的风险,此类技术在实际工作中应用广泛。

(7)配置及日志模块。配置模块主要负责各功能模块配置文件信息的读取与更新,避免将系统参数都固定在代码中,造成代码频繁修改的问题,其类图如图7所示,定义了几个主要的配置文件操作函数。

日志模块用于在关键操作的节点进行日志的记录,比如网络请求的发送与接收处、数据库的相关操作处等,便于分析和解决问题,对后台程序以及业务功能模块异常时的问题排查及解决有重要作用。日志的级别可配置,分为危险、错误、信息、调试等级别,可根据需要灵活调用,日志信息的记录时间可以精确到毫秒,以便于精确查找问题发生的时间点,其类图如图8所示。

2.2  系统数据库设计

软件主要功能是同步已有表的数据,未涉及其他业务,因此设计的表只有通知队列记录表,用于管理指定表的待同步记录,主要字段有待同步记录的主键信息、已通知次数、下次通知时间等。

3  结  论

本文分析了分布式平台数据同步软件的需求,并对软件设计进行了详细描述。若实现后投入使用,可帮助企业解决分布式架构下各个平台之间的数据同步问题,高效安全地完成数据汇总,以便统计分析,为企业决策制定提供依据。本案例应用在了“面向对象编程高级”专业课程中,通过讲解数据同步软件的分析和设计过程,促进学生对知识点的掌握与理解,提高实践动手能力。

参考文献:

[1] 吴洁明,方英兰.软件工程实例教程 [M].北京:清华大学出版社,2010.

[2] 王英英.MySQL 8从入门到精通 [M].北京:清华大学出版社,2019.

[3] 王琦.电子办税服务系统中数据同步软件的设计与实现 [D].南京:南京理工大学,2011.

[4] 罗智华.新时期计算机通信软件架构设计与分析 [J].数字通信世界,2015(10):25.

[5] 史阳,杨坤德,杨益新,等.水声数据采集与分析软件的设计与实现 [J].电声技术,2012,36(9):49-51+78.

作者简介:谢剑(1987.06—),男,汉族,湖南长沙人,专任教师,初级职称,硕士,研究方向:计算机应用,图像处理。