首页 > 解决方案 > 在嵌入式上使用远程 janusgraph 连接时的优缺点是什么?

问题描述

我在我的 java 后端使用嵌入式 janusgraph 我的代码依赖于实例化的 janusgraphgraph = JanusGraphFactory.open(conf)

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

根据github 上的远程 janusgraph 示例,这是通过实例化一个 EmptyGraph 来完成的,该 EmptyGraphgraph = EmptyGraph.instance();不是 JanusGraph 的实例,而是 org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;.

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

最后,我可以理解单独运行janusgraph服务器对可扩展性更好,但是我将失去对janusgraph api的代码中的直接访问,所以我想知道我是否错过了理解以及 远程部署方法的优缺点是什么和嵌入式方法我会失去什么?

编辑:

根据这个答案 纠正它,如果错了

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

优点

缺点

标签: javatinkerpopjanusgraphgremlin-server

解决方案


无论上面列出的优点和缺点都是正确的,我将列出我的学习:

使用gremlin 服务器方法,作为用户,该架构将看起来像一个 Web 服务器(额外成本),它正在与存储系统联系。这些 gremlin 服务器的升级/降级必须根据负载手动处理,否则将成为整个系统的瓶颈。

嵌入式模式下,您有一个存储系统(比如 Cassandra)和另一个通过 tinker pop gremlin 与之交互的存储系统。有了这个,您不必维护 gremlin 服务器,只需您的程序/客户端与存储服务器进行交互。

考虑通过 Apache Spark 加载数据,一旦您使用更多执行器运行作业,gremlin 服务器应该能够处理负载。


推荐阅读