JanusGraph数据库集群是由一个或多个JaunsGraph实例组成。获取JanusGraph必须提供一个配置信息告诉JanusGraph怎么建立连接。

JanusGraph配置文件指定来JanusGraph需要使用哪些组件,控制JanusGraph部署的各种操作,以及提供许多的配置项来调整JanusGraph集群的性能。

JanusGraph必须至少配置JanusGraph用作后端存储的持久化引擎。第III部分“后端存储”列出了所有支持的持久化引擎以及分别如何配置它们。如果需要高级图查询支持(例如全文搜索,地理搜索或范围查询),则必须配置后端索引。有关详细信息,请参见第IV部分“后端索引”。如果需要考虑查询性能,则应启用缓存。缓存配置和调优在第13章JanusGraph Cache中介绍。

1. 配置示例

下面的配置示例,介绍了如何配置最常用的后端存储、索引系统和性能组件。但这只涉及了配置的一小部分,有关更多的配置信息,请参阅第15章 配置参考。

1.1. Cassandra+Elasticsearch

使用本地的Cassandra和远端的Elasticsearch来配置JanusGraph

1
2
3
4
5
6
storage.backend=cql
storage.hostname=localhost

index.search.backend=elasticsearch
index.search.hostname=100.100.101.1, 100.100.101.2
index.search.elasticsearch.client-only=true
1.2. HBase+Caching

使用远程运行的Hbase和JanusGraph的缓存来配置JanusGraph,以获取更好的性能

1
2
3
4
5
6
7
8
storage.backend=hbase
storage.hostname=100.100.101.1
storage.port=2181

cache.db-cache = true
cache.db-cache-clean-wait = 20
cache.db-cache-time = 180000
cache.db-cache-size = 0.5
1.3. BerkeleyDB

使用内置的BerkeleyDB和Elasticsearch来配置JanusGraph

1
2
3
4
5
6
7
storage.backend=berkeleyje
storage.directory=/tmp/graph

index.search.backend=elasticsearch
index.search.directory=/tmp/searchindex
index.search.elasticsearch.client-only=false
index.search.elasticsearch.local-mode=true

第15章 参考配置中详细介绍了这些配置。JanusGraph的zip包下的conf目录中也包含了其他的配置示例。

1.4. 更多示例

conf 目录下有几个配置文件示例可用于快速启动JanusGraph。 把这些文件的路径传值给JanusGraphFactory.open(…),如下所示:

1
2
3
4
// Connect to Cassandra on localhost using a default configuration
graph = JanusGraphFactory.open("conf/janusgraph-cql.properties")
// Connect to HBase on localhost using a default configuration
graph = JanusGraphFactory.open("conf/janusgraph-hbase.properties")

2. 配置使用

怎么去配置JanusGraph取决于它实例化的方式。

2.1. JanusGraphFactory
2.1.1. Gremlin Console

JanusGraph安装包中包含了一个Gremlin Console工具,它可以让你轻松入门并与JanusGraph进行交互。 执行bin / gremlin.sh(Unix / Linux)或bin / gremlin.bat(Windows)来启动控制台,然后使用已存在的配置文件调用factory方法来打开JanusGraph图:

1
graph = JanusGraphFactory.open('path/to/configuration.properties')
2.1.2. JanusGraph Embedded

JanusGraphFactory也可以通过基于JVM的应用程序来创建JanusGraph实例。 在这种情况下,JanusGraph是用户应用程序的一部分,应用程序可以通过其开放的API直接调用JanusGraph。

2.1.3 Short Codes

如果之前已配置好JanusGraph集群或者只需要配置后端存储,则JanusGraphFactory可以接受以冒号分隔的后端存储的名称和主机名或目录的字符串这样的参数。

1
graph = JanusGraphFactory.open('cql:localhost')
1
graph = JanusGraphFactory.open('berkeleyje:/tmp/graph')
2.2. JanusGraph Server

JanusGraph本身就是一组没有执行线程的jar文件。 连接和使用JanusGraph数据库有两种基本模式:

  1. 可以在客户端程序中嵌入JanusGraph来调用JanusGraph。
  2. JanusGraph配置了一个一直运行的服务器进程,该进程启动后允许远程客户端或逻辑在单独的程序中运行以进行JanusGraph调用。 这个一直运行的服务器进程称为JanusGraph Server。

