通过嵌入式使用远程janusgraph连接时的优缺点是什么?

时间:2019-03-08 08:26:51

标签: java tinkerpop janusgraph gremlin-server

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

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

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

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

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

编辑:

根据此answer 如果有误请更正

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

优点

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

缺点

  • 艰难地进行手动交易管理
  • 您必须使用groovy脚本作为字符串,然后将其发送以删除(集群提交)以进行代码的事务处理。

1 个答案:

答案 0 :(得分:0)

无论上面列出的哪些优点和缺点,都是正确的,同时我还将列出我的学习成果:

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

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

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