JanusGraph提供了多种存储和索引后端选项,可以灵活地部署它们。本章介绍了一些可能的部署方案,以帮助解决这种灵活性带来的复杂性。

在讨论不同的部署方案之前,了解JanusGraph本身和后端存储所扮演的角色非常重要。首先,程序只与JanusGraph直接通信,主要是通过发送Gremlin遍历来交互。 然后JanusGraph与配置的后端进行通信以执行接收到的遍历。当JanusGraph以JanusGraph Server的形式使用时,就不区分master JanusGraph Serv程序可以连接到任何JanusGraph Server实例。他们还可以使用负载均衡策略把请求分发给不同的实例。 JanusGraph Server实例本身不直接相互通信,这使得在需要处理更多遍历时可以轻松扩展它们。

注意:本章中介绍的场景仅是JanusGraph如何部署的示例。 每个部署都需要考虑具体的用例和生产需求。

1. 基础部署

这种方案是大多数用户在刚开始使用JanusGraph时可能想要选择的方案。 它提供可扩展性和容错性,并且所需服务器数量最少。 JanusGraph Server与后端存储的实例一起运行,并且在每个server上选择是否运行索引实例。

通过简单地添加更多相同类型的服务器或将其中一个组件移动到专用服务器上来扩展。 后者描述了将部署向高级部署转换的方式。

任何可扩展存储后端都可以通过这种方案来使用。 但是,对于Scylla,当托管与此方案中的其他服务共存时,需要进行一些配置。 在这个方案中需要使用索引时,它也需要是可扩展的。

2. 高级部署

高级部署是在第8.1节“基础部署”上的演变。 它们不是将JanusGraph Server实例与存储后端以及可选的索引后端一起部署,而是在不同的服务器上部署。 在不同服务器上部署不同组件(JanusGraph服务,存储/索引后端)的优势在于它们可以相互独立地进行扩展和管理。 这提供了更高的灵活性,但代价是必须维护更多的服务器。

这种部署方案提供了不同组件的独立可伸缩性,因此使用可扩展的后端存储/索引当然也是最有意义的。

3. 简单部署

也可以在一台服务器上将JanusGraph Server与后端一起部署。 这对于前期测试调研尤其有吸引力,例如,当JanusGraph只支持单个应用,该应用也可以在同一服务器上运行。

与之前的部署方案相反,此方案对于使用不可扩展的后端是最有意义的。 内存存储可用于测试调研目的,或者Berkeley DB用于生产,Lucene作为可选的索引后端。

4. 嵌入式JanusGraph

除了从应用连接到JanusGraph服务器之外,还可以将JanusGraph作为库嵌入到基于JVM的应用程序中。 虽然这减少了管理开销,但却无法独立于此应用程序来扩展JanusGraph。 嵌入式JanusGraph可以作为任何方案的变体进行部署。 JanusGraph只是从服务器直接移植到了应用程序,因此它现在只用作库而不是独立服务。

欢迎扫码关注公众号,更好的交流

欢迎扫码关注公众号,更好的交流