计算机系统应用教程网站

网站首页 > 技术文章 正文

(十一) JanusGraph配置化及部分运维能力说明

btikc 2024-10-26 08:41:16 技术文章 6 ℃ 0 评论

JanusGraph图形数据库集群由一个或多个JanusGraph实例组成。要打开JanusGraph实例,必须提供一个配置,指定如何设置JanusGraph。JanusGraph配置指定JanusGraph应该使用哪些组件,控制JanusGraph部署的所有操作方面,并提供许多调优选项,以从JanusGraph集群获得最大性能。从源码的组织形式上来看,无论是后端选型还是对应的索引引擎的选择方式还是比较灵活的。同时这业务后续的拓展提供了便利。

从简单实用上来看,janusgraph必须配置一种后端持久化引擎,而索引为非必选项。但是通常生产环境,处于性能的考量都会搭建索引集群以优化janusgraph的查询性能。

JanusGraph配置至少必须定义JanusGraph应用作存储后端的持久性引擎。存储后端列出了所有支持的持久性引擎以及如何分别配置它们。如果需要高级图形查询支持(例如全文搜索、地理搜索或范围查询),则必须配置额外的索引后端。如果查询性能是一个问题,那么应该启用缓存。JanusGraph缓存中介绍了缓存配置和调整。缓存是另一篇文章的重点,后续展开。

配置化

Cassandra+ElasticSearch

storage.backend=cql
storage.hostname=localhost

index.search.backend=elasticsearch
index.search.hostname=127.xxx.xxx.1, 127.xxx.xxx.2
index.search.elasticsearch.client-only=true

HBase+Caching

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

Berkeleyje+ElasticSearch

storage.backend=berkeleyje
storage.directory=/tmp/graph

# 嵌入式elasticsearch, 通常es集群大家都自建调优
index.search.backend=elasticsearch
index.search.directory=/tmp/searchindex
index.search.elasticsearch.client-only=false
index.search.elasticsearch.local-mode=true


使用

如何将配置提供给JanusGraph取决于安装模式。

  1. JanusGraph发行版包含一个命令行 Gremlin Console,使其易于入门并与JanusGraph交互。调用bin/gremlin.sh(Unix/Linux)或bin/gremin.bat(Windows)以启动控制台,内部原理使用到了一个JanusGraphFactory的类,用于装载配置。
graph = JanusGraphFactory.open('path/to/configuration.properties')
  1. JanusGraph Embedded(嵌入式JanusGraph), JanusGraphFactory还可以用于从基于JVM的用户应用程序中打开嵌入式JanusGraph图形实例。在这种情况下,JanusGraph是用户应用程序的一部分,应用程序可以通过其公共API直接调用JanusGraph。

JanusGraph Server

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

  1. JanusGraph可以通过在客户端程序中嵌入JanusGraph调用来使用,该程序提供执行线程。
  2. JanusGraph打包了一个长时间运行的服务器进程,该进程在启动时允许远程客户端或在单独程序中运行的逻辑进行JanusGraph调用。这个长时间运行的服务器进程称为JanusGraph服务器。

这个动作其实和之前启动本地JanusGraphServer效果是一样的。

配置JanusGraph服务器是通过位于中的JanusGraph Server yaml配置文件完成的/JanusGraph发行版中的conf/gremlin服务器目录。要使用图形实例(JanusGraph)配置JanusGraph Server,JanusGraph服务器配置文件需要以下设置:

...
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]}}}}
...


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

范围

作用周期说明

LOCAL

这些选项仅适用于单个JanusGraph实例,并且在初始化JanusGraph示例时提供的配置中指定。

MASKABLE

本地配置文件可以覆盖单个JanusGraph实例的这些配置选项。如果本地配置文件没有指定该选项,则从全局JanusGraph集群配置中读取其值。

GLOBAL

这些选项总是从集群配置中读取,并且不能在实例的基础上覆盖。

GLOBAL_OFFLINE

与GLOBAL一样,但更改这些选项需要重新启动集群,以确保整个集群的值相同。

FIXED

与GLOBAL类似,但一旦JanusGraph集群初始化,该值就无法更改。

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

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

Note:要更改GLOBAL_OFFLINE选项,请执行以下步骤:

  1. 关闭集群中除一个JanusGraph实例外的所有实例
  2. 连接到单个实例
  3. 确保关闭所有正在运行的事务
  4. 确保没有启动新事务(即集群必须脱机)
  5. 打开管理API
  6. 更改配置选项
  7. 调用commit,它将自动关闭图形实例
  8. 重新启动所有实例

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表