我在Java后端中使用嵌入式janusgraph,我的代码取决于从graph = JanusGraphFactory.open(conf)
实例化的janusgraph
AFAIK这将直接连接到Cassandra和 Elasticsearch ,并在我的后端应用程序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服务器方法,作为用户,该体系结构看起来像是与存储系统联系的Web服务器(附加成本)。这些gremlin服务器的高级/低级必须根据负载手动进行处理,否则它将成为整个系统的瓶颈。
在嵌入式模式中,您有一个存储系统(例如Cassandra),还有一个通过修补匠pop gremlin与之交互的存储系统。这样,您不必维护gremlin服务器,只需您的程序/客户端与存储服务器进行交互即可。
考虑通过Apache Spark进行数据加载,一旦与更多执行者一起运行作业,gremlin服务器应具有足够的能力来处理负载。