storm之DRPC

1.DRPC的作用是什么?

2.DRPC工作流是怎样的?

3.DRPC分为几部分?

4.服务端有几部分组成?

1,DRPC的作用

Storm是一个分布式实时处理框架,它支持以DRPC方式调用.可以理解为Storm是一个集群,DRPC提供了集群中处理功能的访问接口.

 

其实即使不通过DRPC,而是通过在Topoloye中的spout中建立一个TCP/HTTP监听来接收数据,在最后一个Bolt中将数据发送到指定位置也是可以的。这是后话,后面再进行介绍。而DPRC则是Storm提供的一套开发组建,使用DRPC可以极大的简化这一过程。

 

Storm里面引入DRPC主要是利用storm的实时计算能力来并行化CPU intensive的计算。DRPCstorm topology以函数的参数流作为输入,而把这些函数调用的返回值作为topology的输出流。

 

DRPC其实不能算是storm本身的一个特性, 它是通过组合storm的原语spoutbolt, topology而成的一种模式(pattern)。本来应该把DRPC单独打成一个包的, 但是DRPC实在是太有用了,所以我们我们把它和storm捆绑在一起。

2DRPC的工作流程

storm之DRPC_第1张图片

客户端给DRPC服务器发送要执行的方法的名字,以及这个方法的参数。实现了这个函数的topology使用DRPCSpoutDRPC服务器接收函数调用流。每个函数调用被DRPC服务器标记了一个唯一的id。 

这个topology然后计算结果,在topology的最后一个叫做ReturnResultsbolt会连接到DRPC服务器,并且把这个调用的结果发送给DRPC服务器(通过那个唯一的id标识)DRPC服务器用那个唯一id来跟等待的客户端匹配上,唤醒这个客户端并且把结果发送给它。

 

Distributed RPC是由一个”DPRC Server”协调的(storm自带了一个实现)DRPC服务器协调

 

1) 接收一个RPC请求。

2) 发送请求到storm topology 

3) storm topology接收结果。

4) 把结果发回给等待的客户端。

3.DRPC分为几部分?

1)服务端

服务端由四部分组成:包括一个DRPC Server, 一个 DPRC Spout,一个Topology和一个ReturnResult

 

 

在实际使用中,主要有三个步骤:

 

a.启动Storm中的DRPC Server;

 

   首先,修改Storm/conf/storm.yaml中的drpc server地址;需要注意的是:必须修改所有Nimbussupervisor上的配置文件,设置drpc server地址。否则在运行过程中可能无法返回结果。

 

  然后,通过 storm drpc命令启动drpc server

 

b.创建一个DRPC Topology,提交到storm中运行。

 该Toplogy和普通的Topology稍有不同,可以通过两种方式创建:

创建方法一:直接使用 Storm 提供的LinearDRPCTopologyBuilder。 (不过该方法在0.82版本中显示为已过期,不建议使用)

storm之DRPC_第2张图片

创建方法二:

直接使用 Storm 提供的通用TopologyBuilder。 不过需要自己手动加上开始的DRPCSpout和结束的ReturnResults。

其实Storm 提供的LinearDRPCTopologyBuilder也是通过这种封装而来的。

storm之DRPC_第3张图片

c.通过DRPCClientCluster进行访问

需要修改客户端配置文件 ~/.storm/storm.yaml,配置drpc server的地址。修改方法可storm服务端一样。比如我的集群配置了5554这两台主机是DRPC server,那么使用的时候我得上到这两台通过命令storm drpc把服务启动起来。

storm之DRPC_第4张图片

你可能感兴趣的:(storm之DRPC)