一种基于TCP事件的多服务器主从机工作方法与流程

文档序号:12477850阅读:464来源:国知局

本发明属于主从设备工作领域,尤其涉及到一种基于TCP事件的多服务器主从机工作方法。



背景技术:

现在很多项目对系统稳定性及性能效率要求较高,在系统设置中,通常只设置一个服务器。一旦该服务器出现故障,由于无备用服务器,或者由于备用服务器数据不与原服务器同步,造成系统无法正常运行。即使想要实现增量数据同步的功能还需要其他多种工具配合,造成成本增加。



技术实现要素:

为解决上述问题,本发明提供了一种基于TCP事件的多服务器主从机工作方法,包括如下步骤:

步骤一:预先建立一个系统,该系统包括若干台具有相同功能的服务器、若干具有通信功能的电子设备,由epoll对系统的TCP事件进行管理,并预先在每个服务器内定义三个TCP事件:检测从机事件、增量数据同步事件、检测主机事件。

所述检测从机事件用于主机定时监测各个从机是否在线,当从机在线时则与从机建立TCP异步非阻塞连接, 之后将该连接交给epoll管理。

所述增量数据同步事件用于主机将增量数据同步到在线的从机。

所述检测主机事件用于从机对主机在线状态进行定时监测。

步骤二:各个服务器启动,各个服务器具有优先级排序。

步骤三:将在线的、优先级最高的服务器作为主机,其余的服务器作为从机,所述主机与各个从机及各个具有通信功能的电子设备建立通信连接。

步骤四:主机运行检测从机事件,定时监控各个从机在线状态,当从机在线时,则启动增量数据同步事件,将主机与系统内其他具有通信功能的电子设备的通信数据增量同步到从机中。

从机运行检测主机事件,定时监控主机在线状态,如在线,则继续作为从机工作,不执行步骤五;如不在线,优先级别最高的从机跃迁为新的主机,并与其它从机建立起通信,将其它从机作为自己的从机,并执行步骤五。

步骤五:新的主机向系统内的具有通信功能的电子设备发布跃迁信号,表明自己的主机身份,并重置检测从机事件、增量数据同步事件、检测主机事件。

步骤六:循环执行步骤三-步骤五,直到系统停止工作。

进一步的,步骤四中,定时监测的具体实现方式是:利用rb_tree实现定时监控,系统将各个主机执行检测从机事件的事件及从机执行检测主机事件的时间信息注入到 rb_tree的各个节点,由epoll_wait的时间机制来遍历rb_tree,以定时执行监测。

进一步的,所述服务器具有两个。

进一步的,根据完成启动的时间先后对各个服务器设备进行优先级别从高到低的排序。

进一步的,检测从机事件的具体执行方法为:由主机发起与从机建立TCP异步非阻塞连接, 之后将连接交给epoll管理,若连接不成功或连接中断则epoll会感知到连接失败事件,这时主机就会判断从机为不在线状态,否则从机为在线状态。

进一步的,增量数据同步事件执行的具体流程为:主机发起与从机建立TCP异步非阻塞连接,并初始化与之对应的一个内存块,之后将连接交给epoll管理,epoll可感知该连接的可读事件,若此时内存块中有增量数据,则epoll会将数据异步的通过该连接同步到从机。

进一步的,检测主机事件执行的具体流程为:由从机发起与主机建立TCP异步非阻塞连接, 之后将连接交给epoll管理。若连接不成功或连接中断则epoll会感知到连接失败事件,这时从机就会判断主机为不在线状态,否则主机为在线状态。

进一步的,步骤四中,优先级别最高的从机跃迁为新的主机后,如果步骤三中作为主机的服务器恢复在线状态,该服务器作为从机作为与新的主机建立通信连接。

本发明的有益效果为:

1.使用I/O多路复用模型epoll管理TCP事件,效率高、易于实现。

2. 增量数据同步事件能够进行主机和从机之间的增量数据同步,满足服务器之间互相替代的要求。

3.从机到主机的跃迁过程简单,只需发布跃迁信息和重置维护TCP事件即可。

4.全程自动化,节约人力物力。

具体实施方式:

本发明的设计构思为:在对性能效率及稳定性要求较高的系统中,布置两个及两个以上的服务器,各个服务器配置相同,增量数据同步,能够互相替代进行系统内的工作。同一时刻只有一个服务器作为主机(即后述的master),其余服务器则作为从机(即后述的slave),从机与主机增量数据同步,在主机无法正常工作时,系统选定优先级别最高的从机作为新的主机。

