AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

粉了!京东商城核心亿级流量并发Java系统架构设计方案手册

Java架构追梦

Java 架构 面试 高并发 京东

融云技术分享:全面揭秘亿级IM消息的可靠投递机制

JackJiang

即时通讯 IM 可靠消息最终一致 融云

别人都在谈爱琴海,凭什么程序员就“地中海”网友:还是太优秀!

时序数据库助力安全监控

greatersecurity

PancakeSwap交易所做市机器人|交易所画K线机器人

Geek_23f0c3

交易所机器人 pancakeswap 做市机器人

程序员小哥月入5万,却被丈母娘拒绝,丈母娘一番话让小哥很尴尬

【云厂商】部分知名云服务商名单

行云管家

云计算 公有云 云服务 私有云 云厂商

最壕58人逆天改命:四面阿里拿offer后,才发现师哥给的面试笔记有多强大

Java架构师迁哥

「腾讯面试题」兔子试毒

海归硕士程序员吐槽:回国一个月都没找到工作,我书都白读了?

毕业总结

菲尼克斯

架构实战营

DEMO CHINA带着1000+投资人,500+好项目首登重庆

创业邦

创业 投资

程序员崩溃的40个瞬间!最后一个是你意想不到的.....

《面试八股文》之 Redis 16卷

moon聊技术

redis 面试

Baetyl邀你来战EdgeX中国挑战赛!

百度开发者中心

人工智能 最佳实践 物联网

Tensorflow for Java + Spark-Scala分布式机器学习计算框架的应用实践

Qunar技术沙龙

机器学习 tensorflow spark 后端 分布式计算

程序员没两把刷子,就别送外卖了!!!

模块三作业

king

为什么双赞安卓ARM工控主板应用前景那么好?

双赞工控

加码物联网安全,熵核科技做终端安全的守护者

熵核科技

2021- iOS开发者一份你一定会被问到的面试题(附参考答案)

iOSer

ios 面试 ios开发 iOS 知识体系

程序员是如何看待程序员的,程序员是做什么的?

关于程序猿的28个经典段子

程序员面试时自称字节跳动工作两年,被发现学历造假,结果蒙了!

NGINX社区线下Meetup第三期成功举办 感受成都开发者们的NGINX热情

爱极客侠

网络攻防学习笔记 Day86

穿过生命散发芬芳

网络攻防 7月日更

2021年FiL最新消息:fil值得投资吗?

区块链 IPFS fil fil矿机 fil行情

如何下载YouTube视频/影片(4K画质)

资源君

分享 经验分享 youtube视频下载 工具分享 教程分享

掌握这些核心算法,拿不到10+个offer你来找我,我锤飞你个不争气的

北游学Java

Java 算法

详细架构设计文档

刘丽

Go 语言的信号式抢占原理

Xargin

后端 Go 语言 系统编程

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