java - 通过嵌入式使用远程 janusgraph 连接有什么优点和缺点?

标签 java tinkerpop janusgraph gremlin-server

我在我的 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 api,所以我想知道我是否理解我错过的内容和 远程部署方法的优缺点是什么,与嵌入式方法相比,我会失去什么?

编辑:

根据这个answer如有错误更正:

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

优点

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

  • 缺点
  • 做手工事务管理很难
  • 您必须使用 groovy 脚本作为字符串并将其发送到删除(集群提交)以执行代码的事务。
  • 最佳答案

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

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

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

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

    关于java - 通过嵌入式使用远程 janusgraph 连接有什么优点和缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55059291/

    相关文章:

    neo4j - Neo4j 属性值匹配/连接的 Tinkerpop 等价物是什么

    titan - 计算 Titan 上的 super 节点

    java - 构建 WAR 包时出现 Maven 错误(缺少 web.xml..?)

    java - For 循环仅打印一次数组中的值之和,并不断重复

    gremlin - TinkerPop 获取计数并继续相同的遍历

    Javascript 如何从以 EnumValue 作为键的 Map 中检索值

    python - jupyter notebook 中的 Gremlin-python

    gremlin - gremlin 中的高效受控随机游走

    java - Android 中的 ByteArray 到 XML 文件

    java - 如何关闭 Android 中的另一个应用程序?