Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
全球分布式Neo4j的体系结构?_Neo4j_Scaling_Distributed System - Fatal编程技术网

全球分布式Neo4j的体系结构?

全球分布式Neo4j的体系结构?,neo4j,scaling,distributed-system,Neo4j,Scaling,Distributed System,我正在为一个在世界48个国家设有办事处的组织做一些工作。基本上,它们现在的工作方式是将数据存储在数据库的本地副本中,并复制到世界上所有的区域/办事处。在奇怪的情况下,如果他们需要直接处理伦敦服务器上的“开发副本”,他们必须直接连接到伦敦服务器,不管他们在世界上的什么地方 让我们假设我想要一个横跨整个组织的单一图表,它被切分,这样每个区域都能相对快速地读取图表。我担心写作会扼杀表演。我知道写操作是通过一个主控器完成的,这是否意味着全球只有一个主控器?i、 e.如果该主机碰巧在伦敦,那么无论本地分片

我正在为一个在世界48个国家设有办事处的组织做一些工作。基本上,它们现在的工作方式是将数据存储在数据库的本地副本中,并复制到世界上所有的区域/办事处。在奇怪的情况下,如果他们需要直接处理伦敦服务器上的“开发副本”,他们必须直接连接到伦敦服务器,不管他们在世界上的什么地方

让我们假设我想要一个横跨整个组织的单一图表,它被切分,这样每个区域都能相对快速地读取图表。我担心写作会扼杀表演。我知道写操作是通过一个主控器完成的,这是否意味着全球只有一个主控器?i、 e.如果该主机碰巧在伦敦,那么无论本地分片情况如何,从悉尼向数据库的每次写入都必须穿越该距离?如果悉尼和伦敦被切断(无论出于何种原因),会发生什么


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

Neo4j企业版中的分销机制确实是主从式的。对主设备的任何写入请求都会在本地提交,并同步传输到由
推送系数
定义的从属设备中的数量(默认值:1)。对从机的写入请求将同步地将其应用于主机、自身和足够多的机器,以实现推送因数。Synchronous从站到主站的通信可能会影响性能,这就是为什么建议对主站执行重定向写入,并通过从站分发读取。集群通信在高延迟网络上运行良好

在多区域设置中,我建议在“主区域”中有一个完整的(即至少3个实例)集群。另一个3实例集群位于以仅从模式运行的辅助区域中。在主区域完全关闭的情况下(这种情况非常罕见,但它会关闭),监控工具会触发次区域中的配置更改,以使其实例成为主区域。所有其他需要快速读取访问的办公室都有x(x>=1,具体取决于读取性能)仅从机实例。在每个位置都有一个HA代理(或其他LB),它将写操作定向到主机(通常在主区域中),并将读操作定向到本地区域


如果你想超越单个集群的20个实例,首先考虑做一个严肃的概念证明。由于主从式体系结构,这种方法不能无限扩展

截至2020年,Neo4J仍然是一个仅复制的图形数据库。它有一些读写“核心服务器”,作为其“同步集群”的一部分存在,然后有一些“读取副本”。对其中一个核心服务器执行更新,然后在通知客户端提交成功之前,在(N/2)+1个核心服务器之间同步更新。这是Neo4J对的实现。这都意味着Neo4J实现了复制,并且复制副本是分布式的。图的所有节点和边仅限于存在于同一服务器上

Objective/DB实现了一个分布式数据库。客观性/DB允许用户将其图形分布在多达65000台服务器上,其中节点a可以位于服务器10上,节点B可以位于服务器47550上,它们之间的边缘可以位于服务器543上。这允许单个连接的图形扩展到任何单个服务器的规模之外。数据库的接口(API)创建了所谓的单一逻辑视图,在该视图中,一旦连接到联邦数据库,客户机就拥有整个联邦中所有数据的单一逻辑视图,而不管它驻留在哪个主机上。这允许用户使用较小的商品硬件创建大量图形,而不必购买exabyte规模的服务器来创建exabyte规模的图形


另一个优点是,它允许用户将数据放在将要使用的位置附近。如果你的组织分布在全球,你可以把香港数据放在香港或附近,以及纽约数据在纽约或附近。并且可以在香港和纽约的节点之间创建边缘。丹佛的usee可以在所有站点上运行导航查询,因为查询引擎是分布式的。

很好的答案:当两个位置之间的链接被切断,对两个集群进行更改,然后链接被恢复时会发生什么?我想我读过一些关于必须为争用事件提供处理程序的内容……对吗?对于主选举,您需要超过一半的集群成员(这就是为什么您应该有奇数)才能达到法定人数。未达到法定人数,不得选举任何船长。你们集群中的一小部分仍然可以处理读操作,但它不接受写操作。但我们在伦敦有一个3人的集群,在悉尼有一个3人的集群。主人在伦敦,有人切断了伦敦办事处(注意:服务器仍在运行,伦敦办事处的每个人都在继续使用它们)。悉尼一号现在选出了一位新的船长,并运营了一段时间。一段时间后,与伦敦办事处的联系又恢复了。发生了什么事?在伦敦,辛迪公司还没有进行选举(那里只有奴隶)。只有在伦敦完全关闭(例如停电)的情况下,悉尼才被提升为大师级。当伦敦再次出现时,他们作为奴隶重新加入。之后,您手动(或通过监控触发)工具关闭sydney master,重新配置为仅从,瞧,伦敦再次成为主。@StefanArmburster在本场景中,伦敦集群中所做的更改不会被sydney上的集群看到,对吗?那么这会影响这些集群中读取请求的一致性吗?