Neo4j集群学习
文章目录
- 官方指导文档
- Neo4j因果集群
- 核心服务器
- 只读副本
- 因果一致性
- Neo4j集群搭建
- Neo4j企业版下载
- 集群简介
- 虚拟机准备
- jdk安装
- 实施搭建
- 访问neo4j Web服务
- 集群添加Core节点
官方指导文档
- Neo4j 5 Cluster
- Neo4j 5 Basic Cluster
Neo4j因果集群
- 集群是Neo4企业版中所提供的功能,所以要想使用集群那么必须要下载企业版才能使用,企业版有30天的试用期。
- Neo4的因果集群提供三个主要功能:
- 安全性:核心服务器为事务处理提供了一个容错平台,当这些核心服务器中的一大部分节点正常运行时,该平台将保持可用。
- 规模:只读副本为图形数据查询提供了可扩展的平台,该平台使非常大的图形工作负载可以在广泛分布的拓扑中执行。
- 因果一致性:调用时,保证客户端应用程序至少读取其自身的写入。

- 从操作的角度来看,将集群视为由具有两个不同角色的服务器组成:核心和只读副本。
核心服务器
- 核心服务器的主要职责是保护数据。核心服务器通过使用Raft协议复制所有事务来保护数据。在确认向最终用户程序提交事务之前,Raft确保数据安全持久。
- Raft是一个共识算法(多个节点对某个事件达成一致的看法)
- 集群(N/2+1)中的大多数核心服务器都接受了事务,就可以安全地确认对最终用户应用程序的提交。需要注意的
是,安全要求会影响写入延迟。 - 集群的容错可以通过公式计算的,M=2F+1其中M是容错,F是所需的核心服务器数量。例如:
- 为了容忍两个发生故障的核心服务器,需要部署五个核心的集群。
- 最小的容错群集(一个可以容忍一个故障的群集)必须具有三个内核。也可以创建仅包含两个核心的因果群集。但是,该群集将不会容错。如果两台服务器之一发生故障,其余服务器将变为只读。
- 如果集群遭受足够多的Core故障,则它将无法再处理写入操作,井且将变为只读状态以保持安全性。
只读副本
- 只读副本的主要职责是扩展图形工作负载。主要提供查询和过程执行。
- 只读副本是通过事务日志传送从Core Servers异步复制的。他们将定期轮询上游服务器以获取新事务,随着只读副本数晕的增加,就可以支撑更多的查询需求,从而扩大了集群规模。
- 只读副本通常应以相对较大的数量运行,只读副本宕机不会影响群集的可用性,除了会损失一部分图查询吞吐量之外它不会影响群集的容错能力。
因果一致性
- 因果一致性能确保数据写入核心服务器,并且只能从只读副本中读到这些写入的数据。

- 在执行事务时,客户端可以请求书签(Bookmark),然后以该书签作为下一个事务的参数。使用书签功能,集群可以确保其中的服务器只有处理了客户端的书签事务后才能够运行其下一个事务。这提供了一个因果链,从客户的角度确保行为的正确性。
- 除了书签以外,剩余的工作都交由集群来处理。主要是由数据库驱动程序与集群拓扑管理器一起完成,以选择最合适的核心服务器和只读副本,从而提供高质量的服务。
Neo4j集群搭建
Neo4j企业版下载
- neo4j download center
- 选择下载企业版,注册信息,在网页登录填写的邮箱,点击邮件不同类型的安装文件进行下载。

集群简介
- 3个核心服务器+1个只读副本的集群
- 准备5台Ubuntu服务器
| 编号 | IP | 角色 | 机器名 | 部署路径 |
|---|---|---|---|---|
| 1 | 192.168.31.105 | core | node1 | /neo4j |
| 2 | 192.168.31.106 | core | node2 | /neo4j |
| 3 | 192.168.31.107 | core | node3 | /neo4j |
| 4 | 192.168.31.108 | replica | node4 | /neo4j |
| 5 | 192.168.31.109 | core | node5 | /neo4j |
虚拟机准备
- 请自行操作准备需要的虚拟机



jdk安装
- 下载Oracle JDK安装包,解压和创建需要的目录
sudo mkdir /usr/lib/jvm sudo tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/lib/jvm - 打开
/etc/profile文件,配置java环境变量sudo vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk-21.0.6
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH

- 保存并关闭文件,使/etc/profile文件生效
source /etc/profile - 检测jdk环境
java -version
实施搭建
- 安装vim编辑器,修改hosts文件
sudo apt install vim
sudo vim /etc/hosts
- 在所有机器上的hosts文件加入下面的内容
172.16.144.131 node1
172.16.144.132 node2
172.16.144.133 node3
172.16.144.134 node4
172.16.144.135 node5
- 在每台机器上使用ping命令测试与其他机器的网络连通
ping node1
ping node2
ping node3
ping node4
ping node5
- 在所有的机器上创建目录,上传并解压neo4j安装包
mkdir /neo4j
neo4j-enterprise-5.26.2-unix.tar.gz
- 修改
node1,node2,node3配置文件neo4j.con,下面是node1的配置
#所有网络可以连接
server.default_listen_address=0.0.0.0
#对外暴露的机器名称(每个机器名字不相同)根据不同node配置
server.default_advertised_address=node1dbms.cluster.discovery.version=V2_ONLY
#集群模式,这里可设需CORE或READ_REPLICA
initial.server.mode_constraint=PRIMARY
#设置 RAFT 和其他内部通信的地址
server.cluster.raft.listen_address=:7000
server.cluster.raft.advertised_address=:7000
# 集群中核心节点的最小数量(添加)
#causal_clustering.minimum_core_cluster_size_at_formation=3
# 运行中最少存活的核心节点数量(添加)
#causal_clustering.minimum_core_cluster_size_at_runtime=2
#集群中core的发现列表
dbms.cluster.discovery.v2.endpoints=node1:6000,node2:6000,node3:6000
# 接受许可证
dbms.license.accepted=true
# 主模式下的初始数据库托管数
initial.dbms.default_primaries_count=3
- 设置用户和权限
sudo chown -R neo4j:neo4j /neo4j/neo4j-enterprise-5.26.2
sudo chmod -R 755 /neo4j/neo4j-enterprise-5.26.2
- 启动
node1,node2,node3的neo4j服务
cd /neo4j/neo4j-enterprise-5.26.2/bin./neo4j-admin server license --accept-commercial./neo4j startcat /neo4j/neo4j-enterprise-5.26.2/logs/neo4j.log
- 终端输出信息
neo4j@VMware-neo4jNode1:/neo4j/neo4j-enterprise-5.26.2/bin$ ./neo4j start
Directories in use:
home: /neo4j/neo4j-enterprise-5.26.2
config: /neo4j/neo4j-enterprise-5.26.2/conf
logs: /neo4j/neo4j-enterprise-5.26.2/logs
plugins: /neo4j/neo4j-enterprise-5.26.2/plugins
import: /neo4j/neo4j-enterprise-5.26.2/import
data: /neo4j/neo4j-enterprise-5.26.2/data
certificates: /neo4j/neo4j-enterprise-5.26.2/certificates
licenses: /neo4j/neo4j-enterprise-5.26.2/licenses
run: /neo4j/neo4j-enterprise-5.26.2/run
Starting Neo4j.
Started neo4j (pid:11866). It is available at http://0.0.0.0:7474
There may be a short delay until the server is ready.
- 成功日志信息
2025-02-15 09:58:32.913+0000 INFO Starting...
2025-02-15 09:58:36.412+0000 INFO ======== Neo4j 5.26.2 ========
2025-02-15 09:58:36.432+0000 INFO This instance is ServerId{29d57ea3} (29d57ea3-7b15-40e4-8eb3-a4c3d77dbda9)
2025-02-15 09:58:36.807+0000 INFO Resolved endpoints with LIST{endpoints:'[node1:6000, node2:6000, node3:6000]'} to '[node1:6000, node2:6000, node3:6000]'
2025-02-15 09:58:36.920+0000 INFO Resolved endpoints with LIST{endpoints:'[node1:6000, node2:6000, node3:6000]'} to '[node1:6000, node2:6000, node3:6000]'
2025-02-15 09:59:08.532+0000 INFO Default database 'neo4j' is created
2025-02-15 09:59:09.684+0000 INFO Sending metrics to CSV file at /neo4j/neo4j-enterprise-5.26.2/metrics
2025-02-15 09:59:09.730+0000 INFO Anonymous Usage Data is being sent to Neo4j, see https://neo4j.com/docs/usage-data/
2025-02-15 09:59:09.735+0000 INFO Bolt enabled on 0.0.0.0:7687.
2025-02-15 09:59:09.738+0000 INFO Bolt (Routing) enabled on 0.0.0.0:7688.
2025-02-15 09:59:10.380+0000 INFO Connected to node3/172.16.144.133:7000 [Category[name=RAFT] version:3.0]
2025-02-15 09:59:10.382+0000 INFO Connected to node2/172.16.144.132:7000 [Category[name=RAFT] version:3.0]
2025-02-15 09:59:10.610+0000 INFO Connected to node3/172.16.144.133:7000 [Category[name=RAFT] version:3.0]
2025-02-15 09:59:10.639+0000 INFO Connected to node2/172.16.144.132:7000 [Category[name=RAFT] version:3.0]
2025-02-15 09:59:12.784+0000 INFO HTTP enabled on 0.0.0.0:7474.
2025-02-15 09:59:12.785+0000 INFO Remote interface available at http://node1:7474/
2025-02-15 09:59:12.794+0000 INFO id: 8DD72F08684DDB2495F846C930EB8383E01C9F19187118F1F4F8D31CCF4FE01A
2025-02-15 09:59:12.794+0000 INFO name: system
2025-02-15 09:59:12.795+0000 INFO creationDate: 2025-02-15T09:59:07.141Z
2025-02-15 09:59:12.797+0000 INFO Started.
访问neo4j Web服务
- 建议修改本地host文件添加以下内容:
172.16.144.131 node1
172.16.144.132 node2
172.16.144.133 node3
172.16.144.134 node4
172.16.144.135 node5

show servers
╒══════════════════════════════════════╤════════════╤═════════╤═══════════╤═══════════════════╕
│name │address │state │health │hosting │
╞══════════════════════════════════════╪════════════╪═════════╪═══════════╪═══════════════════╡
│"29d57ea3-7b15-40e4-8eb3-a4c3d77dbda9"│"node1:7687"│"Enabled"│"Available"│["system"] │
├──────────────────────────────────────┼────────────┼─────────┼───────────┼───────────────────┤
│"49c6640d-9ab8-4add-9605-b9f8517a77d2"│"node3:7687"│"Enabled"│"Available"│["system"] │
├──────────────────────────────────────┼────────────┼─────────┼───────────┼───────────────────┤
│"803700f5-367e-46a7-8ea8-ec42bed5b7cd"│"node2:7687"│"Enabled"│"Available"│["neo4j", "system"]│
└──────────────────────────────────────┴────────────┴─────────┴───────────┴───────────────────┘
:sysinfo

集群添加Core节点
- 同样配置好java环境和neo4j,neo4j的配置文件,设置权限,启动应用
#所有网络可以连接
server.default_listen_address=0.0.0.0
#对外暴露的机器名称(每个机器名字不相同)根据不同node配置
server.default_advertised_address=node4dbms.cluster.discovery.version=V2_ONLY
#集群模式,这里可设需CORE或READ_REPLICA
initial.server.mode_constraint=PRIMARY
#设置 RAFT 和其他内部通信的地址
server.cluster.raft.listen_address=:7000
server.cluster.raft.advertised_address=:7000#集群中core的发现列表
dbms.cluster.discovery.v2.endpoints=node1:6000,node2:6000,node3:6000
# 接受许可证
dbms.license.accepted=true
# 主模式下的初始数据库托管数
initial.dbms.default_primaries_count=3
- 登录node4的neo4j的web网页,查看结果
show servers╒══════════════════════════════════════╤════════════╤═════════╤═══════════╤═══════════════════╕ │name │address │state │health │hosting │ ╞══════════════════════════════════════╪════════════╪═════════╪═══════════╪═══════════════════╡ │"29d57ea3-7b15-40e4-8eb3-a4c3d77dbda9"│"node1:7687"│"Enabled"│"Available"│["system"] │ ├──────────────────────────────────────┼────────────┼─────────┼───────────┼───────────────────┤ │"49c6640d-9ab8-4add-9605-b9f8517a77d2"│"node3:7687"│"Enabled"│"Available"│["system"] │ ├──────────────────────────────────────┼────────────┼─────────┼───────────┼───────────────────┤ │"803700f5-367e-46a7-8ea8-ec42bed5b7cd"│"node2:7687"│"Enabled"│"Available"│["neo4j", "system"]│ ├──────────────────────────────────────┼────────────┼─────────┼───────────┼───────────────────┤ │"d9d9bf08-af09-46fc-a640-a51973effb2c"│"node4:7687"│"Free" │"Available"│["system"] │ └──────────────────────────────────────┴────────────┴─────────┴───────────┴───────────────────┘
相关文章:
Neo4j集群学习
文章目录 官方指导文档Neo4j因果集群核心服务器只读副本因果一致性 Neo4j集群搭建Neo4j企业版下载集群简介虚拟机准备jdk安装实施搭建访问neo4j Web服务 集群添加Core节点 官方指导文档 Neo4j 5 ClusterNeo4j 5 Basic Cluster Neo4j因果集群 集群是Neo4企业版中所提供的功能…...
【人工智能】深度学习中的梯度检查:原理详解与Python实现
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 梯度检查是深度学习模型开发中至关重要的一步,它能够验证反向传播的梯度计算是否正确,从而确保模型训练的稳定性和准确性。在本文中,我们…...
Kotlin 2.1.0 入门教程(十七)接口
接口 接口可以包含抽象方法的声明,也可以包含方法的实现。 接口与抽象类的不同之处在于,接口无法存储状态。接口可以拥有属性,但这些属性要么必须是抽象的,要么就得提供访问器的实现。 接口使用 interface 关键字来定义&#x…...
了解i2c_check_functionality()
i2c_check_functionality()用来检查设备适配器支持的标志是否要求。 打开“include/linux/i2c.h” /* Return the functionality mask */ static inline u32 i2c_get_functionality(struct i2c_adapter *adap) { return adap->algo->functionality(adap); //返回该…...
Retrieval-Augmented Generation for LargeLanguage Models: A Survey
标题:Retrieval-Augmented Generation for Large Language Models: A Survey 作者:Yunfan Gaoa , Yun Xiongb , Xinyu Gaob , Kangxiang Jiab , Jinliu Panb , Yuxi Bic , Yi Daia , Jiawei Suna , Meng Wangc , and Haofen Wang 1. By referencing ext…...
C#多线程异步连接MySQL与SQLserver数据库
C#多线程异步连接MySQL与SQLserver数据库 一、前言二、多线程异步连接数据库代码2.1代码块2.2代码说明 参考文档 一、前言 当编写代码连接多台设备上的数据库时,如果采用同步逐个连接的方式,在网络畅通的情况下连接速度尚可,但当其中一台设备…...
try learning-git-branching
文章目录 mergerebase分离 HEAD相对引用利用父节点branch -f 撤销变更cherry-pick交互式 rebase只取一个提交记录提交的技巧rebase 在上一次提交上amendcherry-pick 在上一次提交上 amend tag多分支 rebase两个parent节点纠缠不清的分支偏离的提交历史锁定的Main learning git …...
代码随想录算法【Day46】
Day46 647. 回文子串 class Solution { public:int countSubstrings(string s) {vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));int result 0;for (int i s.size() - 1; i > 0; i--) { // 注意遍历顺序for (int j i; j < s…...
flutter本地推送 flutter_local_notifications的使用记录
flutter_local_notifications 效果 安卓配置(AndroidManifest.xml) <uses-permission android:name"com.android.alarm.permission.SET_ALARM"/> <uses-permission android:name"android.permission.SCHEDULE_EXACT_ALARM" /> <us…...
Springboot 中如何使用Sentinel
在 Spring Boot 中使用 Sentinel 非常方便,Spring Cloud Alibaba 提供了 spring-cloud-starter-alibaba-sentinel 组件,可以快速将 Sentinel 集成到你的 Spring Boot 应用中,并利用其强大的流量控制和容错能力。 下面是一个详细的步骤指南 …...
AI Agent 有哪些痛点问题
AI Agent 有哪些痛点问题 目录 AI Agent 有哪些痛点问题身份安全问题数据安全问题模型安全问题可靠性问题伦理和合规问题身份安全问题 身份界定模糊:AI代理既非完全意义上的人类,也不同于传统的机器,现有的身份管理工具难以准确对其进行定位和管理,导致在权限分配、责任追溯…...
一个让Stable Diffusion更稳定、更易用的Github开源项目
2023除了ChatGPT大火,Stable Diffusion同样也是非常火热,Stable Diffusion是一个Github开源项目,很多爱好者都会本地安装,但面对一些初学者来说,在安装、配置和使用过程中还是会经常出现很多问题,特别不了解…...
Docker+Jenkins自动化部署SpringBoot项目【详解git,jdk,maven,ssh配置等各种配置,附有示例+代码】
文章目录 DockerJenkins部署SpringBoot项目一.准备工作1.1安装jdk111.2安装Maven 二.Docker安装Jenkins2.1安装Docker2.2 安装Jenkins2.3进入jenkins 三.Jenkins设置3.1安装jenkins插件3.2全局工具配置全局配置jdk全局配置maven全局配置git 3.3 系统配置安装 Publish Over SSH …...
.NET SixLabors.ImageSharp v1.0 图像实用程序控制台示例
使用 C# 控制台应用程序示例在 Windows、Linux 和 MacOS 机器上处理图像,包括创建散点图和直方图,以及根据需要旋转图像以便正确显示。 这个小型实用程序库需要将 NuGet SixLabors.ImageSharp包(版本 1.0.4)添加到.NET Core 3.1/ …...
【机器学习】线性回归与一元线性回归
线性回归与一元线性回归 V1.1线性回归问题线性方程的最优解一元线性回归一元线性回归的方程一元线性回归距离衡量方法一元线性回归的最优化求解一元线性回归的最小二乘法解法 V1.1 线性回归问题 线性回归问题就是找一条线或超平面,并使用线或超平面来描述数据分布…...
soular基础教程-使用指南
soular是TikLab DevOps工具链的统一帐号中心,今天来介绍如何使用 soular 配置你的组织、工作台,快速入门上手。  1. 账号管理 可以对账号信息进行多方面管理,包括分配不同的部门、用户组等,从而确保账号权限和职责…...
《Spring实战》(第6版)第1章 Spring起步
第1部分 Spring基础 第1章 Spring起步 1.1 什么是Spring Spring的核心是提供一个容器(container)。 称为Spring应用上下文(Spring application context)。 创建和管理应用的组件(bean),与上下文装配在一起。 Bean装配通过依赖注入(Dependency Injection,DI)。…...
PAT乙级真题 — 1084 外观数列(java)
外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, ...它从不等于 1 的数字 d 开始,序列的第 n1 项是对第 n 项的描述。比如第 2 项表示第 1 项有 1 个 d,所以就是 d1;第 2 项是 1 个 d(对…...
I.MX6ull 看门狗
一、看门狗介绍 WatchDog是为了能够防止程序跑飞而使用的一种硬件模块。如果你的程序没有跑飞,那么你的程序会 定时的去喂看门狗;如果你的程序跑飞了,那么就不会再去喂狗了,如果超过了喂狗的时间,那么狗就会 自己生成一个信号来重…...
鲸鱼算法优化Transformer+KAN网络并应用于时序预测任务
😊😊😊欢迎来到本博客😊😊😊 本次博客内容将聚焦于深度学习的相关知识与实践 🎉作者简介:⭐️⭐️⭐️主要研究方向涵盖深度学习、计算机视觉等方向。 📝目前更新&#x…...
一维差分算法篇:高效处理区间加减
那么在正式介绍我们的一维差分的原理前,我们先来看一下一维差分所应用的一个场景,那么假设我们现在有一个区间为[L,R]的一个数组,那么我要在这个数组中的某个子区间比如[i,m] (L<i<m<R)进行一个加k值或者减去k值的一个操作ÿ…...
export关键字
注意点: 使用 export 和 import 时,确保你的JavaScript环境支持ES6模块 在JavaScript中,export 关键字主要用于模块化编程,允许你将代码的不同部分导出,使得其他模块可以通过 import 关键字来引入这些部分。这是ES6&a…...
【C++】基础入门(详解)
🌟 Hello,我是egoist2023! 🌍 种一棵树最好是十年前,其次是现在! 目录 输入&输出 缺省参数(默认参数) 函数重载 引用 概念及定义 特性及使用 const引用 与指针的关系 内联inline和nullptr in…...
【快速入门】Unity 常用组件(功能块)
欢迎关注 、订阅专栏 【unity 新手教程】谢谢你的支持!💜💜 文章目录 Unity 常用组件(功能块):Transform - 变换:坐标、朝向、大小Mesh Filter - 加载网格数据Mesh Renderer- 渲染网格Camera - …...
Nessus 工具使用全攻略
目录 一、Nessus:网络安全的坚固防线 二、Nessus 安装指南 (一)获取安装包 (二)安装流程 三、初次配置:开启 Nessus 的第一步 (一)账号注册 (二)激活 …...
1441. 用栈操作构建数组 中等
1441. 用栈操作构建数组 给你一个数组 target 和一个整数 n。每次迭代,需要从 list { 1 , 2 , 3 ..., n } 中依次读取一个数字。 请使用下述操作来构建目标数组 target : "Push":从 list 中读取一个新元素, 并将其推入…...
【Springboot知识】从零开始配置springfox
文章目录 配置过程1. 添加依赖2. 创建Swagger配置类3. 配置Swagger UI4. 自定义Swagger配置(可选)4.1 添加全局请求参数4.2 配置响应消息 5. 运行项目并访问Swagger UI6. 其他注意事项7. 使用Springfox 3.x(可选)总结 忽略登录验证…...
PHP代驾系统小程序
🚗 代驾系统 —— 安全、便捷、智能的出行新选择 🔧 一款基于先进ThinkPHPUniapp技术架构,匠心独运的代驾软件横空出世,微信小程序端率先登场,为您的出行之旅增添前所未有的便捷与安全。它不仅是您贴心的出行助手&…...
pg认证需要培训机构吗
认证类型决定是否需要培训机构 官方认证 PostgreSQL社区认证:PostgreSQL社区并未强制要求通过培训机构才能参加认证考试。例如,PostgreSQL Professional Certification(由社区认可的机构提供)通常允许考生自学后直接报名考试。 Po…...
网络安全扫描--基础篇
前言 1、了解互联网安全领域中日趋重要的扫描技术 2、了解在不同网络场景下扫描技术手段 3、熟悉linux下系统内核防护策略并能大件一个有效的系统防护体系 4、增强工作安全意识,并能有效的实践于工作场景中 目录 1、熟悉主机扫描工具(fping,…...