下面对技术方案进行详细说明。

在本发明所述系统中,包含两个或两个以上的服务器,各个服务器的配置无差别,且含有相同的功能(关键系统模块无差别的部署)。使用I/O多路复用模型epoll,通过epoll异步管理TCP事件的特性,来实现主从设备之间定时监测在线状态和增量数据同步的功能。

下面对本系统的工作方法进行详细说明。

步骤一:预先建立一个系统,该系统包括若干台具有相同功能的服务器、若干具有通信功能的电子设备,由epoll对系统的TCP事件进行管理。

所述系统由epoll对系统TCP事件进行管理,并预先在每个服务器内定义三个TCP事件:检测从机事件(check_slave_event)、增量数据同步事件(data_sync_event)、检测主机事件(check_master_event)。

check_slave_event 为master监测slave在线状态事件。由master发起与slave建立TCP异步非阻塞连接, 之后将连接交给epoll管理。若连接不成功或连接中断则epoll会感知到连接失败事件,这时master就会判断slave为不在线状态,否则slave为在线状态。将上述流程加入定时树中(定时树由rb_tree实现,这里不做详述),由epoll_wait的时间机制来遍历定时树,定时执行上述流程,达到定时监测的效果。

data_sync_event为master增量数据同步到slave事件。data_sync_event依赖于check_slave_event监测到slave的在线状态,若slave在线,则由master发起与slave建立TCP异步非阻塞连接,并初始化与之对应的一个内存块,之后将连接交给epoll管理。epoll可感知该连接的可读事件,这时若内存块中有增量数据,则epoll会将数据异步的通过该连接同步到slave。所以当master与其他系统模块交互产生增量数据时,把增量数据写入内存块,epoll就会将数据发给slave。

check_master_event为slave监测master在线状态事件。由slave发起与master建立TCP异步非阻塞连接, 之后将连接交给epoll管理。若连接不成功或连接中断则epoll会感知到连接失败事件,这时slave就会判断master为不在线状态,否则master为在线状态。将上述流程加入定时树中(定时树由rb_tree实现,即将预先设定的监测时间点植入到rb_tree数的各个节点),由epoll_wait的时间机制来遍历定时树,定时执行上述流程,达到定时监测的效果。

其中,master维护两个事件:check_slave_event和data_sync_event。只有当check_slave_event监测到slave在线时才有可能触发data_sync_event事件。

slave维护一个事件:check_master_event。

步骤二:各个服务器设备启动,各个服务器设备具有优先级排序。

本步骤中,可以预先人工定义各个服务器设备的优先级别。本发明是根据完成启动的时间先后对各个服务器设备进行优先级别的排序。一般来说,服务器启动时间会有先后之分,启动时间越短的说明性能越好,适合作为主机。

利用启动时间进行优先级的排序,进一步实现了技术方案的全自动化,节约了人力,且最大程度的提升了系统运行的性能。

步骤三:将在线的、优先级最高的服务器作为主机,其余的服务器作为从机,所述主机与各个从机及各个具有通信功能的电子设备建立通信连接。

在本发明中,主机具有两个功能:1.与系统内其他具有通信功能的电子设备建立通信连接,提供服务;2.与各个从机通信,监测从机在线状态,且无差别的将增量数据同步到各个从机。这样设计的好处是使得从机能随时替代主机完成相同的功能,实现无缝衔接。

步骤四:主机运行检测从机事件,定时监控各个从机在线状态,当从机在线时,则启动增量数据同步事件,将主机与系统内其他具有通信功能的电子设备的通信数据增量同步到从机中。

从机运行检测主机事件,定时监控主机在线状态,如在线,则继续作为从机工作,不执行步骤五;如不在线,优先级别最高的从机跃迁为新的主机,并与其它从机建立起通信,将其它从机作为自己的从机,并执行步骤五。

进一步的,如果新的主机已经产生,并在正常运行过程中,这时原来的主机即使故障恢复,重新上线,则只能以从机身份运行。这样能使得系统运行更加稳定。

步骤五:新的主机向系统内的具有通信功能的电子设备发布跃迁信号,表明自己的主机身份,并重置检测从机事件、增量数据同步事件、检测主机事件。

当check_master_event监测到master不在线时,在线的、优先级最高的slave跃迁为master,并且向其他服务器及具有通信功能的电子设备发布从->主跃迁信息,然后重置维护两个事件check_slave_event和data_sync_event。

步骤六:循环执行步骤三-步骤五,直到系统停止工作。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1