对于JanusGraph Server,JanusGraph使用Apache TinkerPop的Gremlin Server来处理客户端请求。JanusGraph提供了一个可以直接使用的配置,来快速启动JanusGraph Server,但可以更改配置以满足广泛的服务需求。

配置JanusGraph Server是通过位于JanusGraph安装包中的./conf/gremlin-server目录下的JanusGraph Server yaml配置文件来完成的。 要使用图实例(JanusGraph)配置JanusGraph Server,JanusGraph Server配置文件需要以下设置:

1
2
3
4
5
6
7
8
9
10
11
12
...
graphs: {
graph: conf/janusgraph-berkeleyje.properties
}
scriptEngines: {
gremlin-groovy: {
plugins: { org.janusgraph.graphdb.tinkerpop.plugin.JanusGraphGremlinPlugin: {},
org.apache.tinkerpop.gremlin.server.jsr223.GremlinServerGremlinPlugin: {},
org.apache.tinkerpop.gremlin.tinkergraph.jsr223.TinkerGraphGremlinPlugin: {},
org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin: {classImports: [java.lang.Math], methodImports: [java.lang.Math#*]},
org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin: {files: [scripts/empty-sample.groovy]}}}}
...

graphs配置 定义了与特定JanusGraph配置的绑定。 在上面的例子中,它将图绑定到conf / janusgraph-berkeleyje.properties上的JanusGraph配置。 scriptEngines配置 启用了JanusGraph Gremlin插件,该插件支持自动导入JanusGraph类,以便可以在远程提交的脚本中引用它们。

在第7章JanusGraph Server中了解有关配置和使用JanusGraph Server的更多信息。

2.2.1. Server Distribution

JanusGraph zip文件包含一个快速启动服务器组件,有助于更轻松地使用Gremlin Server和JanusGraph。 调用bin / janusgraph.sh start来基于Cassandra和Elasticsearch启动Gremlin Server。

注意:出于安全原因,Elasticsearch和janusgraph.sh必须在非root帐户下运行

3. 全局配置

JanusGraph区分本地和全局配置选项。 本地配置选项适用于单个JanusGraph实例。 全局配置选项适用于群集中的所有实例。 更具体地说,JanusGraph区分了以下五个配置选项范围:

  • LOCAL:这些选项仅适用于单个JanusGraph实例,并在初始化JanusGraph实例的配置中指定。
  • MASKABLE:可以通过本地配置文件为单个JanusGraph实例覆盖这些配置选项。 如果本地配置文件未指定该选项,则从全局JanusGraph集群配置中读取其值。
  • GLOBAL:始终从群集配置中读取这些选项,并且不能在实例的基础上覆盖这些选项。
  • GLOBAL_OFFLINE:与GLOBAL一样,但更改这些选项需要重新启动群集以确保整个群集中的值相同。
  • FIXED:与GLOBAL一样,但是一旦初始化JanusGraph集群,就无法更改该值。

启动集群中的第一个JanusGraph实例时,将从提供的本地配置文件初始化全局配置项。 之后,将通过JanusGraph的management API来更改全局配置项。 要访问management API,请在打开的JanusGraph实例句柄graph上调用graph.openManagement()。 例如,要更改JanusGraph集群上的默认缓存行为:

1
2
3
4
5
6
7
8
9
mgmt = graph.openManagement()
mgmt.get('cache.db-cache')
// Prints the current config setting
mgmt.set('cache.db-cache', true)
// Changes option
mgmt.get('cache.db-cache')
// Prints 'true'
mgmt.commit()
// Changes take effect
3.1. 更改离线配置项

更改配置项不会影响正在运行的实例,仅适用于新启动的实例。 更改GLOBAL_OFFLINE配置项需要重新启动集群,以使更改立即对所有实例生效。 要更改GLOBAL_OFFLINE选项,请按以下步骤操作:

  • 关闭集群中除一个JanusGraph实例外的所有实例
  • 连接到单个实例
  • 确保所有正在运行的事务被关闭
  • 确保没有启动新事务(即群集必须脱机)
  • 打开management API
  • 更改配置项
  • 调用commit将自动关闭图实例
  • 重启所有实例

关于更多配置信息(包括每个选项的配置范围),请参阅第15章“配置参考”中的完整配置项列表。

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