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角色机器名部署路径
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=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
  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 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节点

  1. 同样配置好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
  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.mzph.cn/pingmian/70006.shtml

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

相关文章

Ant-Design-Vue:Button按钮SVG图标垂直未居中问题

问题描述 如下图所示,在使用Ant-Design-Vue UI组件库提供的Button按钮Icon组件开发页面时,发现icon图标并没有垂直居中。 icon插槽-图标垂直不居中 再看一个官网的例子, 官网老子 问题排查 首先,考虑是否由于当前的页面布局&#…

OpenMetadata MySQL 数据库使用率提取管道实现解析

目录 架构概述核心组件源码分析使用率指标定义数据提取流程图源码类图配置与扩展指南架构概述 OpenMetadata 通过可插拔的元数据摄取框架实现对 MySQL 使用率数据的采集,核心流程包含三个阶段: 数据采集层:从 MySQL performance_schema 和 sys schema 获取原始指标指标处理…

慧星云+Chatbox :云上部署DeepSeek告别使用卡顿

DeepSeek 官网卡顿 DeepSeek 系列模型的现象级爆火,引发国内外广泛关注与讨论热潮,然而充满热情的使用者也让 DeepSeek 官网崩溃导致无法正常使用。 为了解决用户使用痛点,慧星云推出了云端蒸馏与满血版的 DeepSeek,搭配 Chatbox …

DeepSeek与ChatGPT的全面对比

在人工智能(AI)领域,生成式预训练模型(GPT)已成为推动技术革新的核心力量。OpenAI的ChatGPT自发布以来,凭借其卓越的自然语言处理能力,迅速占据市场主导地位。然而,近期中国AI初创公…

LeetCode1706

LeetCode1706 目录 LeetCode1706题目描述示例题目理解问题描述 示例分析思路分析问题核心 代码段代码逐行讲解1. 获取网格的列数2. 初始化结果数组3. 遍历每个球4. 逐行模拟下落过程5. 检查是否卡住6. 记录结果7. 返回结果数组 复杂度分析时间复杂度空间复杂度 总结的知识点1. …

前后端的身份认证

现代Web应用程序中,身份认证是确保用户数据安全的关键环节。无论你是开发一个简单的博客系统还是复杂的企业级应用,正确实现身份验证机制都是至关重要的。本文将探讨如何在前后端分离的架构下,使用Node.js作为后端来实现安全有效的身份认证。…

如何调整 Nginx工作进程数以提升性能

🏡作者主页:点击! Nginx-从零开始的服务器之旅专栏:点击! 🐧Linux高级管理防护和群集专栏:点击! ⏰️创作时间:2025年2月15日14点20分 Nginx 的工作进程数&#xff0…

学习web数据埋点

什么是埋点,以及为什么需要埋点 通过代码主动收集用户行为数据(如点击、浏览、停留时长等),用于数据分析驱动产品优化。 一、前端埋点 在客户端(浏览器、移动端应用)直接采集用户行为数据,通…

VMware Workstation Pro 下载(无需注册账号)

VMware Workstation Pro 目前对个人用户完全免费。有两种下载方式,分别为 1、Broadcom 官网下载 需要注册账号,我懒得注册 2、VMware 更新服务器下载 如果不想注册账号,可以通过 VMware 更新服务器直接下载。访问以下链接: ht…

04性能监控与调优篇(D1_学习前言)

目录 一、引言 二、基本介绍 三、JVM基础 1. java堆 2. 垃圾回收 3. STW 四、调优层次 五、调优指标 六、JVM调优原则 1. 优先原则 2. 堆设置 3. 垃圾回收器设置 1> GC 发展阶段 2> G1的适用场景 3> 其他收集器适⽤场景 4. 年轻代设置 5. 年⽼代设置 …

【php】Static 关键字注意事项

