Web环境下的分布式自治站点数据同步技术研究

2016-02-02 13:07侯超平
山东工业技术 2016年22期
关键词:触发器数据表日志

侯超平

(桂林电子科技大学, 广西 桂林 541004)

Web环境下的分布式自治站点数据同步技术研究

侯超平

(桂林电子科技大学, 广西 桂林 541004)

本文对Web环境下典型的分布式自治站点系统拓扑结构及工作方式进行研究。重点研究了同步周期、关键字同步冲突处理、更新数据捕获、更新数据源识别等分布式自治站点数据同步过程中的关键问题,并设计了一个适用于分布式系统自治站点数据同步的技术方案。

分布式系统;自治站点;数据同步

1 分布式自治站点应用场景及工作方式

1.1 分布式自治站点应用场景

随着企业信息化水平的提高及基于Web环境下的业务系统的发展,以往单一站点业务系统的服务模式已很难满足业务系统的需要,具体表现为如下几个方面:

(1)单一站点负载能力有限,无法满足高并发的业务访问需求。

(2)可靠性及可用性差,如果站点的软、硬件出现故障,则整个业务系统瘫痪。

(3)位于不同网络运营商的用户访问业务站点,可能会存在响应时间长、互连互通等问题,用户体验差。

考虑到以上问题,为了保障业务系统的快速响应及高可用性,在进行业务系统整体规划时一般会采用分布式结构进行解决。分布式系统(distributed system)是建立在网络之上的软件系统,其对于用户而言具有较高的透明性和内聚性[1]。比较常见的是分布式自治站点结构,一种典型的拓扑结构如图1所示。

图1中的分布式系统由一个超级站点及若干个普通站点所组成,每个站点均为一个独立自治站点,可以独立为系统用户提供业务服务。超级站点除了具有普通站点服务功能外,还担负着整个业务系统入口及用户首次业务请求至各站点负载均衡调度功能。

1.2 分布式自治站点系统工作原理及方式

以业务系统为用户1进行业务服务为例,其系统工作原理如图2所示:

(1)用户1向系统入口服务站点A(超级站点)发出服务请求。

(2)服务站点A收到用户1的服务请求后,根据当前各站点的可用性状况,将用户1的服务请求重定向至可用性最优的站点上(图2中服务站点A向用户1返回访问请求重定向至服务站点B上的指令)。

(3)用户1的web浏览器收到重定向至服务站点B的指令后,自动重新访问服务站点B以取得业务服务。此后,用户1将通过持续访问服务站点B获得系统服务。

(4)用户1在服务站点B进行业务操作期间,所产生的业务数据更新,将通过数据同步的方式同步至其它的服务站点,以使用户1下次业务请求被重定向至其它站点时可以继续业务操作。

1.3 分布式自治站点系统特点

相对于传统的单一业务站点的服务方案,分布式自治站点的方案具有以下特点:

(1)高吞吐及高并发。用户的业务请求被分散到各自治站点中,由各站点共同为业务用户提供服务,业务系统的负载能力可以得到大幅提升。

(2)负载均衡。负载均衡功能可以通过监控各自治站点的性能情况,并将用户访问请求调度到综合性能值最好的站点上,提高访问响应效能。

(3)高可用。某部分站点出现故障时,可以离线处理故障,其它站点可以继续承担用户业务访问请求,避免单一站点模式中出现软、硬件故障时造成业务系统瘫痪的问题。

(4)容灾性。由于各自治站点的业务数据进行相互同步,所以理论上由n站点构成的分布式自治系统中,将会有n-1个数据副本,具有很强的容灾性。

2 分布式自治站点数据同步关键问题

2.1 同步周期

由于分布式系统在数据同步时存在网络延迟、I/O耗时等因素,无法保证副本数据和主节点时刻保持一致[2]。在自治站点之间一般采用弱一致性的办法来进行处理,最终保持各站点数据的一致性。在同步的时候,需要考虑在同步周期与系统开销之间取得平衡,既能保证各自治站点数据及时相互同步,又能最大程度避免同步事务对系统资源消耗而造成服务响应速度下降的问题。

2.2 关键字同步冲突处理

在分布式系统中,位于不同自治站点上的同一数据表新插入的记录字段值可能会相同,如果字段为数据表的关键字,在各站点数据相互同步时就会产生关键字冲突,为了避免关键字冲突就必须要求数据表关键字段值全局唯一。从传统单一服务站点结构向分布式系统结构改造,或全新设计分布式系统时,要充分考虑该问题。为确保各站点同一数据表关键字段值全局唯一,通常进行以下处理:为各业务数据表添加站点标识字段(字段值为站点在分布式系统中的唯一编号),并将站点标识字段与业务数据表原关键字一起构成组合关键字,从而实现数据表记录关键字段值全局唯一。

2.3 更新数据捕获

用户在站点上进行业务操作时将会产生数据更新(新增、删除、修改),这些数据更新操作需要被记录下来形成更新日志,并将业务数据更新操作信息同步到其它各站点上,由运行于其它站点上的程序执行同样的数据更新操作序列来实现数据同步,使各站点上的业务数据保持一致。常用的更新数据捕获分为触发器捕获和DBMS的CDC功能两类。

(1)触发器捕获。在业务数据表上部署insert、delete操作触发器,当产生事件触发时,通过触发器记录数据更新操作信息到更新日志中。

