本文讲述通过多种方式来访问和使用JanusGraph。并通过实际例子进行讲解。
JanusGraph使用Gremlin Server引擎作为服务器组件来处理和响应客户端的请求。当把Gremlin Server打包在JanusGraph中时,Gremlin Server被称为JanusGraph Server。
必须手动启动JanusGraph Server才能使用它。JanusGraph Server提供了一种远程执行Gremlin脚本的方法,该脚本针对托管在其中的一个或多个JanusGraph实例。本节将介绍如何使用WebSocket配置,以及如何配置JanusGraph Server以处理HTTP端点交互。
这里要注意,一个JanusGraph Server可以对接一个或多个不同类型的JanusGraph实例?那么如何操作呢?
其架构图如下所示:
说明:本例子的后台存储系统和索引系统都是安装在同一台机器上。这里后台外部存储系统使用的是hbase,而并没有配置外部索引系统。
gremlin.graph=org.janusgraph.core.JanusGraphFactory
storage.backend=hbase
storage.hostname=127.0.0.1
cp conf/janusgraph-hbase.properties conf/gremlin-server/socket-janusgraph-hbase-server.properties
cp conf/gremlin-server/gremlin-server.yaml conf/gremlin-server/socket-gremlin-server.yaml
配置需要访问的JanusGraph实例:
graphs: {
graph: conf/gremlin-server/socket-janusgraph-hbase-server.properties
}
bin/gremlin-server.sh ./conf/gremlin-server/socket-gremlin-server.yaml
再开启一个终端,并在终端中输入以下命令:
bin/gremlin.sh
gremlin>
注意:这里只是开启了一个Gremlin的终端,并没有连接JanusGraph Server。
这样就开启了一个gremlin输入终端,可以在该终端中输入命令了。
(1) 连接JanusGraph Server(也就是Gremlin Server)
gremlin> :remote connect tinkerpop.server conf/remote.yaml
==>Configured localhost/127.0.0.1:8182
其中配置文件remote.yaml是JanusGraph Server的地址和端口,这里是localhost。
(2) 添加一个顶点,并获取顶点列表
gremlin> :> graph.addVertex("name", "stephen")
==>v[256]
gremlin> :> g.V().values('name')
==>stephen
...
cp conf/janusgraph-hbase.properties conf/gremlin-server/http-janusgraph-hbase-server.properties
cp conf/gremlin-server/gremlin-server.yaml conf/gremlin-server/http-gremlin-server.yaml
并修改以下内容:
channelizer: org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer
graphs: {
graph: conf/gremlin-server/http-janusgraph-hbase-server.properties
}
bin/gremlin-server.sh ./conf/gremlin-server/http-gremlin-server.yaml
curl -XPOST -Hcontent-type:application/json -d '{"gremlin":"g.V().count()"}' http://[IP for JanusGraph server host]:8182
若没有任何错误,可以看到一些输出类似于如下的内容:
{"requestId":"88474df8-e288-456f-9491-cea38410caf6","status":{"message":"","code":200,"attributes":{"@type":"g:Map","@value":[]}},"result":{"data":{"@type":"g:List","@value":[{"@type":"g:Int64","@value":15}]},"meta":{"@type":"g:Map","@value":[]}}}
这一步主要是把gremlin-server的配置文件的这一行改成如下内容:
channelizer: org.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer
有时访问http和WebSocket服务时,需要进行认证。有关具体的认证机制的部署,可以参看:https://docs.janusgraph.org/latest/server.html
的详细说明。
本文讲述了如何把JanusGraph Server配置成http服务或WebSocket服务。并通过例子说明了其用法。