一种数据同步的方法、服务器以及数据同步系统与流程

文档序号:12278896阅读:195来源:国知局
一种数据同步的方法、服务器以及数据同步系统与流程

本发明涉及通信领域,尤其涉及一种数据同步的方法、服务器以及数据同步系统。



背景技术:

考勤管理系统是一套管理公司员工的上下班考勤记录等相关情况的管理系统。是考勤软件与考勤硬件结合的产品,一般为人力资源部门(human resource software,HR)部门使用,掌握并管理企业的员工出勤动态,是企业管理中最基本的管理。

现今,一般公司每个月到发工资前都会进行考勤统计。传统的考勤机数据导出/导入的方法有:1.通过U盘导出或导入;2.考勤机通过网络或串口等连上电脑,通过电脑上的软件导出或导入;3.公司架设一个服务器,当设备上有数据更新时,主动上传到服务器;当有需要时再人为地导入另外的机子。

传统的考勤机数据的导出或导入的方法存在以下问题:1.需要人为干预,效率低;2.设备间的数据共享,实时性差;3.扩展难,适合小规模设备间的数据共享。4.如果服务器与考勤机处于不同局域网。则需要为服务器申请公网访问的地址,或者使用第三方服务器平台,会增加开销。



技术实现要素:

本发明实施例提供了一种数据同步的方法、服务器以及数据同步系统,用于当第一考勤机的数据发生更新时,更新的数据可同步到第二考勤机。

本发明实施例第一方面提供一种同步的方法,其特征在于,该方法应用于数据同步系统,该数据同步系统包括服务器、第一考勤机和第二考勤机,该方法可以包括:当该第一考勤机的数据发生更新时,该服务器接收该第一考勤机发送的更新数据;该服务器将该更新数据更新到云端数据库中;该服务器根据该更新数据确定待同步的数据,以使得在线的第二考勤机从该服务器获取该待同步的数据,实现该第二考勤机与该第一考勤机的数据同步。

在本发明实施例中,用于当第一考勤机的数据发生更新时,更新的数据可同步到第二考勤机,实现考勤数据的更新与同步。

可选的,在本发明的一些实施例中,

该更新数据可以包括操作标识,该服务器将该更新数据更新到云端数据库中,包括:该服务器根据该操作标识对该云端数据库的数据进行增加、修改或删除操作。

可选的,在本发明的一些实施例中,该方法还可以包括:

该服务器接收该第二考勤机发送的第一确认信息,该第一确认信息用于确认该第二考勤机与该第一考勤机数据同步成功;

该服务器删除该待同步的数据。

可选的,在本发明的一些实施例中,该方法还可以包括:

若该服务器在预置阈值时长内,未接收第三考勤机发送的确认信息,则该服务器记录该第三考勤机未同步的信息,并删除该待同步的数据,该第三考勤机为当前未在线的第二考勤机;

当该第三考勤机显示在线时,该服务器根据该第三考勤机未同步的信息,向该第三考勤机发送初始化信息,该初始化信息用于指示该第三考勤机清空本地数据,重新同步该云端数据库的数据;

该服务器接收该第三考勤机发送的第二确认信息,该第二确认信息用于确认该第三考勤机与该云端数据库数据同步成功。

本发明实施例第二方面提供一种服务器,该服务器应用于数据同步系统,该数据同步系统包括服务器、第一考勤机和第二考勤机,该服务器可以包括:

接收模块,用于当该第一考勤机的数据发生更新时,接收该第一考勤机发送的更新数据;

更新模块,用于将该接收模块接收的更新数据更新到云端数据库中;

第一确定模块,用于根据该更新数据确定待同步的数据,以使得在线的第二考勤机从该服务器获取该待同步的数据,实现该第二考勤机与该第一考勤机的数据同步。

可选的,在本发明的一些实施例中,该更新数据可以包括操作标识,

该更新模块,具体用于根据该操作标识对该云端数据库的数据进行增加、修改或删除操作。

可选的,在本发明的一些实施例中,该服务器还可以包括:

