//如果使用的是cassandra 2.2或更高版本,需要開啟thift,以使janus連接到cassandra。 ./bin/nodetool enablethrift.
15.1 Local Server Mode
在該模式下,cassandra作為一個獨立應用與Janus運行在同一個localhost下,此時JanusGraph與Cassandra通過Localhost socket通信。運行步驟如下;
- 下載cassandra,解壓,並在conf/cassandra.yaml和conf/log4j-server.properties中設置文件系統路徑。
- 通過bin/cassandra -f啟動cassandra,並檢查是否啟動成功
下面即可創建一個JanusGraph了。
JanusGraph g =JanusGraphFactory.build(). set("storage.backend","cassandra"). set("storage.hostname","127.0.0.1"). open();
注意:在gremlin shell中,不能定義變量conf和g,所以去掉變量聲明。
該模式比較適用於測試,且Janus與Casssandra運行於統一節點。
15.2 Remote Server Mode
當圖需要擴展時,cassandra以集群方式存在,
Cassandra與Janus被邏輯上分隔在不同的主機上。在該模式中,Cassandra保存圖的數據;而多個janus實例通過維持基於socket的讀/寫來訪問cassandra集群。應用端可以在同一JVM中使用Janus訪問。
如下假如cassandra的地址為:192.168.66.149,則連接代碼如下:
JanusGraph graph =JanusGraphFactory.build(). set("storage.backend","cassandra"). set("storage.hostname","192.168.66.149"). open();
如果是Gremlin客戶端,去掉下划線部分。
連接成功后如下所示:
15.3 Remote Server Mode with Germlin Server
Gremlin Server可以被設置為包圍着每個JanusGraph實例,在該模式下,客戶端通過作為一個Gremlin Client的方式與Gremlin Server通信,並將請求由Gremlin Server交由JanusGraph進行處理。此種方式支持多語言環境。
使用bin/gremlin-server.sh啟動,然后在外部的Gremlin.sh Session就可以通過如下語句通信:
:plugin use tinkerpop.server :remote connect tinkerpop.server conf/remote.yaml :> g.addV()
在此種情況下,每個Gremlin Server都必須配置連接到casandra集群中,下面是一個配置片段,詳情見:
http://docs.janusgraph.org/latest/server.html
... graphs:{ g: conf/janusgraph-cassandra.properties} plugins: - janusgraph.imports ...
關於Gremlin Server的更詳細信息參見:
http://tinkerpop.apache.org/docs/3.2.3/reference#gremlin-server
15.4 JanusGraph Embedded Mode
最后,cassandra也可以嵌入到JanusGraph中去,在此種部署方式下,JanusGraph啟動Cassandra,並通過進程通信,能夠顯著提升查詢性能,但由於共用一個JVM,需要性能調優。
15.5 Cassandra Specific Configuration
參考第12章:Configuration Reference(
http://docs.janusgraph.org/latest/config-ref.html )獲取更詳細信息:
當配置cassandra時,推薦考慮如下幾個方面:
- read-consistency-level
- write-consistency-level
- replication-factor:復制因子,用於控制數據復制的分數,提高魯棒性,3是一個常用的配置。該配置只在創建Keyspace時可用,對已有的keyspace則忽略。
- thrift.frame_size_mb:thift幀大小,如果要傳送大數據,需要調高,僅在storage.backend=cassandrathift時可用
- keyspace:存儲JanusGraph的keyspace,允許多個JanusGraph保存在Cassandra集群中
更多關於一致性的信息參見:Cassandra thift API,但一般一致性越高,延遲越高。
15.6 Global Graph Operations
在Cassandra之上的JanusGraph支持全局點/邊遍歷,但需要將全部數據加載到內存,可能引起OOM。更多參見:33章,JanusGraph With TinkerPop's Hadoop-Germlin來更有效的遍歷。
