在嵌入式上使用远程janusgraph连接时有什么优缺点?

问题描述 投票:4回答:1

我在Java后端中使用嵌入式janusgraph,我的代码取决于从graph = JanusGraphFactory.open(conf)实例化的janusgraph

AFAIK,它直接连接到Cassandra并进行弹性搜索,并在我的后端应用程序JVM中运行janusgraph处理器。但是,如果要扩展janusgraph,则需要在群集上运行单独的janusgraph服务器,并需要从后端作为客户端连接到这些服务器。

根据remote janusgraph example on github,这是通过实例化不是JanusGraph实例而是graph = EmptyGraph.instance();的EmptyGraph org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;来实现的。

我可以从上面的示例中了解到,我只能通过将gremlin查询提交给janusgraph服务器来使用,但除非将代码作为字符串提交给服​​务器,否则我将无法直接使用管理API。

最后,我可以理解,最好是分别运行janusgraph服务器可伸缩性更好,但是我将失去对janusgraph api的代码直接访问权限,因此我想知道我是否错过了一些了解的知识,以及优缺点在远程部署方法中,与嵌入式方法相比我将失去什么?

编辑:

根据此answer 如果有错,请更正

连接到远程gremlin服务器的优点/缺点

优点

  • 服务器具有更多控制权,所有查询都集中在其中。
  • 由于每个人都通过远程gremlin服务器运行遍历/查询,因此所有事务都受到事务保护。默认情况下,远程gremlin服务器在事务中运行遍历/查询。
  • 中央战略管理
  • 中央模式管理

缺点

  • 难做手动交易管理
  • 您必须使用groovy脚本作为字符串,并将其发送以删除(集群提交)以进行代码的事务处理。
java tinkerpop janusgraph gremlin-server
1个回答
0
投票

上面列出的任何优点和缺点都是正确的,同时我将列出我的学习内容:

使用gremlin服务器方法,作为用户,该体系结构看起来像是与存储系统联系的Web服务器(附加成本)。这些gremlin服务器的高级/低级必须根据负载手动进行处理,否则它将成为整个系统的瓶颈。

嵌入式模式中,您有一个存储系统(例如Cassandra),并且还有一个通过修补匠pop gremlin与之交互的系统。这样,您不必维护gremlin服务器,只需您的程序/客户端与存储服务器进行交互即可。

考虑通过Apache Spark进行数据加载,一旦与更多执行者一起运行作业,gremlin服务器就应该有足够的能力来处理负载。

© www.soinside.com 2019 - 2024. All rights reserved.