该接收模块,还用于接收该第二考勤机发送的第一确认信息,该第一确认信息用于确认该第二考勤机与该第一考勤机数据同步成功;

删除模块,用于删除该待同步的数据。

可选的,在本发明的一些实施例中,该服务器还可以包括:

记录模块,用于若该服务器在预置阈值时长内,未接收第三考勤机发送的确认信息,则该记录模块记录该第三考勤机未同步的信息,并删除该待同步的数据,该第三考勤机为当前未在线的第二考勤机;

发送模块,用于当该第三考勤机显示在线时,该发送模块根据该第三考勤机未同步的信息,向该第三考勤机发送初始化信息,该初始化信息用于指示该第三考勤机清空本地数据,重新同步该云端数据库的数据;

该接收模块,还用于接收该第三考勤机发送的第二确认信息,该第二确认信息用于确认该第三考勤机与该云端数据库数据同步成功。

本发明实施例第三方面提供一种数据同步系统,该数据同步系统可以包括:服务器、第一考勤机和第二考勤机;

该第一考勤机用于当数据发生更新时,向该服务器发送更新数据;

该服务器用于接收该第一考勤机发送的更新数据;将该更新数据更新到云端数据库中;根据该更新数据确定待同步的数据,以使得在线的第二考勤机从该服务器获取该待同步的数据,实现该第二考勤机与该第一考勤机的数据同步。

可选的,在本发明的一些实施例中,该更新数据可以包括操作标识,

该服务器具体用于根据该操作标识对该云端数据库的数据进行增加、修改或删除操作。

可选的,在本发明的一些实施例中,

该第二考勤机用于在线时,从该服务器中获取该待同步的数据;向该服务器发送第一确认信息,该第一确认信息用于确认该第二考勤机与该第一考勤机数据同步成功;

该服务器用于接收该第二考勤机发送的第一确认信息,该第一确认信息用于确认该第二考勤机与该第一考勤机数据同步成功;删除该待同步的数据。

可选的,在本发明的一些实施例中,

该服务器还用于若该服务器在预置阈值时长内,未接收第三考勤机发送的确认信息,则该服务器记录该第三考勤机未同步的信息,并删除该待同步的数据,该第三考勤机为当前未在线的第二考勤机;当该第三考勤机显示在线时,该服务器根据该第三考勤机未同步的信息,向该第三考勤机发送初始化信息,该初始化信息用于指示该第三考勤机清空本地数据,重新同步该云端数据库的数据;该服务器接收该第三考勤机发送的第二确认信息,该第二确认信息用于确认该第三考勤机与该云端数据库数据同步成功。

从以上技术方案可以看出,本发明实施例具有以下优点:

在本发明实施例中,当第一考勤机有数据更新时,会先上传到服务器,服务器先对应的更新云端数据库的数据,再确定待同步的数据,以使得在线的第二考勤机从服务器获取所述待同步的数据,实现第二考勤机与第一考勤机的数据同步。

附图说明

为了更清楚地说明本发明实施例技术方案,下面将对实施例和现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例中提供的数据同步系统的结构示意图;

图2为本发明实施例中提供的RabbitMQ通信结构示意图;

图3为本发明实施例中提供的Storm工作的流程示意图;

图4为本发明实施例中提供的Supervisor工作的流程示意图;

图5为本发明实施例中提供的方法实施例的一个示意图;

图6为本发明实施例中提供的服务器实施例的一个示意图;

图7为本发明实施例中提供的服务器实施例的另一个示意图;

图8为本发明实施例中提供的服务器实施例的另一个示意图;

图9为本发明实施例中提供的服务器数据同步系统的一个示意图。

具体实施方式

本发明实施例提供了一种数据同步方法、服务器以及数据同步系统,用于当第一考勤机的数据发生更新时,更新的的数据可同步到第二考勤机。

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

在现有技术中,每个公司基本上都使用考勤机进行考勤记录,一般考勤机的考勤数据的导出/导入是需要人为的通过U盘或者连接到电脑上进行,或者,公司架设一个服务器,当设备上有数据更新时,主动上传到服务器,当有需要时再人为地导入另外的考勤机信息。这样就造成了在数据同步中需要人为干涉,效率低;而且设备间的数据共享时,实时性也比较差。

