一种基于图数据库Neo4j的高可用系统及其实现方法技术方案

技术编号:33759067 阅读:42 留言:0更新日期:2022-06-12 14:08
本申请公开一种基于图数据库Neo4j的高可用系统及其实现方法。本申请的高可用系统包括Kafka系统、Neo4j集群、节点管理器,其中Neo4j集群订阅Kafka系统的指定主题;Neo4j集群,通过对所述指定主题的订阅,控制Neo4j集群中各个Neo4j节点之间的数据同步;节点管理器,周期性探测Neo4j集群中各个Neo4j节点的可用性,根据各个Neo4j节点的可用性实现Neo4j集群的主从控制。本申请的技术方案可以利用开源技术实现Neo4j集群的高可用。现Neo4j集群的高可用。现Neo4j集群的高可用。

【技术实现步骤摘要】
一种基于图数据库Neo4j的高可用系统及其实现方法


[0001]本申请涉及计算机
,尤其涉及一种基于图数据库Neo4j的高可用系统及其实现方法。

技术介绍

[0002]Neo4j是一个高性能的图数据库,Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。随着大数据及人工智能及知识图谱领域的发展,图形计算越来越多的受到关注,而Neo4j因其嵌入式、高性能、轻量级等优势,被越来越多的软件开始使用。
[0003]目前,Neo4j的集群及高可用功能仅限于企业版,而企业版目前已经闭源,使用企业版需要交纳不少的费用。更多企业选择使用开源的社区版,但社区版没有很好的高可用方案支持,只是使用磁盘拷贝方式实现Neo4j社区版的高可用,但此方案无法解决缓存在内存中的数据一致性的问题。

技术实现思路

[0004]本申请实施例提供了一种基于图数据库Neo4j的高可用系统及其实现方法,以利用开源技术实现Neo4j集群的高可用。
[0005]本申请实施例采用下述技术方案:
[0006]第一方面,本申请实施例提供一种基于图数据库Neo4j的高可用系统,包括:Kafka系统、Neo4j集群、节点管理器,其中Neo4j集群订阅Kafka系统的指定主题;Neo4j集群,通过对所述指定主题的订阅,控制Neo4j集群中各个Neo4j节点之间的数据同步;节点管理器,周期性探测Neo4j集群中各个Neo4j节点的可用性,根据各个Neo4j节点的可用性实现Neo4j集群的主从控制。
[0007]在一些实施例中,某个Neo4j节点,进行数据更新,该Neo4j节点生成数据更新消息并发给所述Kafka系统;Kafka系统,接收所述数据更新消息并将所述数据更新消息保存到所述指定主题中;Neo4j集群中其他Neo4j节点,从Kafka系统的所述指定主题中获取所述数据更新消息,并基于所述数据更新消息更新本Neo4j节点的数据。
[0008]在一些实施例中,各个Neo4j节点中部署有插件Neo4j

streams,利用所述Neo4j