静态属性不可以由对象通过 -> 操作符来访问。 代码 <?phpclass parent1{static $a "1 ";static function fun(){echo "dddd ";}}echo parent1::$a;parent1::fun();echo "----------------------<br>";$c new parent1();//错误&a…

环境影响评价(EIA)中,土地利用、植被类型及生态系统图件的制作

在环境影响评价&#xff08;EIA&#xff09;中&#xff0c;土地利用、植被类型及生态系统图件的制作需依据科学、法规和技术规范&#xff0c;以确保数据的准确性和图件的规范性。以下是主要的制作依据&#xff1a; 1. 法律法规与政策依据 《中华人民共和国环境影响评价法》 明确…

使用LightGBM与Apache Spark进行多分类任务

在大数据环境中&#xff0c;使用机器学习算法处理复杂的分类问题是常见的需求。本文将介绍如何利用Apache Spark和Microsoft Synapse ML库中的LightGBM模型来执行多分类任务。我们将通过一个具体的示例&#xff0c;展示从数据准备到模型训练和评估的完整流程。 环境设置 首先…

2025年SEO工具有哪些?老品牌SEO工具有哪些

随着2025年互联网的发展和企业线上营销的日益重要&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;逐渐成为了提高网站曝光率和流量的重要手段。SEO的工作不仅仅是简单地通过关键词优化和内容发布就能够实现的&#xff0c;它需要依赖一系列专业的SEO工具来帮助分析、监测和…

关于视频去水印的一点尝试

一. 视频去水印的几种方法 1. 使用ffmpeg delogo滤镜 delogo 滤镜的原理是通过插值算法&#xff0c;用水印周围的像素填充水印的位置。 示例&#xff1a; ffmpeg -i input.mp4 -filter_complex "[0:v]delogox420:y920:w1070:h60" output.mp4 该命令表示通过滤镜…

调用DeepSeek API接口:实现智能数据挖掘与分析

在当今数据驱动的时代&#xff0c;企业和开发者越来越依赖高效的数据挖掘与分析工具来获取有价值的洞察。DeepSeek作为一款先进的智能数据挖掘平台&#xff0c;提供了强大的API接口&#xff0c;帮助用户轻松集成其功能到自己的应用中。本文将详细介绍如何调用DeepSeek API接口&…

AWS助力AI智能扫地机器人马来西亚项目技术解析与成本优化实践

一、背景与挑战 随着东南亚市场对智能家居产品需求的快速增长&#xff0c;某科技公司计划在马来西亚投放新一代AI智能扫地机器人。该产品需满足以下核心需求&#xff1a; 实时处理多传感器数据&#xff08;激光雷达、摄像头、陀螺仪&#xff09; 支持百万级设备并发连接与OTA…

【实测】用全志A733平板搭建一个端侧Deepseek算力平台

随着DeepSeek 的蒸馏技术的横空出世&#xff0c;端侧 SoC 芯片上运行大模型成为可能。那么端侧芯片跑大模型的效果如何呢&#xff1f;本文将在全志 A733 芯片平台上部署一个 DeepSeek-R1:1.5B 模型&#xff0c;并进行实测效果展示。 端侧平台环境 设备&#xff1a;全志A733平板…

浅聊MQ之Kafka与RabbitMQ简用

&#xff08;前记&#xff1a;内容有点多&#xff0c;先看目录再挑着看。&#xff09; Kafka与RabbitMQ的使用举例 Kafka的使用举例 安装与启动&#xff1a; 从Apache Kafka官网下载Kafka中间件的运行脚本。解压后&#xff0c;通过命令行启动Zookeeper&#xff08;Kafka的运行…

两步在 Vite 中配置 Tailwindcss

第一步&#xff1a;安装依赖 npm i -D tailwindcss tailwindcss/vite第二步&#xff1a;引入 tailwindcss 更改配置 // src/main.js import tailwindcss/index// vite.config.js import vue from vitejs/plugin-vue import tailwindcss from tailwindcss/viteexport default …