HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

大规模 Neo4j 集群中的因果一致性

  • 2017-04-19
  • 本文字数:1084 字

    阅读完需:约 4 分钟

在 QCon 2017 伦敦大会上,Neo4J Technology 首席科学家 Jim Webber 介绍了 Neo4J 是如何实现因果一致性的。他的演讲内容包括:高层概览Neo4J 集群的架构、使用 Raft 实现共识机制,以及用于实现“写后读”(RAW,read-after-write)一致性的“书签”(Bookmarking)模式。

据 Webber 介绍,为将集群问题分而治之,Neo4J 提供了两类角色不同的节点,分别称为核心(Core)节点和只读(Read)节点。在集群中,核心节点用于写操作,并提供了集群的持久性保证。只读节点是核心集群的只读异步副本,实现在“多读少写”(Read-heavy)负载场景下的扩展。

,Webber 进一步介绍了为达成持久性保证,核心节点是如何实现 Raft 共识算法的。一旦一个事务写入到一个核心节点,Raft 就会对事务做日志,并将事务到复制到集群中所有其余的核心节点。Raft 并非等待事务被完全复制,而是等待大多数选举(Majority Vote),这足以保证写操作的持久性。

Webb 还介绍了 Raft 在性能上和弹性上的优点。对于性能而言,Raft 只需等待大多数复制,因此阻塞的时间更短,进而降低了查询延迟。从弹性的角度看,即使一些节点故障,只要大多数依然可以选举,核心集群就仍然正常工作。

Webber 对 Raft 和 Paxos 做了比较,Raft 相对更简单,而且更易于实现,这就是 Neo4J 选择 Raft 的原因。他认为 Raft 降低了软件故障出现的可能性,提高了应用的可维护性。

据 Webber 介绍,图数据库通常是一类“多读少写”的数据库。即使在写操作期间,也必须读取和遍历图数据。这就是在 Neo4J 集群中通常只读节点要多于核心节点的原因。因为只读节点不参与共识提交,这意味着只读节点适用于自动扩展,并且更易于按需部署或调配。

考虑到事务是被异步复制到只读节点的,Webber 给出了一个简单应用场景,对此机制进行了展示。如果用户需要在创建数据后就立刻读取它们,即便写操作具有持久性保证,但还是有可能无法发现这些数据。这是由于数据是最终一致的,可能数据尚未复制到被查询的节点上。

要解决这一“写后读”一致性问题,Webber 介绍了 Neo4J 中提供的一种因果一致性模式,称为“书签”。

书签模式的第一阶段包含一次写操作,写操作完成后将返回相应的事务标识给客户端。第二阶段是一次读操作,客户端在查询中发送事务的标识。通过使用事务标识,被读取的节点将可以阻塞给定的事务。

Webber 用一个代码例子展示了书签模式,强调了在他看来,实现书签模式是非常简单的。在这个例子中,客户端接收一个事务标识,然后传递给此后的查询。

要了解更多的细节,可以从此处在线完整观看该演讲。Webber 还推荐阅读一下Raft 的论文

查看英文原文: Causal Consistency for Large Neo4j Clusters

2017-04-19 19:002085
用户头像

发布了 227 篇内容, 共 74.2 次阅读, 收获喜欢 28 次。

关注

评论

发布
暂无评论
发现更多内容

帮你积累音视频知识,Agora 开发者漫游指南正式启航

声网

人工智能 音视频

Hoo虎符研究院 | 币海寻珠——近期公链事件(2021.12.16)

区块链前沿News

Hoo虎符 虎符交易所

分析一下微信朋友圈的高性能复杂度

Sindorei

「架构实战营」

低代码助推生物制药企业CDMO的“数字化转型”之路

优秀

低代码 制药企业CDMO

今日谈:信道复用、PPP帧、ARP协议的有关知识

恒生LIGHT云社区

信道编码 ARP协议 PPP

设计模式的提出

卢卡多多

28天写作 12月日更

重磅!博睿数据Go语言智能探针技术GoAgent国内首发

博睿数据

增长方法论:五步验证法

石云升

产品经理 28天写作 产品增长 12月日更

【Redis核心原理专题】(1)「技术提升系列」分析探究如何实现LFU的热点key发现机制以及内部的Scan扫描技术的原理

洛神灬殇

redis 12月日更 Redis Scan Redis 热点key Redis服务

Hystrix Dashboard

李子捌

微服务 28天写作 12月日更

2021年11月券商App行情刷新及交易体验评测报告

博睿数据

架构模块二作业

Vincent

「架构实战营」

实现macOS热门功能,我只用了60行代码!

Jackpop

Holos: 我来了,我是个大块头。

mtfelix

28天写作

请回答,轻巧又见效的数字化转型,企业该如何做?

ToB行业头条

阿里云分布式容器平台即将全面启动公测!

阿里巴巴云原生

阿里云 容器 分布式 云原生

重磅|火山引擎边缘计算节点服务正式发布!

火山引擎边缘云

边缘计算 网络 云计算,

46 K8S之集群高可用

穿过生命散发芬芳

k8s 28天写作 12月日更

工业机器视觉系统的构成与开发过程(理论篇—1)

不脱发的程序猿

计算机视觉 机器视觉 图像处理 LabVIEW 工业自动化

架构实战营 4 期 - 第2周作业

周念

「架构实战营」

云原生新边缘:火山引擎边缘计算最佳实践

火山引擎边缘云

云计算 云原生 边缘计算

2021的科技卦象·震·到元宇宙玩“躲猫猫”

脑极体

解决问题

Nydia

CSS之选择器(八):+ 和 ~

Augus

CSS 12月日更

东数西算,风起中原

脑极体

【架构师训练营】模块二作业

樰巳-堕~Horry

架构实战营 「架构实战营」

从 “香农熵” 到 “告警降噪” ,如何提升告警精度?

阿里巴巴云原生

阿里云 云原生 告警 可观测 信息熵

15.  《重学JAVA》--Lambda表达式

杨鹏Geek

Java 25 周年 28天写作 12月日更

电脑安全小知识

喀拉峻

黑客 网络安全 安全 计算机基础

LabVIEW软件、驱动安装及编程方法(理论篇—2)

不脱发的程序猿

机器视觉 LabVIEW 工业自动化

链路分析 K.O “五大经典问题”

阿里巴巴云原生

负载均衡 阿里云 云原生 流量 链路分析

大规模Neo4j集群中的因果一致性_架构_Andrew Morgan_InfoQ精选文章