Neo4j 3.2版正式发布:企业级扩展性增强、原生性能提高,还有更多特性
上周末,Neo4j的3.2官方版正式发布,此版本在扩展架构性和程序的执行性能上得到了极大的增强,它标志着以图计算和图存储为核心的互联网应用从此可以扩展到全球的架构。当然,此版本也在安全性和法规遵从性上也有不少新的特性。
Neo4j的全球多数据中心扩展架构
在介绍Neo4j是如何实现全球性架构扩展能力之前,让我们先了解一下这个功能是构建在之前版本的哪一个模块之上,还是一个全新的功能呢?
在Neo4j 3.1版本时代,曾经推出的一个全新的高可用集群功能叫做因果集群,因果集群是基于Raft算法的一个分布式计算集群。因果集群使Neo4j可以在集群内的不同角色(核心服务器和读取副本)之间分离读/写数据库活动,从而实现对巨量吞吐量的支撑、包括读取自己的写入(read-your-own-writes)的一致性级别的读取时间选择,以及高可用性。Neo4j 3.0中引入的官方驱动程序使用二进制Bolt协议和集群来跨群集路由查询,从而无需外部负载均衡器。
在上述的基础之上,本次发布的3.2版本增加了在企业版上支持多数据中心功能,从而使得基于互联网的应用,以及跨国企业能够在全球范围内部署基于图数据库的应用系统。
多数据中心扩展架构
这个版本中增加的最重要的新功能之一是Neo4j现在已经跨多数据中心部署。此功能是的用户能够更方便地跨越大陆数据中心运行Internet规模的应用程序,如下图所示。
早期的版本确实也能做到跨越多个数据中心,也有一些客户已经这么做到了,不过在实施时还是有一些限制,不过现在好了,3.2版本已经彻底优化了之前的小缺陷。从这个版本来时,因果集群上的每个实例都知道它自己在网络的位置以及整体的拓扑结构。同时也实现了局部性的负载平衡和集群同步的能力(即子集群内部),以最大限度地减少广域网上耗时更新的费用。本地子集群的层次结构通过最大化本地核心到副本和副本到副本更新数据的机会,加快了从集群核心到最远的副本的更新传递。
在Neo4j 3.2中,现在可以细分集群,使得写入工作负载仅指向指定的数据中心。这通过将核心服务器分配给群集核心组来实现,并将角色限制在Raft Follower中。
数据中心集群组中的分层副本同步
在集群组本身内,可以将单独的读副本服务器配置为从任何对等体抓取数据,而不是仅仅从核心服务器(如3.2之前的情况)同步数据。通过使用服务器组,您可以设置同步的