登陆

章鱼彩票app-7. JanusGraph服务

admin 2019-05-24 280人围观 ,发现0个评论

JanusGraph运用Gremlin Server引擎作为服务组件来处理和呼应客户端查询。 当打包在JanusGraph中时,Gremlin Server被称为JanusGraph Server。

JanusGraph Server有必要手动发动才干运用。JanusGraph Server供给了一种长途履行Gremlin脚本的办法,该脚本针对保管在其间的一个或多个JanusGraph实例。本节将介绍怎么运用WebSocket装备,以及怎么装备章鱼彩票app-7. JanusGraph服务JanusGraph Server来处理HTTP端交互。

转发,私信回复 JanusGraph 获取完好目录文档

1. 入门

1.1. 运用预打包办法分发

JanusGraph release版别默许供给了Cassandra和Elasticsearch的装备,能够直接运转JanusGraph Server,便利用户快速运用JanusGraph Server。客户端应用程序运用此默许装备可经过自定义的WebSocket协议衔接到JanusGraph Server。有许多运用不同言语开发的客户端支撑此协议。运用WebSocket接口最常用的客户端是Gremlin操控台。快速发动绑缚包不代表出产装置,而是供给了一种运用JanusGraph Server开发,测验以及了解各个组件一同作业的办法。运用此默许装备:

  • 从Releases页面下载最新版别的janusgraph- $ VERSION.zip文件
  • 解压并进入janusgraph- $ VERSION目录
  • 运转bin / janusgraph.sh start。这一步将在一个独自的进程中根据Cassandra / ES装备发动Gremlin Server。留意出于安全原因,Elasticsearch和janusgraph.sh有必要在非root帐户下运转

$ bin/janusgraph.sh startForking Cassandra...Running `nodetool statusthrift`.. OK (returned exit status 0 and printed string running).Forking Elasticsearch...Connecting to Elasticsearch (127.0.0.1:9300)... OK (connected to 127.0.0.1:9300).Forking Gremlin-Server...Connecting to Gremlin-Server (127.0.0.1:8182)... OK (connected to 127.0.0.1:8182).Run gremlin.sh to connect.

1.1.1. 衔接到Gremlin Server

运转janusgraph.sh后,Gremlin Server将开端监听WebSocket衔接。测验衔接的最简略办法是运用Gremlin Console。

运用bin / gremlin.sh发动Gremlin操控台并运用 :remote 和 : 向Gremlin Server发送Gremlin命

$ bin/gremlin.sh \,,,/ (o o)-----oOOo-(3)-oOOo-----plugin activated: tinkerpop.serverplugin activated: tinkerpop.hadoopplugin activated: tinkerpop.utilitiesplugin activated: janusgraph.importsplugin activated: tinkerpop.tinkergraphgremlin :remote connect tinkerpop.server conf/remote.yaml==Connected - localhost/127.0.0.1:8182gremlin : graph.addVertex(name, stephen)==v[256]gremlin : g.V().values('name')==stephen

:remote指令通知操控台运用conf/remote.yaml文件长途衔接到Gremlin Server。该文件指向在本地运转的Gremlin Server实例。:是“submit”指令,它将该行的Gremlin发送到当时运转中的远端。默许状况下,长途衔接是无会话的,这意味着在操控台中发送的每一行都被解释为单个恳求。能够运用分号作为分隔符在一行上发送多个句子。或许,你能够经过在创立衔接时指定会话来树立具有会话的操控台。操控台会话答应您跨多行复用变量

gremlin :remote connect tinkerpop.server conf/remote.yaml==Configured localhost/127.0.0.1:8182gremlin graph==standardjanusgraph[cql:[127.0.0.1]]gremlin g==graphtraversalsource[standardjanusgraph[cql:[127.0.0.1]], standard]gremlin g.V()gremlin user = Chris==Chrisgremlin graph.addVertex(name, user)No such property: user for class: Script21Type ':help' or ':h' for help.Display stack trace? [yN]gremlin :remote connect tinkerpop.server conf/remote.yaml session==Configured localhost/127.0.0.1:8182-[9acf239e-a3ed-4301-b33f-55c911e04052]gremlin g.V()gremlin user = Chris==Chrisgremlin user==Chrisgremlin graph.addVertex(name, user)==v[4344]gremlin g.V().values('name')==Chris

2. 预装置包运用后整理

假如您想重新开端并删去数据库和日志,能够运用janusgraph.sh的clean指令。在运转cle章鱼彩票app-7. JanusGraph服务an操作之前要中止服务器。