streams与Kafka系统的所述指定主题进行消息传递。
[0009]在一些实施例中,节点管理器,根据预设策略从各个可用的Neo4j节点中选择一个Neo4j节点作为主节点,并将其余各个Neo4j节点作为从节点,若感知主节点故障,根据预设策略从其余各个Neo4j节点中选择一个Neo4j节点作为新的主节点。
[0010]在一些实施例中,所述节点管理器按照集群进行部署。
[0011]在一些实施例中,高可用系统还包括应用节点,所述应用节点注册到所述节点管理器,从所述节点管理器获取Neo4j集群中主节点地址,基于主节点地址进行数据访问。
[0012]在一些实施例中,节点管理器,在Neo4j集群中主节点变更时,将变更通知发送给
应用节点;应用节点,接收所述变更通知,并根据所述变更通知更新本地缓存的主节点地址。
[0013]第二方面,本申请实施例还提供一种基于图数据库Neo4j的高可用系统实现方法,包括:设置Kafka系统和Neo4j集群,使Neo4j集群通过订阅Kafka系统的指定主题来控制Neo4j集群中各个Neo4j节点之间的数据同步;设置节点管理器,使节点管理器周期性探测Neo4j集群中各个Neo4j节点的可用性,根据各个Neo4j节点的可用性实现Neo4j集群的主从控制。
[0014]在一些实施例中,使Neo4j集群通过订阅Kafka系统的指定主题来控制Neo4j集群中各个Neo4j节点之间的数据同步,包括:使进行数据更新的Neo4j节点生成数据更新消息,并将所述数据更新消息发给所述Kafka系统;使所述Kafka系统接收所述数据更新消息并将所述数据更新消息保存到所述指定主题中;使Neo4j集群中其他Neo4j节点从Kafka系统的所述指定主题中获取所述数据更新消息,并基于所述数据更新消息更新本Neo4j节点的数据。
[0015]在一些实施例中,高可用系统实现方法还包括:设置应用节点,是所述应用节点注册到所述节点管理器,从所述节点管理器获取Neo4j集群中主节点地址,基于主节点地址进行数据访问。
[0016]本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
[0017]本申请实施例构建Kafka系统和节点管理器,使Neo4j集群订阅Kafka系统的指定主题,通过对指定主题的订阅来控制Neo4j集群中各个Neo4j节点之间的数据同步,使用开源技术实现高可用系统的数据一致性;以及利用节点管理器对Neo4j集群中各个Neo4j节点进行主从管理,能够在一个Neo4j节点故障后,自动切换到其他Neo4j节点继续提供服务,从而实现高可用系统的可用性。
附图说明
[0018]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0019]图1为本申请实施例中一种基于Neo4j的高可用系统的功能示意图;
[0020]图2为本申请实施例中一种基于Neo4j的高可用系统的架构示意图;
[0021]图3为本申请实施例中一种基于图数据库Neo4j的高可用系统实现方法流程图。
具体实施方式
[0022]为便于理解本申请实施例的技术方案,对本申请实施例中涉及的相关术语进行说明。
[0023]本申请为实现开源社区版的Neo4j的高可用,在Neo4j集群中一个Neo4j节点有数据更新时,需有机制及时通知集群中其他Neo4j节点,并更新其他Neo4j节点中的数据,以及提供节点检测服务,自动选择可用的Neo4j节点进行数据访问及存储。
[0024]为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做
出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0025]在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本专利技术。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
[0026]在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
[0027]附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于图数据库Neo4j的高可用系统,其特征在于,包括:Kafka系统、Neo4j集群、节点管理器,其中Neo4j集群订阅Kafka系统的指定主题;Neo4j集群,通过对所述指定主题的订阅,控制Neo4j集群中各个Neo4j节点之间的数据同步;节点管理器,周期性探测Neo4j集群中各个Neo4j节点的可用性,根据各个Neo4j节点的可用性实现Neo4j集群的主从控制。2.如权利要求1所述的高可用系统,其特征在于,某个Neo4j节点,进行数据更新,该Neo4j节点生成数据更新消息并发给所述Kafka系统;Kafka系统,接收所述数据更新消息并将所述数据更新消息保存到所述指定主题中;Neo4j集群中其他Neo4j节点,从Kafka系统的所述指定主题中获取所述数据更新消息,并基于所述数据更新消息更新本Neo4j节点的数据。3.如权利要求2所述的高可用系统,其特征在于,各个Neo4j节点中部署有插件Neo4j

streams,利用所述Neo4j

streams与Kafka系统的所述指定主题进行消息传递。4.如权利要求1所述的高可用系统,其特征在于,节点管理器,根据预设策略从各个可用的Neo4j节点中选择一个Neo4j节点作为主节点,并将其余各个Neo4j节点作为从节点,若感知主节点故障,根据预设策略从其余各个Neo4j节点中选择一个Neo4j节点作为新的主节点。5.如权利要求1所述的高可用系统,其特征在于,所述节点管理器按照集群进行部署。6.如权利要求1所述的高可用系统,其特...

【专利技术属性】
技术研发人员:王震新
申请(专利权)人:北京神州泰岳软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1