Neo4j 集群和负载均衡

Neo4j 集群和负载均衡

Neo4j是当前最流行的开源图DB。刚好读到了Neo4j的集群和负载均衡策略,记录一下。

1 集群

Neo4j 集群使用主从复制实现高可用性和水平读扩展。

1.1 复制

集群的写入都通过主节点协调完成的,数据先写入主机,再同步到一个或多个备机。这意味着并没有做图切分,集群中的每个实例都将包含数据的完整副本。准确来说,集群中的每个实例最终会将包含数据的完整副本,原因是,刚刚写入的数据,可能还没有同步到备机。

Neo4j 也允许通过从节点进行写入操作,不过此时,被写入的从节点会先将数据同步到主节点,再将数据返回客户端。由于额外的网络负载和协调协议,通过从节点写入会比直接写入主节点慢一个数量级。

1.2 写入缓冲区

在高写人负载的情况中,可以使用队列来进行缓冲区写入和负载调节。使用该策略将集群的写入缓冲在队列中,随后会有工作节点对队列进行轮询并对数据库执行批量写入。这不仅控制了写入流量,而且降低了竞争,并使我们能够在维护时段暂停写入操作而不拒绝客户端的请求。

2 负载均衡

2.1 读写分离流量

鉴于推荐的写入方式是将绝大部分写入操作直接在主节点上进行,我们应该将读请求和写请求完全分离开,并通过负载均衡器将写流量定向到主节点,而读流量平衡地分散到整个集群。

2.2 高速缓存分片

高速缓存分片技术是指将每个请求路由到 HA(高可用性)集群中的特定实例上,这个实例可能已经将需要使用的图的部分放置在自己的主存储器中了。

如果应用程序的大多数查询都是局部图查询,即从图的一个或多个特定点开始,然后遍历周围的子图,那么这种一致地从一组节点开始查询,随后路由到同一数据库实例继续查询的机制将增加每个查询在热高速缓存( warm cache )中命中可能性。 例如,在一个地理数据系统中,我们可以将特定地区的请求路由到特定的刚刚响应过该地区的数据库实例上。这种策略都增加了所需节点和联系被缓存在主存储器中的可能性,在那里它们可以被快速地访问和处理。

感兴趣的同学可以看一下一致性哈希

3 附

以上内容均参考自《图数据库》。

图数据库(第二版).pdf https://www.aliyundrive.com/s/zxfL2btKEj5

相关推荐
发非人非2 分钟前
CentOS 下 FTP 与 NFS 服务深度解析:从基础配置到实战应用
linux·运维·centos
b***25115 分钟前
动力电池点焊机厂家:驱动新能源制造的精密力量|比斯特自动化
运维·自动化·制造
mpr0xy15 分钟前
在离线 OpenEuler-22.03 服务器上升级 OpenSSH 的完整指南
运维·服务器·网络·openeuler·openssh
我不是立达刘宁宇34 分钟前
Python Paramiko上传文件到win ser2022服务器和反向
运维·服务器
一匹电信狗34 分钟前
【Linux我做主】探秘进程与fork
linux·运维·服务器·c++·ubuntu·小程序·unix
ZZZKKKRTSAE40 分钟前
快速上手Linux火墙管理
linux·运维·服务器·防火墙
平生不喜凡桃李2 小时前
Linux 文件(3)
linux·运维·服务器
TDengine (老段)2 小时前
TDengine 运维—容量规划
大数据·运维·数据库·时序数据库·tdengine·涛思数据·iotdb
todoitbo2 小时前
开源一个记账软件,支持docker一键部署
运维·docker·容器·开源·springboot·记账软件·容器部署
安顾里3 小时前
什么是endpoints?
运维·容器·kubernetes