$ cd /Path/to/janusgraph/janusgraph-0.2.0-hadoop2/$ ./bin/janusgraph.sh stopKilling Gremlin-Server (pid 91505)...Killing Elasticsearch (pid 91402)...Killing Cassandra (pid 91219)...$ ./bin/janusgraph.sh cleanAre you sure you want to delete all stored data and logs? [y/N] yDeleted data in /Path/to/janusgraph/janusgraph-0.2.0-hadoop2/dbDeleted logs in /Path/to/janusgraph/janusgraph-0.2.0-hadoop2/log

3. 运用WebSocket衔接 JanusGraph Server

本章的1节入门部分讲的默许装备便是运用的WebSocket装备。假如要运用自己的Cassandra或HBase环境,需求更改默许装备来发动环境,请依照以下操作进程:

  1. 首要测验本地衔接到JanusGraph数据库。无论是运用Gremlin操控台仍是用程序测验衔接都能够。在JanusGraph的./conf目录下的properties文件中进行恰当的更改。例如,修正./conf/janusgraph-hbase.properties并保证正确指定了storage.backend,storage.hostname和storage.hbase.table等参数。有关为各种后端存储装备JanusGraph的更多信息,请参阅第III部分“后端存储”。保证properties文件包括以下行:
  2. gremlin.graph = org.janusgraph.core.JanusGraphFactory
  3. 测验完本地装备衔接而且你也装备好了properties文件后,将properties文件从./conf目录仿制到./conf/gremlin-server目录。
  4. cp conf/janusgraph-hbase.properties conf/gremlin-server/socket-janusgraph-hbase-server.properties
  5. 仿制./conf/gremlin-server/gremlin-server.yaml文件偏重新命名为socket-gremlin-server.yaml。假如您需求保存本来的yaml文件,请履行此操作
  6. cp conf/gremlin-server/gremlin-server.yaml conf/gremlin-server/socket-gremlin-server.yaml
  7. 修正socket-gremlin-server.yaml文件并进行以下更新:
  • 假如你方案衔接到其他的JanusGraph Server而不是本地,需求更新host的IP地址:
  • host:10.10.10.100 //服务的IP
  • 更新graphs装备指向你运用的properties文件,以便JanusGraph Server能够找到并衔接到你的JanusGraph实例:
  • graphs:{ graph:conf/gremlin-server/socket-janusgraph-hbase-server.properties
  • }
  1. 发动JanusGraph服务,并指定刚刚装备的yaml文件:
  2. bin/gremlin-server.sh ./conf/gremlin-server/socket-gremlin-server.yaml
  3. 留意:不能只运用bin/janusgraph.sh。这将运用默许装备发动,然后发动Cassandra / Elasticsearch环境。
  4. JanusGraph Server将在WebSocket形式下运转,能够依照第7章的1.1.1节“衔接到Gremlin服务”中的内容进行测验。

4. 运用HTTP衔接 JanusGraph Server

