CN113364864A - 一种服务器数据同步方法、***及存储介质 - Google Patents

一种服务器数据同步方法、***及存储介质 Download PDF

Info

Publication number
CN113364864A
CN113364864A CN202110620386.6A CN202110620386A CN113364864A CN 113364864 A CN113364864 A CN 113364864A CN 202110620386 A CN202110620386 A CN 202110620386A CN 113364864 A CN113364864 A CN 113364864A
Authority
CN
China
Prior art keywords
synchronization
node
data
list
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110620386.6A
Other languages
English (en)
Other versions
CN113364864B (zh
Inventor
祁溢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Weimeng Enterprise Development Co ltd
Original Assignee
Shanghai Weimeng Enterprise Development Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Weimeng Enterprise Development Co ltd filed Critical Shanghai Weimeng Enterprise Development Co ltd
Priority to CN202110620386.6A priority Critical patent/CN113364864B/zh
Publication of CN113364864A publication Critical patent/CN113364864A/zh
Application granted granted Critical
Publication of CN113364864B publication Critical patent/CN113364864B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种服务器数据同步方法、***及存储介质,方法包括:同步节点获取预设的同步列表,并确定同步列表中包含的MongoDB数据库中的集合;其中,多个同步节点与MongoDB数据库和Elasticsearch服务器建立数据连接,每一同步节点对应不同的同步列表;同步节点对集合中发生的数据变更操作进行监听,并在检测到数据变更操作发生时,将变更的数据更新至Elasticsearch服务器。本方法使用设置有不同的同步列表的多个同步节点来完成数据同步,每一同步节点可对MongoDB数据库中的不同集合进行监听及数据同步,进而有效提升整体数据同步的吞吐量,可有效解决单一同步设备难以高效进行数据同步的问题。

Description

一种服务器数据同步方法、***及存储介质
技术领域
本发明涉及服务器领域,特别涉及一种服务器数据同步方法、***及存储介质。
背景技术
Elasticsearch为一个分布式搜索和数据分析引擎,其通常会采用MongoDB作为存储数据的后端数据库。然而Elasticsearch的性能受MongoDB数据库的数据同步速度影响,若MongoDB数据库不能及时将数据同步至Elasticsearch服务器,将会制约Elasticsearch服务器的搜索及数据分析能力,因此MongoDB数据库及Elasticsearch服务器之间数据同步是本领域的重要问题。
相关技术中,MongoDB数据库及Elasticsearch服务器之间的数据同步通过单个同步设备进行,而该同步设备通过监听MongoDB数据库中的集合的数据变更情况来进行数据同步。当MongoDB数据库中存有大量数据,或集合中的数据变更情况较多时,上述方式难以高效进行数据同步,无法保证数据吞吐量。
发明内容
本发明的目的是提供一种服务器数据同步方法、***及存储介质,可使用多个同步节点来完成数据同步,每一同步节点可对MongoDB数据库中的不同集合进行监听及数据同步,进而有效提升整体数据同步的吞吐量,可有效解决单一同步设备难以高效进行数据同步的问题。
为解决上述技术问题,本发明提供一种服务器数据同步方法,包括:
同步节点获取预设的同步列表,并确定所述同步列表中包含的MongoDB数据库中的集合;其中,多个所述同步节点与MongoDB数据库和Elasticsearch服务器建立数据连接,每一所述同步节点对应不同的同步列表;
所述同步节点对所述集合中发生的数据变更操作进行监听,并在检测到所述数据变更操作发生时,将变更的数据更新至所述Elasticsearch服务器。
可选地,当所述同步节点包含流处理模块、哈希分配模块及本地分片模块时,所述同步节点对所述集合中发生的数据变更操作进行监听,并在检测到所述数据变更操作发生时,将变更的数据更新至所述Elasticsearch服务器,包括:
所述流处理模块对所述数据变更操作进行监听,并在确定所述数据变更操作发生时,将所述变更的数据发送至所述哈希分配模块;
所述哈希分配模块根据接收到的数据条数及所述本地分片模块的分片数量,计算每一所述本地分片模块所处理数据的处理条数,并根据所述处理条数向所述本地分片模块分配所述数据;
所述本地分片模块确定接收到的数据的字段信息,并确定所述字段信息与Elasticsearch服务器字段信息的映射关系,最后调用所述Elasticsearch服务器的数据更新接口,依照所述映射关系将所述数据更新至所述Elasticsearch服务器。
可选地,在依照所述映射关系将所述数据更新至所述Elasticsearch服务器之后,还包括:
所述本地分片模块通过所述数据更新接口获取更新进度,并将所述更新进度保存于进度存储区域。
可选地,在同步节点获取预设的同步列表之前,还包括:
主节点获取所述MongoDB数据库中所有集合的集合数量及所述同步节点的节点数量,并利用所述集合数量及所述节点数量计算每一所述同步节点的集合监听量;
所述主节点根据所述集合监听量将所述同步节点所需监听的集合写入同步列表,并将所述同步列表下发至对应的同步节点。
可选地,在将所述同步列表下发至对应的同步节点之后,还包括:
所述主节点在检测到扩容事件发生时,为新增的同步节点创建所述同步列表,并利用所述集合数量及更新后的节点数量对所述集合监听量进行更新;
所述主节点根据所述更新后的集合监听量对对应的同步列表进行更新,以使更新后的同步列表包含的集合数量小于等于所述更新后的集合监听量,并将所述更新后的同步列表下发至对应的同步节点。
可选地,在将所述同步列表下发至对应的同步节点之后,还包括:
所述主节点在检测到缩容事件发生时,将待移除的同步节点对应的同步列表设置为待移除列表,并将所述待移除列表中的集合更新至其他所述同步列表;
所述主节点将所述待移除的同步节点及所述待移除列表移除,并将更新后的同步列表下发至对应的同步节点。
可选地,在主节点获取所述MongoDB数据库中所有集合的集合数量及所述同步节点的节点数量之前,还包括:
所述同步节点在启动后,向Zookeeper集群中间件发送启动时间,并判断所述Zookeeper集群中间件中是否记录有所述主节点;
若是,则所述同步节点通过所述Zookeeper集群中间件对所述主节点进行监听,以接收所述主节点下发的所述同步列表;
若否,所述同步节点则向所述Zookeeper集群中间件发送所述同步节点的设备信息,以使所述Zookeeper集群中间件利用所述设备信息将所述同步节点设置为所述主节点;
当所述同步节点完成主节点设置后,执行所述获取所述MongoDB数据库中所有集合的集合数量及所述同步节点的节点数量的步骤。
可选地,在将所述同步列表下发至对应的同步节点之后,还包括:
所述Zookeeper集群中间件向所述主节点发送心跳数据,以使所述主节点向所述Zookeeper集群中间件返回回执数据;
若所述Zookeeper集群中间件未接收到所述回执数据,则向所有所述同步节点发送主节点离线通知;
第一同步节点在接收到所述主节点离线通知后,向所述Zookeeper集群中间件获取所述第一同步节点的第一启动时间及其他所述同步节点的第二启动时间,并判断是否存在晚于所述第一启动时间的第二启动时间;
若是,则所述第一同步节点在等待预设时间段后,判断所述Zookeeper集群中间件中是否记录有所述主节点;
若记录有所述主节点,则所述第一同步节点通过所述Zookeeper集群中间件对所述主节点进行监听;
若未记录有所述主节点,则所述第一同步节点向所述Zookeeper集群中间件发送所述第一同步节点的设备信息,以使所述Zookeeper集群中间件利用所述第一同步节点的设备信息将所述第一同步节点设置为所述主节点;
若否,则所述第一同步节点向所述Zookeeper集群中间件发送所述第一同步节点的设备信息,以使所述Zookeeper集群中间件利用所述设备信息将所述第一同步节点设置为所述主节点。
本发明还提供一种服务器数据同步***,包括:同步节点、MongoDB数据库及Elasticsearch服务器,其中,
所述MongoDB数据库,用于保存所述Elasticsearch服务器所需的数据;
所述同步节点,用于获取预设的同步列表,并确定所述同步列表中包含的MongoDB数据库中的集合;其中,多个所述同步节点与MongoDB数据库和Elasticsearch服务器建立数据连接,每一所述同步节点对应不同的同步列表;所述同步节点对所述集合中发生的数据变更操作进行监听,并在检测到所述数据变更操作发生后,将变更的数据更新至所述Elasticsearch服务器;
所述Elasticsearch服务器,用于接收所述同步节点发送的数据。
本发明还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的服务器数据同步方法的步骤。
本发明提供一种服务器数据同步方法,包括:同步节点获取预设的同步列表,并确定所述同步列表中包含的MongoDB数据库中的集合;其中,多个所述同步节点与MongoDB数据库和Elasticsearch服务器建立数据连接,每一所述同步节点对应不同的同步列表;所述同步节点对所述集合中发生的数据变更操作进行监听,并在检测到所述数据变更操作发生时,将变更的数据更新至所述Elasticsearch服务器。
可见,本方法使用多个同步节点来完成MongoDB数据库与Elasticsearch服务器之间的数据同步,同时每个同步节点设置有不同的同步列表,进而能够对MongoDB数据库中的不同集合进行监听,可有效将相关技术中单个同步设备的同步工作分配给多个同步节点,可确保每个同步节点均拥有合适的监听量,进而能够确保在MongoDB数据库中的集合数量较大,或是集合中的数据变更情况较大的情况下,同步节点仍能够高效执行数据同步,避免相关技术中采用单个同步设备难以保证数据同步效率的情况;同时,由于本方法中的多个同步节点能够同时监听集合中的数据变更操作,并在确定数据变更操作发生时,快速将变更的数据更新至Elasticsearch服务器,能够有效提升数据吞吐量,进而可有效解决相关技术中采用单一同步设备难以高效进行数据同步的问题。本发明还提供一种服务器数据同步***及存储介质,具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的一种服务器数据同步方法的流程图;
图2为本发明实施例所提供的一种服务器数据同步方法所适用的硬件框架的结构框图;
图3为本发明实施例所提供的另一种服务器数据同步方法的流程图;
图4a为本发明实施例所提供的一种服务器数据同步***的结构框图;
图4b为本发明实施例所提供的一种同步节点的结构框图;
图4c为本发明实施例所提供的另一种服务器数据同步***的结构框图;
图4d为本发明实施例所提供的又一种服务器数据同步***的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中,MongoDB数据库及Elasticsearch服务器之间的数据同步通过单个同步设备进行,而该同步设备通过监听MongoDB数据库中的集合的数据变更情况来进行数据同步。当MongoDB数据库中存有大量数据,或集合中的数据变更情况较多时,上述方式难以高效进行数据同步,无法保证数据吞吐量。其中,MongoDB数据库为一种基于分布式文件存储的数据库。有鉴于此,本发明提供一种服务器数据同步方法,可使用多个同步节点来完成数据同步,每一同步节点可对MongoDB数据库中的不同集合进行监听及数据同步,进而有效提升整体数据同步的吞吐量,可有效解决单一同步设备难以高效进行数据同步的问题。请参考图1,图1为本发明实施例所提供的一种服务器数据同步方法的流程图,该方法可以包括:
S101、同步节点获取预设的同步列表,并确定同步列表中包含的MongoDB数据库中的集合;其中,多个同步节点与MongoDB数据库和Elasticsearch服务器建立数据连接,每一同步节点对应不同的同步列表。
在本发明实施例中,同步节点为独立于MongoDB数据库和Elasticsearch服务的独立设备,用于同步MongoDB数据库与Elasticsearch服务器之间的数据。本发明实施例采用多个同步节点进行服务器数据同步,请参考图2,图2为本发明实施例所提供的一种服务器数据同步方法所适用的硬件框架的结构框图,可以看出多台同步节点(同步节点1~同步节点n)以并联的形式连接与MongoDB数据库与Elasticsearch服务器之间。需要说明的是,本发明实施例并不限定同步节点的具体硬件结构,只要其能够完成本发明实施例所提供的服务器数据同步方法即可。本发明实施例也不限定同步节点的数量,可根据实际应用需求进行设定。考虑到MongoDB对监听节点的有节点接入数量限制,因此在设置同步节点时,其数量应当小于等于MongoDB的节点接入数量限制。
进一步,在本发明实施例中,每一同步节点中存有预设的同步列表,该同步列表中保存有该节点所需监听的MongoDB集合,其中MongoDB集合(Collection)为MongoDB数据的一种数据类型。每一同步节点对应不同的同步列表,进而每一同步节点对MongoDB中的不同集合进行监听,不仅可确保所有同步节点能够有效对MongoDB中的所有集合进行监听,同时也可将集合监听任务划分至多个同步节点中,确保每一同步节点均以合适的工作量进行监听,进而确保同步节点高效工作。需要说明的是,本发明实施例并不限定同步列表的具体形式,只要该同步列表中可存放MongoDB集合的信息即可,可根据实际应用需求进行调整;本发明实施例也不限定每一同步列表中可包含的MongoDB集合数量,可根据实际应用需求进行调整。当然,为了确保每一同步节点的工作量均衡,在设置同步列表时,可以对每一同步节点进行负载均衡,确保每一同步节点的集合监听量相同或近似(即同步节点之间的监听量之差在预设范围之内)。本发明实施例并不限定负载均衡的具体步骤,只要能够确保每一同步节点能够以相同或近似的监听量进行工作即可。
S102、同步节点对集合中发生的数据变更操作进行监听,并在检测到数据变更操作发生时,将变更的数据更新至Elasticsearch服务器。
在本发明实施例中,由于MongoDB数据库用于存放Elasticsearch服务器所需的数据,因此在MongoDB数据库中发生数据变更时,便需要将变更的数据同步至Elasticsearch服务器,换句话说,同步节点对集合监听正是为了确保MongoDB集合中是否发生数据变更操作。若同步节点确定数据变更操作已经发生,便需要将变更的数据同步更新至Elasticsearch服务器,以确保数据同步。
需要说明的是,本发明实施例并不限定同步节点确定数据变更操作是否发生的具体实现方式,可参考MongoDB Watch的相关技术,其中MongoDB Watch为MongoDB所提供的变更数据监听功能。
进一步,在确定数据变更操作发生时,同步节点便需要将变更的数据写入Elasticsearch服务器。可以理解的是,同步节点首先需要将变更的数据从MongoDB数据库中拉取出来。本发明实施例并不限定拉取数据的具体实现方式,可参考MongoDB ChangeStream的相关技术,MongoDB Change Stream是MongoDB向应用发布数据变更的一种方式。进一步,由于MongoDB Change Stream对变更数据拉取功能采用同步执行流程进行,这样会导致数拉取效率下降,因此在本发明实施例中,可将MongoDB Change Stream的监听及变更数据拉取改为异步执行,即MongoDB Change Stream会在确定本次从MongoDB拉取的数据开始向Elasticsearch服务器进行数据同步处理时异步发起下次的数据拉取。
进一步,本发明实施例并不限定同步节点能否通过内部分片的方式得到多个本地分片模块,并将变更的数据的更新操作划分至这些本地分片模块中并行执行,若每一同步节点的集合监听量较少,可无需设置本地分片模块,即依照变更数据的获取顺序将变更数据更新至Elasticsearch服务器即可;若每一同步节点的集合监听量较多,也可设置本地分片模块,进而在确定变更的数据后,需要将这些数据划分至每一本地分片模块中,并由这些本地分片模块进行并行更新。考虑到MongoDB数据库中的集合较多,即同步节点可能需要同时对多个集合进行监听,此时若采用依照变更数据的获取顺序进行数据更新的方式将产生数据堆积,影响数据更新速度,因此在本发明实施例中,可采用本地分片模块对变更数据进行并行更新,换而言之,同步节点可通过内部分片的方式得到多个本地分片模块,并将变更的数据写入操作划分至这些本地分片模块中并行执行。需要说明的是,本发明实施例并不限定本地分片模块的数量,可根据实际应用需求进行设置;本发明实施例也不限定每一本地分片模块可处理变更数据的最大条数,同样可根据实际应用进行设置;本发明实施例同样不限定得到本地分片模块的具体分片方式,可参考哈希分片的相关技术,例如可以采用哈希取模法、虚拟桶及一致性哈希的方式。考虑到哈希取模法简单易行,在本发明实施例中可采用哈希取模法进行分片。进一步,可以理解的是,在为每一本地分片模块分配变更数据时,也可采用哈希取模法得到每一本地分片模块对应的变更数据,具体可参考哈希取模法的相关技术。
在一种可能的情况中,当同步节点包含流处理模块、哈希分配模块及本地分片模块时,同步节点对集合中发生的数据变更操作进行监听,并在检测到数据变更操作发生时,将变更的数据更新至Elasticsearch服务器,包括:
步骤11:流处理模块对数据变更操作进行监听,并在确定数据变更操作发生时,将变更的数据发送至哈希分配模块。
流处理模块可使用上述MongoDB Watch和MongoDB Change Stream实现,具体的限定描述可参考上述描述。
步骤12:哈希分配模块根据接收到的数据条数及本地分片模块的分片数量,计算每一本地分片模块所处理数据的处理条数,并根据处理条数向本地分片模块分配数据。
哈希分配模块采用哈希取模法进行数据分配。在本发明实施例中,为了确保本地分片模块负载均衡,首先根据获取到的数据条数及分片数量计算了每一本地分片模块平均的处理条数,随后才根据处理条数向本地分片模块分配数据。
步骤13:本地分片模块确定接收到的数据的字段信息,并确定字段信息与Elasticsearch服务器字段信息的映射关系,最后调用Elasticsearch服务器的数据更新接口,依照映射关系将数据更新至Elasticsearch服务器。
可以理解的是,MongoDB和Elasticsearch为两种异构数据库,因此需要根据MongoDB和Elasticsearch之间的字段映射关系将变更数据同步至Elasticsearch服务器。需要说明的是,本发明实施例并不限定字段映射关系的具体形式,可参考MongoDB和Elasticsearch的相关技术,并结合具体应用需求进行设置。同样可以理解的是,可利用Elasticsearch服务器的数据更新接口将变更数据同步至Elasticsearch服务器,该数据更新接口同样可参考Elasticsearch的相关技术。
进一步,需要说明的是,本发明实施例并不限定本地分片是否需要保存从数据更新接口中回调得到的数据更新进度,若每一次同步的数据量较少,或是可确保同步节点不会离线,可不需要保存该数据更新进度;当每一次的同步的数据量较大,或是同步节点可能出现离线的情况,此时可保存该数据更新进度。在本发明实施例中,考虑到同步节点或是本地分片模块可能出现离线,为了确保同步节点或是本地分片模块下次上线时能够进行断点续传,可保存该数据更新进度。需要说明的是,本发明实施例并不限定从Elasticsearch数据更新接口回调得到数据更新进度的具体实现方式,可参考Elasticsearch的相关技术。
在一种可能的情况中,在依照映射关系将数据更新至Elasticsearch服务器之后,还包括:
步骤21:本地分片模块通过数据更新接口获取更新进度,并将更新进度保存于进度存储区域。
本发明实施例并不限定具体的进度存储区域,可以为本地分片模块的缓存,也可以是一个独立的数据库,可根据实际应用需求进行设置。本发明实施例也不限定进度存储区域仅对单独的本地分片模块的更新进度进行保存,还是对所有本地分片模块的更新进度进行保存。为了保障同步节点的整体工作可靠性,在本发明实施例中,该进度存储区域可对所有本地分片模块的更新进度进行保存。
最后,可以理解的是,同步节点在使用前应当设置同步列表,本发明实施例并不限定同步节点的配置方式,例如可人工输入同步列表,也可以使用主节点进行统一的节点管理。在本发明实施例中,为了提升部署效率,可使用主节点对同步节点进行统一管理,即主节点可以向同步节点下发同步列表。可以理解的是,主节点和同步节点组成同步集群。进一步,本发明实施例中的主节点既可是不具有同步节点功能的独立管理节点,也可以是一个由同步节点进行功能切换得到的管理节点。在本发明实施例中,为了确保同步集群稳定工作,即在主节点停止服务时,可对其他管理节点进行功能切换重新得到主节点,该主节点可以为一个由同步节点进行功能切换得到的管理节点。换句话说,同步集群中的任意同步节点均可进行功能切换,得到该主节点。
下面结合一个具体的流程图介绍上述服务器数据同步方法。请参考图3,图3为本发明实施例所提供的另一种服务器数据同步方法的流程图,其中异步Stream用于异步获取变更数据,会在本次获取的数据(Data)被Hash模块处理后开始读取下一(Next)数据,Watch用于监听数据变更操作,上述流处理模块由异步Stream和Watch共同组成。Hash表示哈希分片模块,用于将数据分配至本地分片模块。本地分片模块由Filter和Option共同组成,Option用于调用Elasticsearch服务器的数据更新接口,将变更的数据写入Elasticsearch服务器,Filter表示进度过滤器,用于接收由数据更新接口返回本地分片模块数据更新进度,并将该进度保存至进度存储。上述异步Stream、Watch、Hash、Filter及Option1至Option4均部署于同一同步节点中。
基于上述实施例,本方法使用多个同步节点来完成MongoDB数据库与Elasticsearch服务器之间的数据同步,同时每个同步节点设置有不同的同步列表,进而能够对MongoDB数据库中的不同集合进行监听,可有效将相关技术中单个同步设备的同步工作分配给多个同步节点,可确保每个同步节点均拥有合适的监听量,进而能够确保在MongoDB数据库中的集合数量较大,或是集合中的数据变更情况较大的情况下,同步节点仍能够高效执行数据同步,避免相关技术中采用单个同步设备难以保证数据同步效率的情况;同时,由于本方法中的多个同步节点能够同时监听集合中的数据变更操作,并在确定数据变更操作发生时,快速将变更的数据更新至Elasticsearch服务器,能够有效提升数据吞吐量,进而可有效解决相关技术中采用单一同步设备难以高效进行数据同步的问题。
基于上述实施例,下面对主节点对同步节点的配置管理过程进行介绍。在一种可能的情况中,在同步节点获取预设的同步列表之前,还可以包括:
S201、主节点获取MongoDB数据库中所有集合的集合数量及同步节点的节点数量,并利用集合数量及节点数量计算每一同步节点的集合监听量。
关于主节点的限定描述可参考上述实施例,此处不再赘述。为了确保每一同步节点以均衡的集合监听量进行工作,在本发明实施例中,主节点在获取MongoDB数据库中的集合数量后,需要计算每一同步节点平均的集合监听量。可以理解的是,集合监听量为整数。若主节点在计算集合监听量时出现余数,也可将多余的监听量平均分配给同步节点。
需要说明的是,本发明实施例并不限定主节点获取MongoDB数据库的集合数量的具体方式,可参考MongoDB的相关技术。
S202、主节点根据集合监听量将同步节点所需监听的集合写入同步列表,并将同步列表下发至对应的同步节点。
进一步,本发明实施例并不限定同步节点的数量能够发生变化,换而言之,本发明实施例并不限定同步集群能否发生扩容或缩容,当同步节点的数量能够满足应用需求时,同步集群可无需进行扩容或缩容;当同步节点的数量难以满足应用需求,可能出现计算资源不足或计算资源过剩的情况,此时同步集群也可以进行扩容和缩容。在本发明实施例中,为了满足同步集群使用者多样的应用需求,同步集群可以进行扩容或缩容,而主节点也可以在发生扩容或缩容事件时进行重新负载平衡,以确保正常工作的每一同步节点以相同或相近的集合监听量进行工作。
在一种可能的情况中,在将同步列表下发至对应的同步节点之后,还包括:
步骤31:主节点在检测到扩容事件发生时,为新增的同步节点创建同步列表,并利用集合数量及更新后的节点数量对集合监听量进行更新。
步骤32:主节点根据更新后的集合监听量对对应的同步列表进行更新,以使更新后的同步列表包含的集合数量小于等于更新后的集合监听量,并将更新后的同步列表下发至对应的同步节点。
可以理解的是,当同步集群发生扩容时,此时应当更新集合监听量,确定实际监听量大于更新后的集合监听量对应的同步列表,并将这些同步列表中多余的集合移动至新增同步节点的同步列表中。
在一种可能的情况中,在将同步列表下发至对应的同步节点之后,还包括:
步骤41:主节点在检测到缩容事件发生时,将待移除的同步节点对应的同步列表设置为待移除列表,并将待移除列表中的集合更新至其他同步列表;
步骤42:主节点将待移除的同步节点及待移除列表移除,并将更新后的同步列表下发至对应的同步节点。
可以理解的是,当同步集群发生缩容时,此时需要将待移除的同步列表中的集合平均分配至其他同步列表,以确保剩下的同步节点仍能够继续对MongoDB数据库进行监听。
进一步,为了进一步提升同步集群的管理效率,在本发明实施例中可采用使用Zookeeper集群中间件进行集群管理,其中Zookeeper是一个分布式应用程序协调服务。Zookeeper集群中间件首先可以对主节点的存活情况进行检测,通过心跳机制维护与主节点之间的通信。当Zookeeper确定丢失与主节点之间的通信,即主节点离线后,将向同步节点发送主节点离线通知,以使同步节点竞争出一个新的主节点。
本发明实施例并不限定具体的心跳机制,例如可以是Zookeeper集群中间件向主节点周期性发送心跳数据,并接收主节点的回执数据,当无法接收到主节点的回执数据时则判定主节点离线;当然也可以是Zookeeper集群中间件周期性接收主节点的心跳数据,并在无法接收到主节点的心跳数据时判定主节点离线。为了确保Zookeeper集群中间件的工作情况不会影响同步集群,在本发明实施例中,心跳机制可以是Zookeeper集群中间件向主节点发送心跳数据,并接收主节点的回执数据。当然,Zookeeper集群中间件也可以使用该心跳机制维持与同步节点之间的通讯,以确保同步节点存活。需要说明的是,本发明实施例并不限定心跳数据的发送周期,可根据实际应用需求进行设置。
本发明实施例也不限定同步节点争抢主节点的方式,例如可以采用集群节点选举方式选择主节点,也可以是同步节点向Zookeeper集群中间件发送设备信息,以使Zookeeper集群中间件将最先接收到的设备信息对应的同步节点设置为主节点。考虑到集群节点选举较为繁琐,因此在本发明实施例中的主节点争抢过程可以为:同步节点向Zookeeper集群中间件发送设备信息,以使Zookeeper集群中间件将最先接收到的设备信息对应的同步节点设置为主节点。当然,也可以先设置特定的同步节点优先争抢主节点,而其他同步节点先等待该同步节点完成主节点配置,若该同步节点配置失败则继续进行主节点争抢。本发明实施例并不限定设置特定同步节点的方式,例如为同步节点设定序号,并设置特定序号某个同步节点优先争抢主节点,也可以是记录同步节点的启动时间,并优先允许启动时间最晚的同步节点争抢主节点。
在一种可能的情况中,在主节点获取MongoDB数据库中所有集合的集合数量及同步节点的节点数量之前,还包括:
步骤51:同步节点在启动后,向Zookeeper集群中间件发送启动时间,并判断Zookeeper集群中间件中是否记录有主节点;若是,则进入步骤52;若否则进入步骤53。
步骤52:同步节点通过Zookeeper集群中间件对主节点进行监听,以接收主节点下发的同步列表。
步骤53:步节点则向Zookeeper集群中间件发送同步节点的设备信息,以使Zookeeper集群中间件利用设备信息将同步节点设置为主节点。
步骤54:当同步节点完成主节点设置后,执行获取MongoDB数据库中所有集合的集合数量及同步节点的节点数量的步骤。
在一种可能的情况中,在将同步列表下发至对应的同步节点之后,还包括:
步骤61:Zookeeper集群中间件向主节点发送心跳数据,以使主节点向Zookeeper集群中间件返回回执数据。
步骤62:若Zookeeper集群中间件未接收到回执数据,则向所有同步节点发送主节点离线通知。
步骤63:第一同步节点在接收到主节点离线通知后,向Zookeeper集群中间件获取第一同步节点的第一启动时间及其他同步节点的第二启动时间,并判断是否存在晚于第一启动时间的第二启动时间;若是,则进入步骤64;若否,则进入步骤67。
步骤64:第一同步节点在等待预设时间段后,判断Zookeeper集群中间件中是否记录有主节点;若是,则进入步骤65;若否,则进入步骤66。
步骤65:第一同步节点通过Zookeeper集群中间件对主节点进行监听。
步骤66:第一同步节点向Zookeeper集群中间件发送第一同步节点的设备信息,以使Zookeeper集群中间件利用第一同步节点的设备信息将第一同步节点设置为主节点。
可以理解的是,当第一同步节点设置为主节点后,将无法继续进行数据同步流程,此时可对自身进行缩容流程,即将第一同步节点对应同步列表中的集合分配至其他同步列表。
步骤67:第一同步节点向Zookeeper集群中间件发送第一同步节点的设备信息,以使Zookeeper集群中间件利用设备信息将第一同步节点设置为主节点。
基于上述实施例,本方法中的主节点可对同步节点所监听的集合进行自动负载均衡,确保同步节点均以相同或相似的集合监听量进行数据同步,进而确保同步节点保持较高的工作效率进行数据同步。
下面对本发明实施例提供的服务器数据同步***及存储介质进行介绍,下文描述的服务器数据同步***及存储介质与上文描述的服务器数据同步方法可相互对应参照。
请参考图4a,图4a为本发明实施例所提供的一种服务器数据同步***的结构框图,该***可以包括:同步节点410、MongoDB数据库420及Elasticsearch服务器430,其中,
MongoDB数据库420,用于保存Elasticsearch服务器所需的数据;
同步节点410,用于获取预设的同步列表,并确定同步列表中包含的MongoDB数据库中的集合;其中,多个同步节点与MongoDB数据库和Elasticsearch服务器建立数据连接,每一同步节点对应不同的同步列表;同步节点对集合中发生的数据变更操作进行监听,并在检测到数据变更操作发生后,将变更的数据更新至Elasticsearch服务器;
Elasticsearch服务器430,用于接收同步节点发送的数据。
可选地,请参考图4b,图4b为本发明实施例所提供的一种同步节点的结构框图,同步节点可以包含流处理模块411、哈希分配模块412及本地分片模块413,其中,
流处理模块411,用于对数据变更操作进行监听,并在确定数据变更操作发生时,将变更的数据发送至哈希分配模块;
哈希分配模块412,用于根据接收到的数据条数及本地分片模块的分片数量,计算每一本地分片模块所处理数据的处理条数,并根据处理条数向本地分片模块分配数据;
本地分片模块413,用于确定接收到的数据的字段信息,并确定字段信息与Elasticsearch服务器字段信息的映射关系,最后调用Elasticsearch服务器430的数据更新接口,依照映射关系将数据更新至Elasticsearch服务器430。
可选地,本地分片模块413,还用于通过数据更新接口获取更新进度,并将更新进度保存于进度存储区域。
可选地,请参考图4c,图4c为本发明实施例所提供的另一种服务器数据同步***的结构框图,该***还可以包括主节点440,其中,
主节点440,用于获取MongoDB数据库420中所有集合的集合数量及同步节点410的节点数量,并利用集合数量及节点数量计算每一同步节点410的集合监听量;根据集合监听量将同步节点410所需监听的集合写入同步列表,并将同步列表下发至对应的同步节点410。
可选地,主节点440,还用于在检测到扩容事件发生时,为新增的同步节点410创建同步列表,并利用集合数量及更新后的节点数量对集合监听量进行更新;根据更新后的集合监听量对对应的同步列表进行更新,以使更新后的同步列表包含的集合数量小于等于更新后的集合监听量,并将更新后的同步列表下发至对应的同步节点410。
可选地,主节点440,还用于在检测到缩容事件发生时,将待移除的同步节点410对应的同步列表设置为待移除列表,并将待移除列表中的集合更新至其他同步列表;将待移除的同步节点410及待移除列表移除,并将更新后的同步列表下发至对应的同步节点410。
可选地,请参考图4d,图4d为本发明实施例所提供的又一种服务器数据同步***的结构框图,该***还可以包括:Zookeeper集群中间件450,其中,
同步节点410,还用于在启动后,向Zookeeper集群中间450发送启动时间,并判断Zookeeper集群中间件中是否记录有主节点440;若是,则同步节点通过Zookeeper集群中间件对主节点440进行监听,以接收主节点440下发的同步列表;若否,同步节点则向Zookeeper集群中间件发送同步节点的设备信息,以使Zookeeper集群中间件利用设备信息将同步节点设置为主节点440;当完成主节点设置后,执行获取MongoDB数据库中所有集合的集合数量及同步节点的节点数量的步骤;
Zookeeper集群中间件450,用于记录同步节点410发送的启动时间及主节点440的设备信息。
可选地,Zookeeper集群中间件450,还用于向主节点440发送心跳数据,以使主节点440向Zookeeper集群中间件450返回回执数据;若未接收到回执数据,则向所有同步节点发送主节点离线通知;
同步节点410,还用于在接收到主节点离线通知后,向Zookeeper集群中间件450获取第一启动时间及其他同步节点的第二启动时间,并判断是否存在晚于第一启动时间的第二启动时间;若是,则在等待预设时间段后,判断Zookeeper集群中间件450中是否记录有主节点440;若记录有主节点440,则通过Zookeeper集群中间件450对主节点440进行监听;若未记录有主节点440,则向Zookeeper集群中间件发送同步节点410的设备信息,以使Zookeeper集群中间件利用同步节点410的设备信息将同步节点410设置为主节点;若否,则向Zookeeper集群中间件发送同步节点410的设备信息,以使Zookeeper集群中间件利用设备信息将同步节点410设置为主节点440。
本发明实施例还提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的服务器数据同步方法的步骤。
由于存储介质部分的实施例与服务器数据同步方法部分的实施例相互对应,因此存储介质部分的实施例请参见服务器数据同步方法部分的实施例的描述,这里暂不赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的服务器数据同步方法、***及存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (10)

1.一种服务器数据同步方法,其特征在于,包括:
同步节点获取预设的同步列表,并确定所述同步列表中包含的MongoDB数据库中的集合;其中,多个所述同步节点与MongoDB数据库和Elasticsearch服务器建立数据连接,每一所述同步节点对应不同的同步列表;
所述同步节点对所述集合中发生的数据变更操作进行监听,并在检测到所述数据变更操作发生时,将变更的数据更新至所述Elasticsearch服务器。
2.根据权利要求1所述的服务器数据同步方法,其特征在于,当所述同步节点包含流处理模块、哈希分配模块及本地分片模块时,所述同步节点对所述集合中发生的数据变更操作进行监听,并在检测到所述数据变更操作发生时,将变更的数据更新至所述Elasticsearch服务器,包括:
所述流处理模块对所述数据变更操作进行监听,并在确定所述数据变更操作发生时,将所述变更的数据发送至所述哈希分配模块;
所述哈希分配模块根据接收到的数据条数及所述本地分片模块的分片数量,计算每一所述本地分片模块所处理数据的处理条数,并根据所述处理条数向所述本地分片模块分配所述数据;
所述本地分片模块确定接收到的数据的字段信息,并确定所述字段信息与Elasticsearch服务器字段信息的映射关系,最后调用所述Elasticsearch服务器的数据更新接口,依照所述映射关系将所述数据更新至所述Elasticsearch服务器。
3.根据权利要求2所述的服务器数据同步方法,其特征在于,在依照所述映射关系将所述数据更新至所述Elasticsearch服务器之后,还包括:
所述本地分片模块通过所述数据更新接口获取更新进度,并将所述更新进度保存于进度存储区域。
4.根据权利要求1至3任一项所述的服务器数据同步方法,其特征在于,在同步节点获取预设的同步列表之前,还包括:
主节点获取所述MongoDB数据库中所有集合的集合数量及所述同步节点的节点数量,并利用所述集合数量及所述节点数量计算每一所述同步节点的集合监听量;
所述主节点根据所述集合监听量将所述同步节点所需监听的集合写入同步列表,并将所述同步列表下发至对应的同步节点。
5.根据权利要求4所述的服务器数据同步方法,其特征在于,在将所述同步列表下发至对应的同步节点之后,还包括:
所述主节点在检测到扩容事件发生时,为新增的同步节点创建所述同步列表,并利用所述集合数量及更新后的节点数量对所述集合监听量进行更新;
所述主节点根据所述更新后的集合监听量对对应的同步列表进行更新,以使更新后的同步列表包含的集合数量小于等于所述更新后的集合监听量,并将所述更新后的同步列表下发至对应的同步节点。
6.根据权利要求4所述的服务器数据同步方法,其特征在于,在将所述同步列表下发至对应的同步节点之后,还包括:
所述主节点在检测到缩容事件发生时,将待移除的同步节点对应的同步列表设置为待移除列表,并将所述待移除列表中的集合更新至其他所述同步列表;
所述主节点将所述待移除的同步节点及所述待移除列表移除,并将更新后的同步列表下发至对应的同步节点。
7.根据权利要求4所述的服务器数据同步方法,其特征在于,在主节点获取所述MongoDB数据库中所有集合的集合数量及所述同步节点的节点数量之前,还包括:
所述同步节点在启动后,向Zookeeper集群中间件发送启动时间,并判断所述Zookeeper集群中间件中是否记录有所述主节点;
若是,则所述同步节点通过所述Zookeeper集群中间件对所述主节点进行监听,以接收所述主节点下发的所述同步列表;
若否,所述同步节点则向所述Zookeeper集群中间件发送所述同步节点的设备信息,以使所述Zookeeper集群中间件利用所述设备信息将所述同步节点设置为所述主节点;
当所述同步节点完成主节点设置后,执行所述获取所述MongoDB数据库中所有集合的集合数量及所述同步节点的节点数量的步骤。
8.根据权利要求7所述的服务器数据同步方法,其特征在于,在将所述同步列表下发至对应的同步节点之后,还包括:
所述Zookeeper集群中间件向所述主节点发送心跳数据,以使所述主节点向所述Zookeeper集群中间件返回回执数据;
若所述Zookeeper集群中间件未接收到所述回执数据,则向所有所述同步节点发送主节点离线通知;
第一同步节点在接收到所述主节点离线通知后,向所述Zookeeper集群中间件获取所述第一同步节点的第一启动时间及其他所述同步节点的第二启动时间,并判断是否存在晚于所述第一启动时间的第二启动时间;
若是,则所述第一同步节点在等待预设时间段后,判断所述Zookeeper集群中间件中是否记录有所述主节点;
若记录有所述主节点,则所述第一同步节点通过所述Zookeeper集群中间件对所述主节点进行监听;
若未记录有所述主节点,则所述第一同步节点向所述Zookeeper集群中间件发送所述第一同步节点的设备信息,以使所述Zookeeper集群中间件利用所述第一同步节点的设备信息将所述第一同步节点设置为所述主节点;
若否,则所述第一同步节点向所述Zookeeper集群中间件发送所述第一同步节点的设备信息,以使所述Zookeeper集群中间件利用所述设备信息将所述第一同步节点设置为所述主节点。
9.一种服务器数据同步***,其特征在于,包括:同步节点、MongoDB数据库及Elasticsearch服务器,其中,
所述MongoDB数据库,用于保存所述Elasticsearch服务器所需的数据;
所述同步节点,用于获取预设的同步列表,并确定所述同步列表中包含的MongoDB数据库中的集合;其中,多个所述同步节点与MongoDB数据库和Elasticsearch服务器建立数据连接,每一所述同步节点对应不同的同步列表;所述同步节点对所述集合中发生的数据变更操作进行监听,并在检测到所述数据变更操作发生后,将变更的数据更新至所述Elasticsearch服务器;
所述Elasticsearch服务器,用于接收所述同步节点发送的数据。
10.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的服务器数据同步方法的步骤。
CN202110620386.6A 2021-06-03 2021-06-03 一种服务器数据同步方法、***及存储介质 Active CN113364864B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110620386.6A CN113364864B (zh) 2021-06-03 2021-06-03 一种服务器数据同步方法、***及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110620386.6A CN113364864B (zh) 2021-06-03 2021-06-03 一种服务器数据同步方法、***及存储介质

Publications (2)

Publication Number Publication Date
CN113364864A true CN113364864A (zh) 2021-09-07
CN113364864B CN113364864B (zh) 2022-09-30

Family

ID=77531828

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110620386.6A Active CN113364864B (zh) 2021-06-03 2021-06-03 一种服务器数据同步方法、***及存储介质

Country Status (1)

Country Link
CN (1) CN113364864B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107544999A (zh) * 2016-06-28 2018-01-05 百度在线网络技术(北京)有限公司 用于检索***的同步装置及同步方法、检索***及方法
CN107783975A (zh) * 2016-08-24 2018-03-09 北京京东尚科信息技术有限公司 分布式数据库同步处理的方法和装置
CN109840251A (zh) * 2018-12-29 2019-06-04 北京奥鹏远程教育中心有限公司 一种大数据聚合查询方法
CN109857558A (zh) * 2019-01-18 2019-06-07 苏宁易购集团股份有限公司 一种数据流处理方法及***
CN111767282A (zh) * 2020-06-12 2020-10-13 咪咕文化科技有限公司 基于MongoDB的存储***及数据***方法和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107544999A (zh) * 2016-06-28 2018-01-05 百度在线网络技术(北京)有限公司 用于检索***的同步装置及同步方法、检索***及方法
CN107783975A (zh) * 2016-08-24 2018-03-09 北京京东尚科信息技术有限公司 分布式数据库同步处理的方法和装置
CN109840251A (zh) * 2018-12-29 2019-06-04 北京奥鹏远程教育中心有限公司 一种大数据聚合查询方法
CN109857558A (zh) * 2019-01-18 2019-06-07 苏宁易购集团股份有限公司 一种数据流处理方法及***
CN111767282A (zh) * 2020-06-12 2020-10-13 咪咕文化科技有限公司 基于MongoDB的存储***及数据***方法和存储介质

Also Published As

Publication number Publication date
CN113364864B (zh) 2022-09-30

Similar Documents

Publication Publication Date Title
US11379461B2 (en) Multi-master architectures for distributed databases
US6816860B2 (en) Database load distribution processing method and recording medium storing a database load distribution processing program
CN109643310B (zh) 用于数据库中数据重分布的***和方法
CN107453929B (zh) 集群***自构建方法、装置及集群***
CN109173270B (zh) 一种游戏服务***和实现方法
CN109815248B (zh) 一种基于Zookeeper的分布式架构数据一致性方法
CN103581313B (zh) 一种处理设备与集群服务器建立连接的方法及处理设备
CN114070739B (zh) 一种集群部署方法、装置、设备和计算机可读存储介质
CN109361777B (zh) 分布式集群节点状态的同步方法、同步***及相关装置
CN109144787A (zh) 一种数据恢复方法、装置、设备及可读存储介质
CN111694518A (zh) 一种集群扩容或缩容后数据自动迁移的方法、装置、设备
CN102026228B (zh) 通信网络性能数据的统计方法和设备
CN111552701A (zh) 确定分布式集群中数据一致性的方法及分布式数据***
CN112905339A (zh) 任务调度执行方法、装置及***
CN108875035A (zh) 分布式文件***的数据存储方法及相关设备
CN115617571A (zh) 一种数据备份方法、装置、***、设备及存储介质
CN113364864B (zh) 一种服务器数据同步方法、***及存储介质
CN110851528B (zh) 数据库同步方法、装置、存储介质及计算机设备
CN110764838B (zh) 服务模型的加载方法、***、电子设备及存储介质
CN113765690A (zh) 集群切换方法、***、装置、终端、服务器及存储介质
CN111858656A (zh) 一种基于分布式架构的静态数据的查询方法和设备
CN106850354A (zh) 一种单点故障的处理方法及装置
CN112817687A (zh) 一种数据同步方法和装置
CN111190707A (zh) 一种数据处理方法及装置
CN115017233A (zh) 一种数据同步方法、装置、电子设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant