//如果使用的是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来更有效的遍历。

JanusGraph与Cassandra集成模式的更多相关文章

  1. 在 IIS 7.5 中,应用程序池有两种运行模式:集成模式和经典模式。

    应用程序池模式会影响服务器处理托管代码请求的方式. 如果托管应用程序在采用集成模式的应用程序池中运行,服务器将使用 IIS 和 ASP.NET 的集成请求处理管道来处理请求. 如果托管应用程序在采用经 ...

  2. 曲线救国:IIS7集成模式下如何获取网站的URL

    如果我们在Global中的Application_Start事件中访问HttpContext.Current.Request对象,如: protected void Application_Start ...

  3. Centos启动Cassandra交互模式失败:No appropriate python interpreter found

    在CentOS6.5安装好Cassandra后,启动交互模式: bin/sqlsh 192.168.10.154 时,报错 No appropriate python interpreter foun ...

  4. asp.net Web.config 在不同版本的IIS配置的IHttpHandler的访问路径,以及经典模式和集成模式不同的配置

    如果IIS7.0使用.net4.0以上版本的框架,<system.web>中的httpHandlers节点就没有用了,而应该使用微软专为.net4.0以上版本设计的新节点<syste ...

  5. IIS 7 托管管道模式 经典模式(Classic) 集成模式(Integrated) 分析与理解

    IIS 7.0 支持两种管道模式:一种是IIS 7.0最新提供的集成管道模式,另一种是经典管道模式,经典管道模式是由先前版本的IIS提供的. 我们可以通过应用程序池设置管道模式,这项功能对IIS管理员 ...

  6. IIS7 经典模式和集成模式的区别(转载)

    转载地址:http://www.poluoluo.com/server/201301/193110.html 升级过程中出现了比较多的问题,前面文章也提到过几个.这次就主要介绍下httpHandler ...

  7. IIS7的集成模式下如何让自定义的HttpModule不处理静态文件(.html .css .js .jpeg等)请求

    今天将开发好的ASP.NET站点部署到客户的服务器上后,发现了一个非常头疼的问题,那么就是IIS7的应用程序池是集成模式的话,ASP.NET项目中自定义的HttpModule会处理静态文件(.html ...

  8. 【解决】SharePoint集成模式下Reporting Service—为用户授予的权限不足,无法执行此操作。 (rsAccessDenied)

    环境:Windows Server 2008 R2 SP1,SharePoint 2010 企业版,SQL Server 2008 R2 Reporting Service(SharePoint集成模 ...

  9. ASP.NET运行时详解 集成模式和经典模式

    遗留问题 在<ASP.NET运行时详解 生命周期入口分析>中遗留两个问题,包括Application的InitInternal方法执行细节.IIS6和II7经典模式请求管道管理类Appli ...

随机推荐

  1. java开发3~5年工作经验面试题

    关于java基础 String,StringBuilder,StringBuffer区别是什么?底层数据结构是什么?分别是如何实现的? HashSet的底层实现是什么?它与HashMap有什么关系? ...

  2. 【Docker】基本命令使用介绍

    # docker命令行学习 ## docker run- docker run --help:老实说这条最管用了- docker run -it:交互模式,允许控制台输出 - docker run - ...

  3. [HDU5739]Fantasia(圆方树DP)

    题意:给一张无向点带有权无向图.定义连通图的权值为图中各点权的乘积,图的权值为其包含的各连通图的权和.设z_i为删除i点后图的权值,求$S = (\sum\limits_{i=1}^{n}i\cdot ...

  4. [HNOI2018]道路(DP)

    题目描述 W 国的交通呈一棵树的形状.W 国一共有n−1n - 1n−1 个城市和nnn 个乡村,其中城市从111 到n−1n - 1n−1 编号,乡村从111 到nnn 编号,且111 号城市是首都 ...

  5. 【置换群】Codeforces Round #393 (Div. 1) A. Pavel and barbecue

    就是先看排列p,必须满足其是一个环,才满足题意.就处理出有几个环,然后把它们合起来,答案就是多少. 然后再看序列b,自己稍微画一画就会发现,如果有偶数个1肯定是不行哒,否则,它就会再置换一圈回到它自己 ...

  6. 【单调队列】bzoj2096 [Poi2010]Pilots

    用两个单调队列维护序列中的最大值和最小值即可. poi~ #include<cstdio> #include<algorithm> using namespace std; i ...

  7. 将html文档转成pdf

    (1)使用场景:在项目中使用到了合同,只有在合同的头部,是不相同的.在合同的主体部分都是相同的,因此就把他放到了模板(html文件)里面. 在用户线上签约完成之后,可以将pdf版的合同下载. (2)需 ...

  8. 如何移除inline-block元素之间的空白

    我们想要的是<li>元素可以紧贴在一起,但是很显然,结果“出乎意料”.那么有什么方法可以让结果符合我们的预期呢?所能想到的解决方法至少有以下四种,而每种方法也都有其优劣所在,至于要如何选择 ...

  9. python中的else子句

    在一般的语言中else子句一般是紧跟在if 子句后面,但是python语言中else子句可以不跟在if子句后面,请看下面代码: >>> for n in range(2, 10): ...

  10. Intellij IDEA错误识别.xml文件

    转自原文Intellij IDEA错误识别文件 今天上午弄了一个多小时,对idea感到十分的沮丧,真是太不好用了,一点儿都不智能,而且有些地方,还被自动的配置错误,导致操作起来就像是脱缰的野马. 言归 ...