JanusGraph·server端配置启动和远程remote连接·多实例问题
- 2020 年 2 月 18 日
- 筆記
- 4.2.2. JanusGraph Server JanusGraph本身就是一组没有执行线程的jar文件。连接和使用JanusGraph数据库有两种基本模式: 1.嵌入式
- 补充自己的实验记录
- 2.当JanusGraph被启动时,JanusGraph打包了一个长期运行的服务器进程(JanusGraph Server),这个服务器进程允许远程客户端进行JanusGraph调用.
- JanusGraph packages a long running server process that, when started, allows a remote client or logic running in a separate program (??) to make JanusGraph calls. This long running server process is called JanusGraph Server.
- For the JanusGraph Server, JanusGraph 使用 Apache TinkerPop 的Gremlin Server 来服务client的请求。JanusGraph提供了一个开箱即用的配置,可以快速启动JanusGraph Server,但可以更改配置以提供广泛的服务器功能。 配置JanusGraph Server是通过位于JanusGraph发行版的./conf/gremlin-server目录中的JanusGraph Server yaml配置文件完成的。要使用graph实例(
JanusGraph
)配置JanusGraph Server ,JanusGraph Server配置文件需要以下设置: - … graphs: { graph: conf/janusgraph-berkeleyje.properties } plugins: – janusgraph.imports ?? 这里不知道怎么处理 …
- 下图跟上面不太一致

- conf 和 conf/gremlin-server下都有 .properties文件 ,conf/gremlin-server下的.properties文件多一个 -server.properties后缀,粗略看了下两者的内容,好像是差不多的。
- graph条目绑定绑
graph
到JanusGraph配置conf/janusgraph-
berkeleyje.properties. - The
plugins
entry enables the JanusGraph Gremlin Plugin, which enables auto-imports of JanusGraph classes(自动导入的 JanusGraph classes) so that 它们可以在远程提交的脚本中被引用. - 了解更多有关配置和使用JanusGraph服务器第7章,JanusGraph服务器。
- 4.2.2.1. Server Distribution
-
bin/janusgraph.sh 是一个快速启动
Gremlin Server和JanusGraph的脚本。 - Invoke
bin/janusgraph.sh start
to start Gremlin Server with Cassandra and Elasticsearch
-
- 解压
- 刚解压的 直接./gremlin-server无法成功启动,因为你conf/gremlin-server/janusgraph-cql-es-server.properties
- 需要修改.yaml中的 .properties的路径
- Gremlin
- 在gremlin-server没有启动(gremlin-console自然也无法通过:remote连接)的情况下,gremlin-console也能执行下面的语句
- gremlin> graph = JanusGraphFactory.open('conf/janusgraph-berkeleyje-es.properties') ==>standardjanusgraph[berkeleyje:../db/berkeley] gremlin> GraphOfTheGodsFactory.load(graph) ==>null gremlin> g = graph.traversal() ==>graphtraversalsource[standardjanusgraph[berkeleyje:../db/berkeley], standard
-
- java远程连接代码
- graph = EmptyGraph.instance(); g = graph.traversal().withRemote(conf); 需要配置一个 remote-objects.yaml:
- hosts: [xx,xxx,xx] port: 8182 serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] } }
- 这个配置文件可以配置多个host,用逗号隔开
- 连接一台host上的多实例,应该使用http类型的janus graph server, 然后直接通过 url + port + post (body),每个实例配置不同端口 这种方式也不需要通过remote连接。
- 连接JanusGraph RemoteServer的Java程序例子. https://github.com/JanusGraph/janusgraph/tree/master/janusgraph-examples/example-remotegraph
- graph = EmptyGraph.instance(); g = graph.traversal().withRemote(conf); 需要配置一个 remote-objects.yaml:
- Use gremlin console to connect to gremlin-server
- :remote connect tinkerpop.server ../conf/remote.yaml
- 测试代码
graph = JanusGraphFactory.build().set("storage.backend", "inmemory").set("storage.hostname","10.158.69.75").open()
g = graph.traversal()
- 多实例架构图