我在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服务器的优点/缺点
优点
缺点
答案 0 :(得分:0)
无论上面列出的哪些优点和缺点,都是正确的,同时我还将列出我的学习成果:
使用 gremlin服务器方法,作为用户,该体系结构看起来像是与存储系统联系的Web服务器(附加成本)。这些gremlin服务器的高级/低级必须根据负载手动进行处理,否则它将成为整个系统的瓶颈。
在嵌入模式中,您有一个存储系统(例如Cassandra),而另一个系统确实通过修补匠pop gremlin与之交互。这样,您不必维护gremlin服务器,只需您的程序/客户端与存储服务器进行交互即可。
考虑通过Apache Spark加载数据,一旦您与更多执行者一起运行作业,gremlin服务器就应该有足够的能力来处理负载。