在本发明技术方案中,应用于数据同步系统,所述数据同步系统包括服务器、第一考勤机和第二考勤机,每个考勤机与服务器已建立连接关系。请参阅图1所示,是本发明实施例的系统架构图。当第一考勤机的考勤数据发生更新时,第一考勤机将更新数据向服务器发送,服务器在云端数据库也做对应的数据更新之后,再确定待同步的数据,即云端数据库更新的数据,第二考勤机在线时,从所述服务器中获取同步数据实现所述第二考勤机与所述第一考勤机的数据同步。需要说明的是,这里的第一考勤机不是特指某一个考勤机,可以是一个,也可以是多个,第二考勤机也是同样的,可以是一个,也可以是多个。其中,在图1所示虚线的第二考勤机可视为未在线的考勤机,在本发明下述的内容中将未在线的第二考勤机以第三考勤机命名来进行说明。

下面对本发明技术方案中所用到的相关技术先做一下简要的说明。需要说明的是,在本发明技术方案中不仅仅局限于以下所提供的相关技术,其他适合本发明技术方案的技术也同样适用。

1、消息队列(RabbitMQ)

RabbitMQ是一个基于消息队列的通信中间件。使用消息队列进行通信的机制是异步的通信方式,通信单位为一个消息。消息的发送方和接收方之间不必保持直接的连接(比如TCP/IP连接)。发送方将消息发送出去后,消息会先到达一个缓存队列。此时如果发送方掉线了,接收方依然可以收到消息。这个队列是先进先出的,当接收方在线时,会按消息的先后到达顺序从队列读取消息并处理。

RabbitMQ基本的通信结构如图2所示。每个接收方在服务器上都有一个消息缓存队列,每个队列绑定一个密钥Key(队列间的Key可以相同)。交换机(Exchange)负责从发送方接收消息并转发给相应的队列。

2、Storm分布式流式计算

Storm有两种工作模式:本地模式和分布模式。本地模式中,Storm完全运行在一台计算机的进程中,用线程模拟各个工作节点。在分布模式中,Storm运作在一个计算机集群中。

Storm是一种实时的分布式流式计算框架。Storm框架有两种节点:Nimbus和Worker。请参阅图3所示,为Storm的流程示意图。Nimbus是控制节点,在一个Storm集群中有且仅有一个,负责分配任务及监控任务是否失败。Worker是工作节点,执行具体的业务逻辑。每个Worker都配有一个Supervisor及若干个任务进程。Supervisor负责接受Nimbus分配的任务,启动和停止属于自己管理的任务进程。Nimbus和Supervisor之间的协作通过Apache的开源分布式服务Zookeeper进行协调。

Supervisor管理的任务进程运行在两种组件上:Spout和Bolt。请参阅图4所示,为Supervisor管理的流程示意图。Spout是数据流的源头,从数据源(可以是某个队列或者其它)读取数据,打包成一个个Tuple(任务节点间通信的单位)发给Bolt。Bolt从Tuple中提取出本节点逻辑需要的数据,处理完后,继续把数据打包到Tuple传给下一节点。

下面对本发明实施例中的方法实施例进行说明,如图5所示,本发明实施例中数据同步的方法的一个实施例,包括:

501、当第一考勤机的数据发生更新时,服务器接收第一考勤机发送的更新数据;

在本发明实施例中,当第一考勤机的数据发生更新时,该服务器会接收第一考勤机发送的更新数据。在数据同步系统中,当考勤机上新登记一个员工的信息或者员工打卡时,或者,在网页上或者手机上修改员工资料或者考勤信息时,考勤机将这些更新数据发送到服务器中,实际上是发送到云服务器中的RabbitMQ。