(2)CDC功能。较新版本的SQL Server或Oracle提供了一种叫做变更数据捕获 CDC(Change Data Capture) 的功能,可以通过在数据库中显示开启CDC 跟踪功能及DBMS中的代理服务器功能,实现捕获数据库中表对象数据的变化情况。

2.4 更新数据源识别

在分布式系统中自治站点上的数据更新从数据源的角度可以分为两种类型:

(1)站点上业务系统为用户提供服务产生的数据更新,比如用户增加或删除业务数据等。

(2)其它站点向本站点传送过来数据更新操作记录日志,并根据日志记录顺序在本站点上执行操作序列,实现数据同步而产生的数据更新。

对于由本站点产生的业务数据更新,需要将其记录到数据更新日志表中,日志信息待传送至其它站点上执行,以保持各站点数据一致;而由其它站点同步到本站点的数据更新操作日志信息,仅需要根据更新操作日志信息执行写库操作完成数据同步即可,无须再次将这部分数据更新再次同步至其它站点上。那么各站点需要对这两类数据更新的写表操作进行区别处理。

例如本站点业务系统执行的新增插入记录操作,需要通过触发器记录到数据更新日志表中(日志信息待同步至其它站点上);而由其它站点新增记录数据同步到本站点上,在本站点执行插入记录操作实现数据同步时,无须通过触发器将这些操作记录在数据更新日志表中(即不需要再次同步至其它站点),否则各站点上的同步更新数据会出现无限次相互循环同步的问题。

由于触发器是由特定的数据操作事件来触发的,事件本身并不能区别这两类数据更新,所以必须在触发器执行的过程中进行更新数据源识别,并进行相应处理。比较常用的识别更新数据源的办法是,在数据库管理系统中为不同类型的数据源分配不同的用户账号,比如站点上的业务系统连接数据库时使用A账号,数据同步程序连接数据库时使用B账号,通过识别数据库连接账号的方法来区别不同的数据更新类型,并在触发器中进行相应处理。

3 数据同步流程设计

3.1 站点同步流程

为了使设计方案适用于不同的数据库管理系统,具有通用性,方案使用Oracle、SQL Server、MySQL等多种数据库均可支持的触发器作为更新数据捕获手段。各站点间的数据更新同步流程如图3所示。

同步流程:

(1)业务系统对业务数据表进行数据更新操作触发数据表上的触发器。

(2)触发器通过数据库连接用户名识别出产生更新操作的数据源为业务系统,则将数据更新操作写入“数据更新日志表”。如果识别出的更新数据源为同步程序(其它站点向本站点同步数据),则触发器不执行任何操作。

(3)站点同步程序通过“数据更新日志表”及“业务数据表”将发生数据更新的记录操作还原成等价的SQL语句。插入记录操作还原成insert语句,删除记录操作还原成delete语句,更新记录操作等价还原成delete或insert两个语句。

(4)站点同步程序获取“各站点信息表”中的各站点信息,通过Socket把业务系统数据更新操作等价SQL语句传送到其它站点中,并由其它站点上的同步程序处理。

(5)当本站点上的同步程序接收到从其它站点发送过来的数据更新等价SQL语句后,执行这些SQL语句序列,实现其它站点发生的数据更新同步至本站点中。

3.2 核心工作表设计

系统工作表为同步操作提供必要的数据信息,最核心的两个工作表为“各站点信息表”和“数据更新日志表”。

(1)“各站点信息表”为分布式系统中各个站点提供统一的全局站点信息视图,该表在超级站点上维护,站点的信息更新将同步至各站点中,数据同步程序将根据该表中记录的各站点信息把本站点产生的数据更新同步至其它站点上。各站点信息表结构如表1所示。

表1 各站点信息表

(2)“数据更新日志表”用于记录各业务数据表的数据更新操作情况,为同步程序定位发生数据更新的记录提供关键字段值等信息,也为构造出等价SQL语句过程提供基本信息。数据更新日志表结构如表2所示。

表2 数据更新日志表

4 结语

Web环境下的分布式自治站点业务系统相对于传统的单一站点业务系统具有更强的负载能力、高可用及强容灾性等优点。由于各站点均可独立向业务用户提供服务,所以保持各站点的数据一致性是分布式自治站点业务系统的关键。本文研究了分布式自治站点的数据同步问题,重点研究了同步周期、关键字同步冲突处理、更新数据捕获、更新数据源识别等关键问题,并设计了一个适用于分布式系统自治站点数据同步的技术方案。该方案给出了站点同步流程和核心工作表的设计,在实现分布式系统承受更多业务负载的同时,使各自治站点的数据同步过程能更有序、高效地执行。

[1]刘尘尘.基于Android平台的分布式文件系统协议研究[J].西昌学院学报(自然科学版),2012,26(02):82-84

[2]杨步涛.分布式数据库的一致性探讨(网络)[J].http://blog. csdn.net/yangbutao/article/details/8365695.

10.16640/j.cnki.37-1222/t.2016.22.115

侯超平(1981-),男,研究生,工程师,研究方向:分布式系统、云计算及虚拟化。

猜你喜欢
触发器数据表日志
基于VBA 的教务数据平台研究
基于65 nm 体硅CMOS 技术的DICE-DFF 和TMR-DFF SEU 辐射硬化方法分析
一名老党员的工作日志
配置触发器有条件启动Windows服务
扶贫日志
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
湖北省新冠肺炎疫情数据表
雅皮的心情日志
触发器在酒店管理系统中的应用