eXtremeDB HA 运行时数据的同步方式

来源:互联网 发布:企查查怎么看数据 编辑:程序博客网 时间:2024/05/21 12:47

今天这篇文章主要是讲述eXtremeDB HA 在工作的时候,主备机的数据同步策略。在介绍eXtremeDB的同步策略之前,先对HA系统做个简单的说明,以及介绍一下传统的高可用性的机制,以及高可用性(HA)之间同步的常见方式。
HA(High Available), 高可用性群集,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。
比如在网络中的IP路由器,使用内存数据库管理它们的路由表。比如飞行控制器,比如工业控制等。在这些行业的系统中,要求有非常可靠的事故处理和数据存储。
为了达到这些高可用性,传统做法是数据库通常会提供一种管理多个数据拷贝的方式。以这种方式实现的高可用性叫做Database Replication。在这种方式中,故障处理程序允许系统继续故障发生时使用数据库。这种方式如下图所示:


如上图所示,在这种模式下,数据库的事务会被复制到备节点中(replica node or secondary node),而复制事务到备节点的节点叫主节点(master node or primary node)。那么,数据库的更新从主节点到备节点的传导就是通过数据库的事务完成的。
那么根据备节点的更新是在主节点事务外完成还是主节点事务内完成,我们可以将这种数据库主备节点间的同步方式分为同步(eager or synchronous)和异步(lazy or asynchronous)。
在主节点事务外完成方式叫做异步,在主节点事务内完成叫做同步。
在同步方式中,以直截了当的方式提供主备节点中数据库一致性。在这种方式下,没有事务的丢失,当故障发生时,可以提供最快速的恢复,没有同步的花销。但是,这种方式,在正常主备节点正常工作的情况下,会增加进程的开销和通信开销,并且会延迟数据库的应答时间。这种方式的工作流程如下图所示:

与同步的方式相反,在Lazy模式下主备节点间的同步采用异步的方式。在这种方式下,主节点先提交更新的事务,然后在将更新事务发送到备节点。这种方式与同步相比,它可以提高数据库的应答时间,但是,与此同时,存在一定的风险,比如当主节点将更新事务向备节点发送时,主节点出现故障,那么数据库的更新会丢失。应用还可能从备节点中读到过期的数据,因为更新事务在主节点已经完成,还没来得及在备节点中提交。异步方式的工作流程如下如所示:

在面对网络的不确定因素时,为了提高可以预测的故障切换和应答时间,时间同步认知复制协议(time-cognizant eager replication protocols)被使用在了主备机之间的同步。在嵌入式系统和实时系统中,经常给进程设置了严格的执行时间,time-cognizant方式可以保证事务可以在主备节点间及时递送。这种方式正如同步方式一样,故障切换时间是非常短的。这种方式的工作流程如下图所示:

在eXtremeDB HA组件中,在主备节点数据同步时,提供了同步和异步两种方式。

       在eXtremeDB HA的同步方式中,采用的是一种基于时间认知两阶段提交的协议。这种模式在eXtremeDBHA 中是默认的方式。它的工作方式如下图所示:


在eXtremeDB的HA中,也提供异步同步方式。在这种方式下,更新事务会先在主节点中执行,当主节点中的事务提交后,然后再将事务传播到备节点中。这样的优缺点正如上面说到的那样,可以提供更快速的应答,但存在丢失事务,读到过期数据的风险。它的工作流程如下图所示:



0 0