需要说明的是,由于考勤机的性能有限,为了避免更新数据过于频繁的网络发送,在考勤机上的更新数据会先按既定的语法保存在一个操作operation_log的表里,考勤机的管理员有一个登录云服务器的帐号,在考勤机上用对应账号登录后,考勤机将与相应的公司及所属区域(如果有划分区别的话)通过设备序列号(SN,Serial number)建立联系。当考勤机在线时,会按既定的间隔(比如10秒)扫描一次operation_log表,如果有更新数据,就读取出来打包发送到名为device_to_cloud,类型为Direct的Exchange里。名为device_to_cloud的Exchange绑定了一个队列,更新数据都转发到该队列中。Storm中名为RabbitMQ的Spout会从该队列中读取消息,发送给业务处理拓扑中的Bolt。需要说明的是,交换机的类型和命名不作限定。

502、服务器将更新数据更新到云端数据库中;

在本发明实施例中,服务器根据接收到的更新数据更新到云端数据库中。具体的,更新数据可包括操作标识,即服务器根据操作标识对云端数据库的数据进行增加、修改或删除操作。操作标识指示云端数据库的更新操作具体是增加、修改或删除等其他操作,具体不作限定。

应理解,这里的操作标识可以是一个操作指令,指示服务器对云端数据库的数据进行相应的操作,也可以是其他形式的说明。这个操作标识还可以包括具体的考勤机的互联网协议地址(Internet Protocol,IP),指示具体是哪个第一考勤机的数据发生更新。

503、服务器根据更新数据确定待同步的数据,以使得在线的第二考勤机从服务器获取待同步的数据,实现第二考勤机与第一考勤机的数据同步;

在本发明实施例中,服务器根据更新数据确定待同步的数据,以使得在线的第二考勤机从服务器获取待同步的数据,实现第二考勤机与第一考勤机的数据同步。

需要说明的是,云端数据库更新数据时,会触发数据库操作监听器,查询出所有相关考勤机的SN信息,把云端数据库的更新数据及考勤机SN封装为待同步的数据,发送到云端数据库的RabbitMQ中,即与第二考勤机绑定的名为SN_sync的接收队列中,这样当第二考勤机在线时可以及时同步到数据。

504、服务器接收第二考勤机发送的第一确认信息,第一确认信息用于确认第二考勤机与第一考勤机数据同步成功;

在本发明实施例中,当第二考勤机的数据同步成功之后,向服务器发送第一确认信息,服务器接收第二考勤机发送的第一确认信息,第一确认信息用于确认第二考勤机与第一考勤机数据同步成功。

505、服务器删除待同步的数据。

在本发明实施例中,服务器接收第二考勤机发送的第一确认信息之后,确定第二考勤机的数据与第一考勤机数据同步成功,服务器删除待同步的数据。

需要说明的是,步骤504、步骤505为可选的步骤。在本发明实施例中所用到的工作表的命名,交换机的命名,队列的命名都是举的实例而已。在实际应用中,也可以作其他命名。

在本发明实施例中,当第一考勤机有数据更新时,将更新数据向服务器发送,服务器接收更新数据,同时更新云端数据库的数据,再确定待同步的数据,以使得在线的第二考勤机从服务器获取待同步的数据,实现第二考勤机与第一考勤机的数据同步。充分利用RabbitMQ和Storm的优势,为生物识别智能办公云平台提供实时的考勤数据收集与同步;部署在云服务器上,方便数据的扩展;可以支持大规模的考勤设备管理,并且企业接入云平台即能使用,方便管理。

可选的,在本发明的一些实施例中,

若服务器在预置阈值时长内,未接收第三考勤机发送的确认信息,则服务器记录第三考勤机未同步的信息,并删除待同步的数据,第三考勤机为当前未在线的第二考勤机;

当第三考勤机显示在线时,服务器根据第三考勤机未同步的信息,向第三考勤机发送初始化信息,初始化信息用于指示第三考勤机清空本地数据,重新同步云端数据库的数据;

服务器接收第三考勤机发送的第二确认信息,第二确认信息用于确认第三考勤机与云端数据库数据同步成功。

