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 TinkerPopGremlin 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
  • 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()

  • 多實例架構圖