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()
- 多實例架構圖