第7章1节“入门”中描绘的默许装备是WebSocket装备。假如要更改默许装备以运用HTTP衔接到JanusGraph Server,请依照下列进程操作:

  1. 首要测验与JanusGraph数据库的本地衔接。无论是运用Gremlin操控台仍是运用程序测验衔接都能够。在JanusGraph的./conf目录中的properties文件中进行恰当的更改。例如,修正./conf/janusgraph-hbase.properties并保证正确指定了storage.backend,storage.hostname和storage.hbase.table参数。有关JanusGraph的更多后端存储装备信息,请参阅第III部分“后端存储”。保证properties文件包括以下行:
  2. gremlin.graph = org.janusgraph.core.JanusGraphFactory
  3. 本地衔接测验完结而且你的properties文件确认可用后,将properties文件从./conf目录仿制到./conf/gremlin-server目录下。
  4. cp conf/janusgraph-hbase.properties conf/gremlin-server/http-janusgraph-hbase-server.properties
  5. 仿制./conf/gremlin-server/gremlin-server.yaml文件更名为http-gremlin-server.yaml。假如你需求参阅文件的原始版别,请履行以下指令
  6. cp conf/gremlin-server/gremlin-server.yaml conf/gremlin-server/http-gremlin-server.yaml
  7. 修正http-gremlin-server.yaml文件并进行以下修正:
  • 假如你计划衔接到其他的JanusGraph Server而不是本地服务,请修正host IP:
  • host:10.10.10.100
  • 更新channelizer设置来指定HttpChannelizer:
  • channelizer:org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer
  • 更新graphs部分来指向新的properties文件,以便JanusGraph Server能够找到并衔接到你的JanusGraph实例:
  • graphs: { 章鱼彩票app-7. JanusGraph服务graph: conf/gremlin-server/http-janusgraph-hbase-server.properties}
  1. 发动JanusGraph服务器,指向刚刚装备的yaml文件:
  2. bin/gremlin-server.sh ./conf/gremlin-server/http-gremlin-server.yaml
  3. JanusGraph Server现在应该以HTTP形式运转并可用于测验。curl可用于验证服务器是否正常作业:
  4. curl -XPOST -Hcontent-type:application/json -d '{gremlin:g.V().count()}' http://[IP for JanusGraph server host]:8182

  1. ounter(line

5. 一同运用WebSocket和HTTP衔接JanusGraph Server

从JanusGraph 0.2.0开端,你能够装备gremlin-server.yaml以经过同一端口承受WebSocket和HTTP衔接。这能够经过修正如下装备。

channelizer:org.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer

6. JanusGraph Server高档装备

6.1. HTTP身份验证

留意:在以下示例中,credentialsDb应与你正在运用的graph是不同的。它应该运用适宜的后端存储来装备,关于这个后端存储运用不同密钥空间,表或存储目录是适宜的。此graph将经过用户名和暗码来运用。

6.1.1. HTTP根本身份验证

要在JanusGraph Server中启用根本身份验证,请在gremlin-server.yaml中增加以下装备。

authentication: { authenticator: org.janusgraph.graphdb.tinkerpop.gremlin.server.auth.JanusGraphSimpleAuthenticator, authenticationHandler: org.apache.tinkerpop.gremlin.server.handler.HttpBasicAuthenticationHandler, config: { defaultUsername: user,defaultPassword: password, credentialsDb: conf/janusgraph-credentials-server.properties } }

验证是否正确装备了根本身份验证。例如

curl -v -XPOST http://localhost:8182 -d '{gremlin: g.V().count()}'

假如身份验证装备正确,则应回来401

curl -v -XPOST http://localhost:8182 -d '{gremlin: g.V().count()}' -u user:password

假如验证装备正确,则应回来200,成果为4。

6.2. WebSocket身份验证

WebSocket身份验证经过简略身份验证和安全层(SASL)机制进行。

要启用SASL身份验证,请在gremlin-server.yaml中增加以下装备

authentication: { authenticator: org.janusgraph.graphdb.tinkerpop.gremlin.server.auth.JanusGraphSimpleAuthenticator, authenticationHandler: org.apache.tinkerpop.gremlin.server.handler.SaslAuthenticationHandler, config: { defaultUsername: user, defaultPassword: password, credentialsDb: conf/janusgraph-credentials-server.properties }}

留意:在上面示例中,credentialsDb应与你正在运用的graph是不同的。它应该运用适宜的后端存储来装备,关于这个后端存储运用不同密钥空间,表或存储目录是适宜的。此graph将经过用户名和暗码来运用。

假如你经过gremlin操控台进行衔接,则你的remote yaml文件应运用恰当的值来装备用户名和暗码。

username: userpassword: password

6.3. HTTP和WebSocket身份验证

假如你正在运用HTTP和WebSocket组合的办法衔接,则能够运用SaslAndHMACAuthenticator进行身份验证,包括WebSocket的SASL,HTTP的根本认证,和HTTP根据哈希的音讯身份验证码(HMAC)。HMAC是根据token的身份验证,经过HTTP运用。您首要经过/ session端点获取token,然后运用它进行身份验证。它用于节约运用根本身份验证加密暗码所花费的时刻。

gremlin-server.yaml应增加以下装备

authentication: { authenticator: org.janusgraph.graphdb.tinkerpop.gremlin.server.auth.SaslAndHMACAuthenticator, authenticationHandler: org.janusgraph.graphdb.tinkerpop.gremlin.server.handler.SaslAndHMACAuthenticationHandler, config: { defaultUsername: user, defaultPassword: password, hmacSecret: secret, credentialsDb: conf/janusgraph-credentials-server.properties }}

留意:在上面示例中,credentialsDb应与你正在运用的graph是不同的。它应该运用适宜的后端存储来装备,关于这个后端存储运用不同密钥空间,表或存储目录是适宜的。此graph将经过用户名和暗码来运用。

留意:假如您期望能够在每台服务器上运用相同的HMAC令牌,则在一切正在运转的JanusGraph服务器上应该是相同的。

关于HTTP的HMAC身份验证,这将创立一个/session端点,该端点供给一个token默许状况下在一小时后过期。token的超时时刻能够在authentication.config中的tokenTimeout来装备。此值为Long值,以毫秒为单位。

你能够运用curl向/ session端点宣布get恳求来获取令牌。例如

curl http://localhost:8182/session -XGET -u user:password{token: dXNlcjoxNTA5NTQ2NjI0NDUzOkhrclhYaGhRVG9KTnVSRXJ5U2VpdndhalJRcVBtWEpSMzh5WldqRTM4MW89}

然后,你能够运用Authorization: Token的header用于身份验证。例如

curl -v http://localhost:8182/session -XPOST -d '{gremlin: g.V().count()}' -H Authorization: Token dXNlcjoxNTA5NTQ2NjI0NDUzOkhrclhYaGhRVG9KTnVSRXJ5U2VpdndhalJRcVBtWEpSMzh5WldqRTM4MW89

6.4. JanusGraph运用TinkerPop Gremlin Server

由于JanusGraph Server是一个包括JanusGraph装备文件的TinkerPop Gremlin Server,因而能够独自下载兼容版别的TinkerPop Gremlin Server并与JanusGraph一同运用。首要下载恰当的Gremlin Server版别,它需求与正在运用的JanusGraph版别(3.3.3)相匹配。

留意:除非特别阐明,不然本节中对文件途径的任何引证都是指Gremlin Server的TinkerPop发行版下的途径,而不是带有JanusGraph Server的JanusGraph发行版。

用JanusGraph装备独立的Gremlin Server跟运用打包的JanusGraph Server是相似的。您应该了解graph装备。根本上,Gremlin Server yaml文件指向特定的图装备文件,这些文件用于实例化它随后将运用的JanusGraph实例。为了实例化这些Graph实例,Gremlin Server要求在其classpath上供给JanusGraph的相应库和依靠项。

为了演示,这些阐明将展现怎么在Gremlin Server中为JanusGraph装备BerkeleyDB后端。如前所述,Gremlin Server需求JanusGraph对其类途径的依靠。运用正在运用的JanusGraph版别号替换以下指令中的$VERSION:

bin/gremlin-server.sh -i org.janusgraph janusgraph-all $VERSION

当此进程完结后,Gremlin Server应该具有一切可用的JanusGraph依靠项,因而能够实例化JanusGraph目标。

留意:上面的指令运用Groovy Grape,假如装备不正确,可能会呈现下载过错。有关设置〜/ .groovy / grapeConfig.xml的更多信息,请参阅TinkerPop文档的这一部分。

运用以下内容创立名为GREMLIN_SERVER_HOME/conf/janusgraph.properties的文件:

gremlin.graph=org.janusgraph.core.JanusGraphFactorystorage.backend=berkeleyjestorage.directory=db/berkeley

其他的后端装备也是相似。请拜见第III部分“后端存储”。假如运用Cassandra,则在janusgraph.properties文件中运用Cassandra装备选项。仅有坚持不变的重要部分是gremlin.graph设置,它应该一直运用JanusGraphFactory。此设置通知Gremlin Server怎么实例化JanusGraph实例。

接下来创立一个名为GREMLIN_SERVER_HOME/conf/gremlin-server-janusgraph.yaml的文件,其间包括以下内容:

host: localhostport: 8182graphs: { graph: conf/janusgraph.properties}scriptEngines: { gremlin-groovy: { plugins: { org.janusgraph.graphdb.tinkerpop.plugin.JanusGraphGremlinPlugin: {},org.apache.tinkerpop.gremlin.server.jsr223.GremlinServerGremlinPlugin: {},org.apache.tinkerpop.gremlin.tinkergraph.jsr223.TinkerGraphGremlinPlugin: {},org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin: {classImports: [java.lang.Math], methodImports: [java.lang.Math#*]},org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin: {files: [scripts/empty-sample.groovy]}}}}serializers: - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }} - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { serializeResultToString: true }} - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}metrics: { slf4jReporter: {enabled: true, interval: 180000}}

这个装备文件有几个重要的部分,由于它们与JanusGraph有关:

  1. 在图中,有一个名为graph的键,其值为conf / janusgraph.properties。这通知Gremlin Server实例化一个名为“graph”的Graph实例,并运用conf / janusgraph.properties文件对其进行装备。“graph”键成为Gremlin Server中Graph实例的仅有称号,能够在提交给它的脚本中引证它。
  2. 在插件列表中,有一个对JanusGraphGremlinPlugin的引证,它通知Gremlin Server初始化“JanusGraph插件”。“JanusGraph插件”将主动导入JanusGraph特定类,以便在脚本中运用。
  3. 请留意脚本键和脚本/ janusgraph.groovy的引证。这个Groovy文件是Gremlin Server和特定ScriptEngine的初始化脚本。运用以下内容创立scripts / janusgraph.groovy:
  4. def globals = [:]globals [g : graph.traversal()]

  1. ounter(line
  2. ounter(line

上佟达宁面的脚本创立了一个名为globals的Map,并为其分配一个键/值对。键是g,它的值是从图生成的TraversalSource,它是在装备文件中为Gremlin Server装备的。此刻,现在为Gremlin Server供给的脚本能够运用两个全局变量 - graph和g。

此刻,Gremlin Server已装备,可用于衔接到新的或现有的JanusGraph数据库。发动server:

$ bin/gremlin-server.sh conf/gremlin-server-janusgraph.yaml[INFO] GremlinServer - \,,,/ (o o)-----oOOo-(3)-oOOo-----

[INFO] GremlinServer - Configuring Gremlin Server from conf/gremlin-server-janusgraph.yaml[INFO] MetricManager - Configured Metrics Slf4jReporter configured with interval=180000ms and loggerName=org.apache.tinkerpop.gremlin.server.Settings$Slf4jReporterMetrics[INFO] GraphDatabaseConfiguration - Set default timestamp provider MICRO[INFO] GraphDatabaseConfi章鱼彩票app-7. JanusGraph服务guration - Generated unique-instance-id=7f0000016240-ubuntu1[INFO] Backend - Initiated backend operations thread pool of size 8[INFO] KCVSLog$MessagePuller - Loaded unidentified ReadMarker start time 2015-10-02T12:28:24.411Z into org.janusgraph.diskstorage.log.kcvs.KCVSLog$MessagePuller@35399441[INFO] GraphManager - Graph [graph] was successfully configured via [conf/janusgraph.properties].[INFO] ServerGremlinExecutor - Initialized Gremlin thread pool. Threads in pool named with pattern gremlin-*[INFO] ScriptEngines - Loaded gremlin-groovy ScriptEngine[INFO] GremlinExecutor - Initialized gremlin-groovy ScriptEngine with scripts/janusgraph.groovy[INFO] ServerGremlinExecutor - Initialized GremlinExecutor and configured ScriptEngines.[INFO] ServerGremlinExecutor - A GraphTraversalSource is now bound to [g] with graphtraversalsource[standardjanusgraph[berkeleyje:db/berkeley], standard][INFO] AbstractChannelizer - Configured application/vnd.gremlin-v3.0+gryo with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v3.0+gryo-stringd with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0[INFO] GremlinServer$1 - Gremlin Server configured with worker thread pool of 1, gremlin pool of 8 and boss thread pool of 1.[INFO] GremlinServer$1 - Channel started at port 8182.

以下部分阐明怎么衔接到正在运转的服务器。

6.4.1. 经过Gremlin Server衔接到JanusGraph

Gremlin Server将在发动时准备好监听WebSocket衔接。测验衔接最简略的办法是运用Gremlin Console。

依照第7.1.1.1节“衔接到Gremlin服务器”中的阐明验证Gremlin服务器是否正常作业

留意:您应该了解的一点是,在运用JanusGraph Server时,Gremlin操控台是从JanusGraph发行版下面发动的,当运用独自的Gremlin Server的测验时,Gremlin操控台是从TinkerPop发行版下发动的。

GryoMapper mapper = GryoMapper.build().addRegistry(JanusGraphIoRegistry.INSTANCE).create();Cluster cluster = Cluster.build().serializer(new GryoMessageSerializerV3d0(mapper)).create();Client client = cluster.connect();client.submit(g.V()).all().get();

经过将JanusGraphIoRegistry增加到org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0,驱动程序将知道怎么正确反序列化JanusGraph回来的自定义数据类型。

7. JanusGraph Server扩展

经过完成Gremlin Server供给的接口,能够扩展Gremlin Server更多的交互办法,并将其与JanusGraph结合运用。请参阅相应的TinkerPop文档获取的更多详细信息。

转发,私信回复 JanusGraph 获取完好目录文档

请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP