Neo4j集群学习

news2025/2/23 17:23:48

文章目录

  • 官方指导文档
  • 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角色机器名部署路径
1192.168.31.105corenode1/neo4j
2192.168.31.106corenode2/neo4j
3192.168.31.107corenode3/neo4j
4192.168.31.108replicanode4/neo4j
5192.168.31.109corenode5/neo4j

虚拟机准备

  • 请自行操作准备需要的虚拟机
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

jdk安装

  1. 下载Oracle JDK安装包,解压和创建需要的目录
    sudo mkdir /usr/lib/jvm
    sudo tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/lib/jvm
    
  2. 打开/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

在这里插入图片描述

  1. 保存并关闭文件,使/etc/profile文件生效
    source /etc/profile  
    
  2. 检测jdk环境
    java -version
    

实施搭建

  1. 安装vim编辑器,修改hosts文件
sudo apt install vim
sudo vim /etc/hosts
  1. 在所有机器上的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
  1. 在所有的机器上创建目录,上传并解压neo4j安装包
mkdir /neo4j
neo4j-enterprise-5.26.2-unix.tar.gz
  1. 修改node1,node2,node3配置文件neo4j.con,下面是node1的配置
#所有网络可以连接
server.default_listen_address=0.0.0.0
#对外暴露的机器名称(每个机器名字不相同)根据不同node配置
server.default_advertised_address=node1

dbms.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
  1. 设置用户和权限
sudo chown -R neo4j:neo4j /neo4j/neo4j-enterprise-5.26.2
sudo chmod -R 755 /neo4j/neo4j-enterprise-5.26.2
  1. 启动node1,node2,node3的neo4j服务

cd /neo4j/neo4j-enterprise-5.26.2/bin

./neo4j-admin server license --accept-commercial

./neo4j start

cat /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节点

  1. 同样配置好java环境和neo4j,neo4j的配置文件,设置权限,启动应用
#所有网络可以连接
server.default_listen_address=0.0.0.0
#对外暴露的机器名称(每个机器名字不相同)根据不同node配置
server.default_advertised_address=node4

dbms.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
  1. 登录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"]         │
    └──────────────────────────────────────┴────────────┴─────────┴───────────┴───────────────────┘
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2299205.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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 非常方便&#xff0c;Spring Cloud Alibaba 提供了 spring-cloud-starter-alibaba-sentinel 组件&#xff0c;可以快速将 Sentinel 集成到你的 Spring Boot 应用中&#xff0c;并利用其强大的流量控制和容错能力。 下面是一个详细的步骤指南 …

一个让Stable Diffusion更稳定、更易用的Github开源项目

2023除了ChatGPT大火&#xff0c;Stable Diffusion同样也是非常火热&#xff0c;Stable Diffusion是一个Github开源项目&#xff0c;很多爱好者都会本地安装&#xff0c;但面对一些初学者来说&#xff0c;在安装、配置和使用过程中还是会经常出现很多问题&#xff0c;特别不了解…

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 机器上处理图像&#xff0c;包括创建散点图和直方图&#xff0c;以及根据需要旋转图像以便正确显示。 这个小型实用程序库需要将 NuGet SixLabors.ImageSharp包&#xff08;版本 1.0.4&#xff09;添加到.NET Core 3.1/ …

soular基础教程-使用指南

soular是TikLab DevOps工具链的统一帐号中心&#xff0c;今天来介绍如何使用 soular 配置你的组织、工作台&#xff0c;快速入门上手。 &#xfeff; 1. 账号管理 可以对账号信息进行多方面管理&#xff0c;包括分配不同的部门、用户组等&#xff0c;从而确保账号权限和职责…

《Spring实战》(第6版)第1章 Spring起步

第1部分 Spring基础 第1章 Spring起步 1.1 什么是Spring Spring的核心是提供一个容器(container)。 称为Spring应用上下文(Spring application context)。 创建和管理应用的组件(bean)&#xff0c;与上下文装配在一起。 Bean装配通过依赖注入(Dependency Injection,DI)。…

PAT乙级真题 — 1084 外观数列(java)

外观数列是指具有以下特点的整数序列&#xff1a; d, d1, d111, d113, d11231, d112213111, ...它从不等于 1 的数字 d 开始&#xff0c;序列的第 n1 项是对第 n 项的描述。比如第 2 项表示第 1 项有 1 个 d&#xff0c;所以就是 d1&#xff1b;第 2 项是 1 个 d&#xff08;对…

I.MX6ull 看门狗

一、看门狗介绍 WatchDog是为了能够防止程序跑飞而使用的一种硬件模块。如果你的程序没有跑飞&#xff0c;那么你的程序会 定时的去喂看门狗&#xff1b;如果你的程序跑飞了,那么就不会再去喂狗了&#xff0c;如果超过了喂狗的时间&#xff0c;那么狗就会 自己生成一个信号来重…

鲸鱼算法优化Transformer+KAN网络并应用于时序预测任务

&#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; 本次博客内容将聚焦于深度学习的相关知识与实践 &#x1f389;作者简介&#xff1a;⭐️⭐️⭐️主要研究方向涵盖深度学习、计算机视觉等方向。 &#x1f4dd;目前更新&#x…

一维差分算法篇:高效处理区间加减

那么在正式介绍我们的一维差分的原理前&#xff0c;我们先来看一下一维差分所应用的一个场景&#xff0c;那么假设我们现在有一个区间为[L,R]的一个数组&#xff0c;那么我要在这个数组中的某个子区间比如[i,m] (L<i<m<R)进行一个加k值或者减去k值的一个操作&#xff…

【C++】基础入门(详解)

&#x1f31f; Hello&#xff0c;我是egoist2023&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; 目录 输入&输出 缺省参数(默认参数) 函数重载 引用 概念及定义 特性及使用 const引用 与指针的关系 内联inline和nullptr in…

【快速入门】Unity 常用组件(功能块)

欢迎关注 、订阅专栏 【unity 新手教程】谢谢你的支持&#xff01;&#x1f49c;&#x1f49c; 文章目录 Unity 常用组件&#xff08;功能块&#xff09;&#xff1a;Transform - 变换&#xff1a;坐标、朝向、大小Mesh Filter - 加载网格数据Mesh Renderer- 渲染网格Camera - …

Nessus 工具使用全攻略

目录 一、Nessus&#xff1a;网络安全的坚固防线 二、Nessus 安装指南 &#xff08;一&#xff09;获取安装包 &#xff08;二&#xff09;安装流程 三、初次配置&#xff1a;开启 Nessus 的第一步 &#xff08;一&#xff09;账号注册 &#xff08;二&#xff09;激活 …

PHP代驾系统小程序

&#x1f697; 代驾系统 —— 安全、便捷、智能的出行新选择 &#x1f527; 一款基于先进ThinkPHPUniapp技术架构&#xff0c;匠心独运的代驾软件横空出世&#xff0c;微信小程序端率先登场&#xff0c;为您的出行之旅增添前所未有的便捷与安全。它不仅是您贴心的出行助手&…

网络安全扫描--基础篇

前言 1、了解互联网安全领域中日趋重要的扫描技术 2、了解在不同网络场景下扫描技术手段 3、熟悉linux下系统内核防护策略并能大件一个有效的系统防护体系 4、增强工作安全意识&#xff0c;并能有效的实践于工作场景中 目录 1、熟悉主机扫描工具&#xff08;fping&#xff0c;…

【MySQL数据库】Ubuntu下的mysql

目录 1&#xff0c;安装mysql数据库 2&#xff0c;mysql默认安装路径 3&#xff0c;my.cnf配置文件? 4&#xff0c;mysql运用的相关指令及说明 5&#xff0c;数据库、表的备份和恢复 mysql是一套给我们提供数据存取的&#xff0c;更加有利于管理数据的服务的网络程序。下…

WebRTC与EasyRTC:开启智能硬件音视频通讯的全新旅程

在当今数字化时代&#xff0c;音视频通讯技术正以前所未有的速度革新着我们的生活与工作方式。WebRTC与EasyRTC作为这一领域的佼佼者&#xff0c;正携手为智能硬件的音视频通讯注入强大动力&#xff0c;开启全新的篇章。 一、WebRTC与智能硬件融合的崭新趋势 WebRTC技术&…