全球分布式Neo4j的架构?

gre*_*ell 7 scaling distributed-system neo4j

我正在为在世界48个国家设有办事处的组织做一些工作.从本质上讲,他们现在的工作方式是,他们都将数据存储在数据库的本地副本中,并将其复制到世界上所有地区/办事处.在奇怪的情况下,他们需要直接在伦敦服务器上的"开发副本"上工作,他们必须直接连接到伦敦服务器,无论他们在世界的哪个位置.

因此,我想说我希望有一个跨越整个组织的单个图形,它是分片的,这样每个区域都可以相对快速地读取图形.我担心写入会破坏性能.我知道写操作是通过一个主数据,这是否意味着全局只有一个主数据?也就是说,如果那位大师恰好在伦敦,那么每次从悉尼写入数据库都必须遍历该距离,而不管本地分片是什么?如果悉尼和伦敦被切断(无论出于何种原因)会怎样?

从本质上讲,Neo4j如何解决全球分销问题?

Ste*_*ter 8

Neo4j企业版的分发机制确实是主从风格.对主站的任何写请求都在本地提交,并同步传输到由push_factor(默认值:1)定义的从站中的号码.对从属设备的写入请求将同步将其应用于主设备,自身以及足够的机器来实现push_factor.同步的从站到主站通信可能会达到性能,这就是为什么建议将写入重定向到主站并通过从站分配读取的原因.群集通信在高延迟网络上运行良好.

在多区域设置中,我建议在"主要区域"中具有完整(也称为最少3个实例)的群集.另一个3实例群集位于以仅从属模式运行的辅助区域中.如果主要区域完全关闭(发生得非常简陋但是显示为低),监视工具会触发辅助区域中的配置更改,以使其实例成为主要区域.所有其他需要快速读取访问权限的办公室然后x(x> = 1,取决于读取性能)仅从属实例.在每个位置,您都有一个HA代理(或其他LB),用于指示写入主服务器(通常位于主服务器区域)并读取到本地区域.

如果您想要超过单个集群的~20个实例,请考虑先进行严格的概念验证.由于主从架构,这种方法无法无限扩展.