需要说明的是,如果在第二考勤机中有考勤机掉线了,考勤机的接收队列设有超时时间,当超过一定时间后,接收队列中待同步的数据将被清空。这时如果考勤机又连上云服务器,服务器会发送一个状态告知考勤机,未与服务器保持同步,需要重新初始化,这时考勤机将把operation_log表里的数据发送到服务器,然后清空本机的数据重新同步云端的数据。在初始化过程中,没有涉及数据的增删改操作,因此不会触发数据操作监听器,Storm的业务拓扑的最后一个Bolt业务负责将服务器下发的数据打包成RabbitMQ发送给设备绑定的名为SN_config队列。如果掉线时间没有超过队列的超时时间,则会按上文提到的方法进行同步。

下面对本发明实施例中的服务器进行说明,如图6所示,本发明实施例中的服务器,包括:

接收模块601,用于当第一考勤机的数据发生更新时,接收第一考勤机发送的更新数据;

更新模块602,用于将接收模块接收的更新数据更新到云端数据库中;

第一确定模块603,用于根据更新数据确定待同步的数据,以使得在线的第二考勤机从服务器获取待同步的数据,实现第二考勤机与第一考勤机的数据同步。

可选的,在本发明的一些实施例中,更新数据包括操作标识,

更新模块602,具体用于根据操作标识对云端数据库的数据进行增加、修改或删除操作。

可选的,在本发明的一些实施例中,如图7所示,服务器还包括:

接收模块601,还用于接收第二考勤机发送的第一确认信息,第一确认信息用于确认第二考勤机与第一考勤机数据同步成功;

删除模块604,用于删除待同步的数据。

可选的,在本发明的一些实施例中,如图8所示,服务器还包括:

记录模块605,用于若服务器在预置阈值时长内,未接收第三考勤机发送的确认信息,则记录模块记录第三考勤机未同步的信息,并删除待同步的数据,第三考勤机为当前未在线的第二考勤机;

发送模块606,用于当第三考勤机显示在线时,发送模块根据第三考勤机未同步的信息,向第三考勤机发送初始化信息,初始化信息用于指示第三考勤机清空本地数据,重新同步云端数据库的数据;

接收模块601,还用于接收第三考勤机发送的第二确认信息,第二确认信息用于确认第三考勤机与云端数据库数据同步成功。

如图9所示,为本发明提供的一种数据同步系统,包括:服务器901、第一考勤机902和第二考勤机903,其中,在图9所示的架构图中,虚线指示的第二考勤机就是本发明所提及的第三考勤机;

第一考勤机902用于当数据发生更新时,向服务器发送更新数据;

服务器901用于接收第一考勤机发送的更新数据;将更新数据更新到云端数据库中;根据更新数据确定待同步的数据,以使得在线的第二考勤机903从服务器获取待同步的数据,实现第二考勤机与第一考勤机的数据同步。

可选的,在本发明的一些实施例中,更新数据包括操作标识,

服务器901具体用于根据操作标识对云端数据库的数据进行增加、修改或删除操作。

可选的,在本发明的一些实施例中,

第二考勤机903用于在线时,从服务器中获取待同步的数据;向服务器发送第一确认信息,第一确认信息用于确认第二考勤机与第一考勤机数据同步成功;

服务器901用于接收第二考勤机发送的第一确认信息,第一确认信息用于确认第二考勤机与第一考勤机数据同步成功;删除待同步的数据。

可选的,在本发明的一些实施例中,

服务器901还用于若服务器在预置阈值时长内,未接收第三考勤机发送的确认信息,则服务器记录第三考勤机未同步的信息,并删除待同步的数据,第三考勤机为当前未在线的第二考勤机;当第三考勤机显示在线时,服务器根据第三考勤机未同步的信息,向第三考勤机发送初始化信息,初始化信息用于指示第三考勤机清空本地数据,重新同步云端数据库的数据;服务器接收第三考勤机发送的第二确认信息,第二确认信息用于确认第三考勤机与云端数据库数据同步成功。

本发明实施例还提供了一种计算机存储介质,用于储存为上述图5、图6、图7或图8所述的服务器所用的计算机软件指令,其包含用于执行上述方法实施例所设计的程序。通过执行存储的程序,可以实现第一考勤机与第二考勤机的数据同步。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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