写点什么

大规模 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:002440
用户头像

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

关注

评论

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

FP&A整合,全面预算管理的制胜法宝

智达方通

全面预算管理 财务规划和分析 FP&A

领先芯片供应商u-blox通过Perforce Helix Core加强协作,实现基于组件的开发

龙智—DevSecOps解决方案

组件化 芯片设计

小程序6大开发框架对比分析

Onegun

小程序 小程序框架 小程序容器

“伙伴+华为”体系,数字时代的新航标

脑极体

伙伴 体系

一文看懂OpenStack SR-IOV

统信软件

“全球金牌课程”6月17-18日 · CSM认证在线周末班【提前报名特惠】CST导师亲授

ShineScrum

Scrum 敏捷

【论文分享|SIGMOD'22】WeTune 自动发现和验证重写规则

Databend

国产操作系统如何构建自己的生态

Onegun

国产化 国产操作系统

数据挖掘实践(金融风控):金融风控之贷款违约预测挑战赛(上篇)[xgboots/lightgbm/Catboost等模型]--模型融合:stacking、blending

汀丶人工智能

数据挖掘 机器学习 深度学习 数据建模

【经验总结】你想知道的BGA焊接问题都在这里

华秋PCB

工具 电路 PCB PCB设计 焊接

数据在 Mocaverse 项目启动过程中是如何发挥作用的

Footprint Analytics

区块链游戏 NFT 链游 Mocaverse

Apache Kylin 5.0.0-alpha 正式发布,能力全方位提升!

Kyligence

开源 Apache Kylin

软件测试/测试开发丨学习笔记之列表、元组、集合

测试人

Python 软件测试 自动化测试 列表 测试开发

2023 年度中国 DevOps 现状调查|有奖问卷

CODING DevOps

DevOps 云端IDE cloudstudio

龙智即将亮相2023上海国际嵌入式展,为嵌入式开发提供全球领先解决方案

龙智—DevSecOps解决方案

嵌入式软件 嵌入式设计 嵌入式开发

MobTech ShareSDK|助力预热618

MobTech袤博科技

“敏捷教练必修课程”7月22-23日 ·A-CSM认证在线周末班【提前报名特惠】CST导师亲授

ShineScrum

Scrum 敏捷 敏捷精髓 敏捷实践 A-CSM

融云 WICC 2023 定档!「出海嘉年华」穂城来袭!

融云 RongCloud

通信 社交 融云 出海 wicc

ControlNet: 控制扩散模型的魔法

Zilliz

AIGC Towhee Stable Diffustion controlnet

打造面向未来的开发者服务新范式,龙蜥社区开发者服务平台 devFree MeetUp 硬核启动!欢迎报名

OpenAnolis小助手

Meetup 龙蜥社区 基础设施SIG devFree 开发者服务平台

软件测试/测试开发丨Python控制流-判断&循环

测试人

Python 软件测试 自动化测试 测试开发

4大特性看Huawei Cloud EulerOS为开发者带来平滑迁移体验

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

软件测试 | 开发接口

测吧(北京)科技有限公司

测试

软件测试 | spyne开发接口

测吧(北京)科技有限公司

测试

LLMs 诸神之战:LangChain ,以【奥德赛】之名

Zilliz

Milvus AIGC LLM langchain

面面俱到!一份囊括35+核心知识点的Java架构师面试文档

小小怪下士

Java 程序员 java面试 Java八股文

2023年汽车软件行业趋势分析:安全性是汽车软件开发的重大挑战2023年汽车软件开发

龙智—DevSecOps解决方案

汽车软件安全 电动汽车软件 汽车软件开发

软件测试 | 接口测试

测吧(北京)科技有限公司

测试

数据挖掘实践(金融风控):金融风控之贷款违约预测挑战赛(下篇)[xgboots/lightgbm/Catboost等模型]--模型融合:stacking、blending

汀丶人工智能

人工智能 数据挖掘 机器学习 深度学习 数学建模

Neuron 提供免费无限时试用:完整体验数十种工业协议连接

EMQ映云科技

工业物联网 网关软件 工业协议

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