一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种一主多从的集群间数据实时同步的方法和系统与流程

2023-01-06 02:40:07 来源:中国专利 TAG:


1.本技术涉及图数据库领域,特别是涉及一种一主多从的集群间数据实时同步的方法和系统。


背景技术:

2.随着大数据和人工智能的迅猛发展,超大规模关系网络逐步在社交推荐、风控、物联网、区块链和安防等领域被广泛使用,分布式图数据库作为所有这些应用的技术基石之一,其需要处理的数据量成几何状增长。对于容纳千亿个顶点和万亿条边的图数据库集群而言,要实时确保数据的高可用就必须构建备用集群,并且保证主备集群间数据的实时同步。
3.因为关系网络的数据是实时变化的,如何在拥有庞大数据量的集群间进行一主多从(一个主集群和多个从集群)的实时数据同步,既要全量数据的同步,也要增量数据的实时同步,是每个图数据库必须要面对的问题。
4.目前针对相关技术中如何在图数据库中进行一主多从的实时数据同步的问题,尚未提出有效的解决方案。


技术实现要素:

5.本技术实施例提供了一种一主多从的集群间数据实时同步的方法和系统,以至少解决相关技术中如何在图数据库中进行一主多从的实时数据同步的问题。
6.第一方面,本技术实施例提供了一种一主多从的集群间数据实时同步的方法,所述方法包括一主多从的集群间元数据同步和一主多从的集群间属性数据同步;所述一主多从的集群间元数据同步包括:主集群节点为元数据管理节点,在主集群上启动元监听器节点,以接收所述元数据管理节点对应数据分片中的领导者副本所发送的同步信息;若所述同步信息为预写式日志,则执行第一同步预处理,若所述同步信息为快照数据,则执行第二同步预处理;定期遍历图空间目录下的元监听器节点信息,通过所述元监听器节点将所述同步预处理后的数据发送到各个从集群的管道节点上;通过所述管道节点将所述数据处理后发送到对应从集群的元数据管理节点。
7.在其中一些实施例中,所述一主多从的集群间属性数据同步包括:主集群节点为存储节点,在主集群上启动存储监听器节点,创建学习者副本并加入所述存储节点的数据分片所在的raft组中;基于raft的一致性原理,将所述数据分片的领导者副本中存储的预写式日志,传输到所述学习者副本;定期遍历所述学习者副本下的存储监听器节点信息,通过所述存储监听器节点将日志发送到各个从集群的管道节点上;
通过所述管道节点将所述数据处理后发送到对应从集群的存储节点。
8.在其中一些实施例中,若所述同步信息为预写式日志,则执行第一同步预处理包括:若所述同步信息为预写式日志,则先分析得到所述预写式日志对应的图空间id,再根据所述图空间id将所述预写式日志写入对应图空间的预写式日志文件中。
9.在其中一些实施例中,若所述同步信息为快照数据,则执行第二同步预处理包括:若所述同步信息为快照数据,则先清空各个图空间的预写式日志文件,分析所述快照数据得到对应的图空间id,再根据所述图空间id将所述快照数据写入对应图空间的预写式日志文件中。
10.在其中一些实施例中,通过所述存储监听器节点将所述日志发送到各个从集群的管道节点上包括:判断当前同步的日志是否在所述学习者副本的预写式日志文件中;若是,则通过所述存储监听器节点直接读取所述预写式日志,并发送到从集群的管道节点上;若否,则通过所述存储监听器节点拉取所述领导者副本的快照数据,并发送到从集群的管道节点上。
11.在其中一些实施例中,在通过所述管道节点将所述数据处理后发送到对应从集群节点之前,所述方法还包括:通过所述管道节点接收所述数据,根据所述从集群上要同步的图空间id和日志id,判断所述数据的接收是否合法。
12.在其中一些实施例中,通过所述管道节点将所述数据处理后发送到对应从集群节点包括:通过所述管道节点遍历得到所述从集群上要同步的图空间目录,所述图空间目录中每个图空间生成一个任务放到任务管理队列中;在任务的执行中,根据所述任务对应的数据分片的信息,生成多个子任务,其中,一个数据分片对应一个子任务;根据并行度,并行执行所述子任务,直到所述任务管理队列中的任务全部执行完成,即将所述数据发送到从集群对应节点。
13.在其中一些实施例中,图空间为主集群与从集群间数据同步的基本单位,需要进行数据同步的图空间在所述主集群中可读可写,在所述从集群中只读。
14.在其中一些实施例中,元数据管理节点的数据分片中存储着图空间的元数据;存储节点的数据分片中存储着图空间的属性数据。
15.第二方面,本技术实施例提供了一种一主多从的集群间数据实时同步的系统,所述系统包括主集群模块和从集群模块;所述主集群模块,用于当主集群节点为元数据管理节点时,在主集群上启动元监听器节点,以接收所述元数据管理节点对应数据分片中的领导者副本所发送的同步信息;若所述同步信息为预写式日志,则执行第一同步预处理,若所述同步信息为快照数据,则执行第二同步预处理;所述主集群模块,用于定期遍历图空间目录下的元监听器节点信息,通过所述元
监听器节点将所述同步预处理后的数据发送到各个从集群的管道节点上;所述从集群模块,用于通过所述管道节点将所述数据处理后发送到对应从集群节点。
16.相比于相关技术,本技术实施例提供的一种一主多从的集群间数据实时同步的方法和系统,其中,该方法包括一主多从的集群间元数据同步和一主多从的集群间属性数据同步;通过元监听器节点和/或存储监听器节点,将主集群上要同步的数据发送到各个从集群的管道节点上;再通过管道节点将数据处理后发送到对应从集群节点,完成一主多从的集群间数据同步,解决了如何在图数据库中进行一主多从的实时数据同步的问题,实现了图数据库中实时变化的关系网络数据在一主多从的集群间实时同步,有效地保证了数据的一致性。
附图说明
17.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:图1 是根据本技术实施例的nebula graph集群的架构示意图;图2是基于本技术实施例的一主多从的集群间数据同步方法的流程示意图;图3是根据本技术实施例的一主多从的集群间元数据同步的流程示意图;图4是根据本技术实施例的一主多从的集群间属性数据同步的流程示意图;图5是根据本技术实施例的一主多从的集群间数据同步系统的结构框图;图6是根据本技术实施例的电子设备的内部结构示意图。
18.附图说明:51、主集群模块;52、从集群模块。
具体实施方式
19.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。基于本技术提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
20.显而易见地,下面描述中的附图仅仅是本技术的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本技术应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本技术公开的内容相关的本领域的普通技术人员而言,在本技术揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本技术公开的内容不充分。
21.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本技术所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
22.除非另作定义,本技术所涉及的技术术语或者科学术语应当为本技术所属技术领
域内具有一般技能的人士所理解的通常意义。本技术所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本技术所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本技术所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本技术所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
23.本发明实施例所涉及的专业术语如下:在nebula graph分布式图数据库中,构成属性图的核心要素有两个:点(vertex)和边(edge)。
24.点(vertex):点由标签(tag)和对应tag的属性组成,tag代表点的类型,属性代表tag拥有的一种或多种属性。一个点至少有一种类型,即标签,也可以有多种类型。tag有一组对应的属性,称为schema。
25.边(edge):两个点的标签的关系。此处的边指有向边。边由类型和属性组成。类型来标识具体的边,正数表示出边,负数表示入边。edge的一组属性称为schema。
26.索引(index):是依据tag或edge一列或多列的属性值进行排序的一种结构,使用索引可快速访问对应tag或edge中的特定数据。
27.图空间(space):图空间是相互独立的实体,tag、edge、tag index、edge index必须依存于某个空间才能存在。一个图空间下可以有任意多个tag、edge,以及它们的index。
28.数据分片(partition):nebula graph的物理存储分区,一个space可以有多个数据分片,每个数据分片拥有多个副本,如领导者(leader)、跟随者(follower)和学习者(learner),并分布在不同节点上,通过raft分布式协议保证数据分片各个副本的一致性。
29.raft:是一种去中心化的、高可用的共识算法,在工程上使用比较广泛。raft中的leader可读可写;follower当前只读;learner与follower一样,但不能参与leader的投票选举。
30.元数据管理节点(meta):管理元数据的节点。
31.存储节点(storage):存储数据的节点。
32.计算节点(graph):一种无状态的,用于计算的节点。
33.监听器节点(listener):各个partition的raft group中的learner存在的节点。meta元数据的listener节点称为meta listener(元监听器节点),storage属性数据的listener节点称为storage listener(存储监听器节点)。
34.管道节点(drainer):在从集群上,用于集群间数据同步的节点。
35.nebula graph集群:由计算节点、元数据管理节点和存储节点组成的统一对外提供服务的单元。
36.本技术实施例提供了一种一主多从的集群间数据实时同步的方法,图1 是根据本
申请实施例的nebula graph集群的架构示意图,如图1所示,由1个计算节点(graph),3个元数据管理节点(meta),3个存储节点(storage)组成的一个比较简单的nebula graph 集群。
37.其中,元数据存储在meta节点的数据分片0(partition 0)上,并且raft group里面由3个副本来保证元数据数据的高可用,因此有3个meta节点。
38.属性数据存储在storage节点上,且有3个数据分片(partition),每个partition有3副本,每个storage节点有一个partition的leader(partition 1的leader在storage 1上、partition 2的leader在storage 2上、partition 3的leader在storage 3上)。不同机器上的同一个partition的副本构成了一个raft group。
39.需要说明的是,主集群与各个从集群间数据同步的基本单位是图空间(space)。如主集群含有spacea和spaceb,可以将spacea的数据同步到从集群,且以space为单位时,主集群不需要知道从集群中这个space的各个partition的分布情况。对于要同步的某个space,两个集群中partition数目,机器数和副本数都可以不同。
40.通过设置space级别的变量,来控制主从集群中要同步的space的读写模式。主集群中要同步的space在console端可读可写,从集群中该space 在console端只读。此时从集群中该space只能通过数据同步的方式写入数据。
41.由此可见,若建立了主集群到各个从集群的某个space的同步关系,则主集群中该space的任何写入,包括元数据和数据的写入,都会实时的同步到各个从集群。因此集群间数据的实时同步是一个实时动态的捕获变更数据的过程。
42.此外,专利申请号202210267788.7的专利公开了在同一个space内支持一主一从的集群间数据实时同步的方法,主集群不同的space可以同步到不同的单一从集群。本发明在该专利的基础上,进一步实现了在同一个space内支持一主多从的集群间数据实时同步的技术方案。图2是基于本技术实施例的一主多从的集群间数据同步方法的流程示意图。
43.本技术实施例中的方法包括一主多从的集群间元数据同步和一主多从的集群间属性数据同步;其中,图3是根据本技术实施例的一主多从的集群间元数据同步的流程示意图,如图3所示,一主多从的集群间元数据同步包括以下步骤:步骤s302,主集群节点为元数据管理节点(meta),在主集群上启动元监听器节点(meta listener),以接收元数据管理节点对应数据分片中的领导者副本(meta leader)所发送的同步信息;需要说明的是,meta listener启动后,meta leader会根据自己的预写式日志(wal log)和meta listener最后接收到的wal log来决定是发送wal log还是发送快照数据(snapshot数据)。
44.步骤s304,若同步信息为预写式日志,则执行第一同步预处理,若同步信息为快照数据,则执行第二同步预处理;具体地,若同步信息为预写式日志,则先分析得到预写式日志对应的图空间id,再根据图空间id将预写式日志写入对应图空间的预写式日志文件中。
45.优选地,对meta listener来说,如果接收到的是meta leader的wal log,先将wal log写入wal文件(预写式日志文件)。然后读取wal文件,从上次应用到的wal log(记为last apply log id)的下一条开始,分析每条wal log的spaceid,然后将wal log写入对应space的wal文件中,然后更新last apply log id。直至读取并处理完所有的wal log为止。
46.具体地,若同步信息为快照数据,则先清空各个图空间的预写式日志文件,分析快照数据得到对应的图空间id,再根据图空间id将快照数据写入对应图空间的预写式日志文件中。
47.优选地,对meta listener来说,如果接收到的是meta leader的snapshot数据,meta listener首先清空所有的wal文件包括各个space的wal文件。然后分析每条snapshot数据,解析出spaceid,根据spaceid将数据以wal log的方式写入对应space的wal文件中。
48.步骤s306,定期遍历图空间目录下的元监听器节点信息,通过元监听器节点将同步预处理后的数据发送到各个从集群的管道节点上;优选地,meta listener的后台线程,会定时遍历每个space目录。
49.一个space目录包含该space的wal文件和多个listener信息。每个listener信息包含listenerid、以及该listener成功发送给从集群drainer(管道节点)的last wal log id。
50.对每个space,遍历该space目录下的所有listener。对每个listener,读取该listener所在的space的wal文件,从last wal log id的下一条的wallog开始,发送wal log给对应从集群的drainer。直至该space的wal文件的log都发送完,更新last wal log id。然后开始处理下一个listener。
51.以图3中meta listener的space1为例,space1含有listener1,listener2等多个listener信息(元监听器节点信息)。后台线程先处理listener1。读取listener1的last wal log id,然后从last wal log id的下一条wal log开始读取space1的wal文件。直到space1的wal文件都读取完。更新下last wal log id。然后处理listenr2,后面依次处理所有的listener和space。
52.步骤s308,通过管道节点将数据处理后发送到对应从集群的元数据管理节点。
53.本技术实施例中的方法包括一主多从的集群间元数据同步和一主多从的集群间属性数据同步;其中,图4是根据本技术实施例的一主多从的集群间属性数据同步的流程示意图,如图4所示,一一主多从的集群间属性数据同步包括以下步骤:步骤s402,主集群节点为存储节点,在主集群上启动存储监听器节点,创建学习者副本并加入存储节点的数据分片所在的raft组中;需要说明的是, storage listener启动后,storage节点的part leader(part为partition的简称,即数据分片的简称)会根据自己的wal log信息和storage listener上该part的learner副本的wal log信息,来发送wal log。
54.步骤s404,基于raft的一致性原理,将数据分片的领导者副本中存储的预写式日志,传输到学习者副本;具体地,part leader(数据分片的领导者副本)不会给part leaner(该数据分片的领导者副本)发送snapshot数据,基于raft的一致性原理,part leaner仅仅同part leader副本的wal文件保持一致。例如,storage listener启动时,part leader的wal log id是从100-1000。那么该part的learner的wal log也是从100-1000。
55.步骤s406,定期遍历学习者副本下的存储监听器节点信息,通过存储监听器节点将日志发送到各个从集群的管道节点上;具体地,定期遍历学习者副本下的存储监听器节点信息,判断当前同步的日志是
否在学习者副本的预写式日志文件中;若是,则通过存储监听器节点直接读取预写式日志,并发送到从集群的管道节点上;若否,则通过存储监听器节点拉取领导者副本的快照数据,并发送到从集群的管道节点上。
56.优选地,storage listener上part的learner副本都有一个后台线程。
57.后台线程会定时的去遍历该part leaner下面的listener信息(存储监听器节点信息),处理每个listener信息的同步数据的任务,每个listener信息包含listenerid和最后成功应用的logid(last wal log id)。
58.对于每个listener信息来说,根据最后成功应用的logid的下一条wal log在不在该part leaner的wal文件中,来分别执行不同的操作:若该listener信息最后成功应用的logid的下一条wal log在wal文件中,读取该wal log,发送给对应从集群drainer节点,更新last wal log id。然后继续读取下一条wal log,直至读取完wal文件中的所有wal log为止。
59.若listener信息最后成功应用的logid的下一条wal log不在wal文件中,并且也没有到达wal文件的最后一条wal log,则该listener去part leader拉取snapshot数据,发送给对应的从集群drainer节点。根据拉取snapshot时part leader的commit log id(事务状态记录)来更新自己的last wal log id。然后继续从wal文件中读取last wal log id的下一条数据,直至读取完wal文件中的所有wal log为止。
60.步骤s408,通过管道节点将数据处理后发送到对应从集群的存储节点。
61.通过本技术实施例中的步骤s302至步骤s306,以及步骤s402至步骤s408,解决了如何在图数据库中进行一主多从的实时数据同步的问题,实现了图数据库中实时变化的关系网络数据在一主多从的集群间实时同步,有效地保证了数据的一致性。
62.需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
63.本技术实施例提供了一种一主多从的集群间数据实时同步的系统,图5是根据本技术实施例的一主多从的集群间数据同步系统的结构框图,如图5所示,该系统包括主集群模块51和从集群模块52;主集群模块51,用于当主集群节点为元数据管理节点时,在主集群上启动元监听器节点,以接收元数据管理节点对应数据分片中的领导者副本所发送的同步信息;若同步信息为预写式日志,则执行第一同步预处理,若同步信息为快照数据,则执行第二同步预处理;主集群模块51,用于定期遍历图空间目录下的元监听器节点信息,通过元监听器节点将同步预处理后的数据发送到各个从集群的管道节点上;从集群模块52,用于通过管道节点将数据处理后发送到对应从集群节点。
64.通过本技术实施例中的主集群模块51和从集群模块52,解决了如何在图数据库中进行一主多从的实时数据同步的问题,实现了图数据库中实时变化的关系网络数据在一主多从的集群间实时同步,有效地保证了数据的一致性。
65.需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位
于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
66.本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
67.可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
68.需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
69.另外,结合上述实施例中的图数据库中集群间数据实时同步的方法,本技术实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种图数据库中集群间数据实时同步的方法。
70.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种图数据库中集群间数据实时同步的方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
71.在一个实施例中,图6是根据本技术实施例的电子设备的内部结构示意图,如图6所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图6所示。该电子设备包括通过内部总线连接的处理器、网络接口、内存储器和非易失性存储器,其中,该非易失性存储器存储有操作系统、计算机程序和数据库。处理器用于提供计算和控制能力,网络接口用于与外部的终端通过网络连接通信,内存储器用于为操作系统和计算机程序的运行提供环境,计算机程序被处理器执行时以实现一种图数据库中集群间数据实时同步的方法,数据库用于存储数据。
72.本领域技术人员可以理解,图6中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
73.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink) dram(sldram)、存储器总线(rambus)直接ram
(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
74.本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
75.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献