zoukankan      html  css  js  c++  java
  • JanusGraph与Cassandra集成模式

    //如果使用的是cassandra 2.2或更高版本,需要开启thift,以使janus连接到cassandra。
    ./bin/nodetool enablethrift.

    15.1 Local Server Mode

    modes-local
    在该模式下,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

    modes-distributed
     
    当图需要扩展时,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

    modes-rexster
    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

    modes-embedded
    最后,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来更有效的遍历。
  • 相关阅读:
    关于SEL数据类型的简单知识点
    小结RunLoop
    iOS-静态库的创建与使用
    MRC 下block 小结
    Native与H5交互的一些解决方法
    iOS UIPickerView 显示全国省市
    iOS开发 首次启动显示用户引导,第二次启动直接进入App,UIScrollView,UIPageControl,NSUserDefaults
    去掉tableView的header view的粘黏性
    黑苹果-IOS学习的开始
    IOS中程序如何进行推送消息(本地推送,远程推送)
  • 原文地址:https://www.cnblogs.com/jiyuqi/p/326f9ee3b5fbe35999cde15232033a95.html
Copyright © 2011-2022 走看看