1,DRPC原理

客户端给DRPC服务器发送要执行的方法的名字,以及这个方法的参数。实现了这个函数的topology使用DRPCSpout从DRPC服务器接收函 数调用流。每个函数调用被DRPC服务器标记了一个唯一的id。 这个topology然后计算结果,在topology的最后一个叫做ReturnResults的bolt会连接到DRPC服务器,并且把这个调用的结 果发送给DRPC服务器(通过那个唯一的id标识)。DRPC服务器用那个唯一id来跟等待的客户端匹配上,唤醒这个客户端并且把结果发送给它。

2,例子

package storm.starter;import backtype.storm.Config;
import backtype.storm.LocalCluster;
import backtype.storm.LocalDRPC;
import backtype.storm.drpc.DRPCSpout;
import backtype.storm.drpc.ReturnResults;
import backtype.storm.topology.BasicOutputCollector;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.topology.TopologyBuilder;
import backtype.storm.topology.base.BaseBasicBolt;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Tuple;
import backtype.storm.tuple.Values;public class ManualDRPC {public static class ExclamationBolt extends BaseBasicBolt {@Overridepublic void declareOutputFields(OutputFieldsDeclarer declarer) {declarer.declare(new Fields("result", "return-info"));}@Overridepublic void execute(Tuple tuple, BasicOutputCollector collector) {String arg = tuple.getString(0);Object retInfo = tuple.getValue(1);collector.emit(new Values(arg + "!!!", retInfo));}}public static void main(String[] args) {TopologyBuilder builder = new TopologyBuilder();LocalDRPC drpc = new LocalDRPC();DRPCSpout spout = new DRPCSpout("exclamation", drpc);builder.setSpout("drpc", spout);builder.setBolt("exclaim", new ExclamationBolt(), 3).shuffleGrouping("drpc");builder.setBolt("return", new ReturnResults(), 3).shuffleGrouping("exclaim");LocalCluster cluster = new LocalCluster();Config conf = new Config();cluster.submitTopology("exclaim", conf, builder.createTopology());System.out.println(drpc.execute("exclamation", "aaa"));System.out.println(drpc.execute("exclamation", "bbb"));}
}

备注:DRPCSpout的名字与drpc.execute指定运行的名字一致

storm DRPC例子相关推荐

  1. Storm专题一、Storm DRPC 分布式计算

    本文译自:https://storm.incubator.apache.org/documentation/Distributed-RPC.html Storm里面引入DRPC主要是利用storm的实 ...

  2. Twitter Storm: DRPC学习

    学习途径 作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://xumingming.sinaapp.com/756/twitte ...

  3. storm drpc学习

    storm drpc 是什么?咋一听觉得挺高大上的,其实也就是那么一回事.就是storm的topology 提供了很多函数,并且函数名唯一,函数里面封装了一些算法操作.只需要在调用的时候指定函数名和传 ...

  4. storm drpc

    转 http://www.cnblogs.com/panfeng412/archive/2012/07/02/storm-common-patterns-of-distributed-rpc.html ...

  5. storm DRPC指南

    storm DRPC指南 @(STORM)[storm] storm DRPC指南 一什么是DRPC 二LocalDPRC的例子 三RemoteDRPC将DPRC拓扑提交至集群 1启动DRPC服务器 ...

  6. Storm DRPC环境搭建笔记

    Storm DRPC环境搭建笔记 By Mickey.Pro 1. 安装系统 CentOS 6.3 64bit minimal http://www.osyunwei.com/archives/475 ...

  7. Storm DRPC 使用及访问C++ Bolt问题的解决方法

    原创文章,欢迎转载,转载请注明出处:http://blog.csdn.net/jmppok/article/details/16840231 参考1: storm下运行C++程序(一) 参考2: St ...

  8. storm DRPC问题

    一.配置集群storm.yaml文件,配置drpc.server. 二.开启drpc服务,storm drpc. 三.编写DrpcTopology程序.如下: <span style=" ...

  9. Storm DRPC 使用

    来源:http://blog.csdn.net/jmppok/article/details/16839363 1. DRPC介绍 Storm是一个分布式实时处理框架,它支持以DRPC方式调用.可以理 ...

最新文章

  1. qt 一定要指定大小吗 数组_Qt中数组的初始化 | 学步园
  2. TortoiseGit配置密钥的方法
  3. 数据库索引的作用和优点缺点
  4. button,submit, image的区别 点onclick后隐藏行
  5. mapreduce实现计数时未执行reduce方法(未实现统计功能)
  6. 手把手教Electron+vue的使用
  7. wince下获取mac地址的简单方法!
  8. linux内核mtd分区,linux-kernel – 在运行时调整MTD分区大小
  9. db2存储过程调用java_db2使用Java存储过程实现MD5函数
  10. 手机应用只清理不够,还要卸载
  11. ASP.NET MVC 随想录——探索ASP.NET Identity 身份验证和基于角色的授权,中级篇
  12. 软件如何上传虚拟服务器,本地软件传到虚拟机上
  13. poj1392 Ouroboros Snake 欧拉回路
  14. 上偏续关系哈斯图_[离散]哈斯图偏序集--最好理解版本
  15. 【Python基础知识整理】
  16. python 使用pandas简单地把excel里面的数据存储到矩阵里面
  17. 红米手机5A完整卡刷开发版获取Root超级权限的流程
  18. 惠普笔记本重装win10系统教程
  19. [转] 给土鳖装上鹰的翅膀和眼睛后会怎么样?
  20. 会话验证调度器_用视力调度建立会话式预订机器人

热门文章

  1. 按照题目打印菜单c语言,--单片机C语言编程实训
  2. 【乌鸦算法】基于多段扰动共享型乌鸦算法求解单目标优化问题含Matlab代码
  3. 分享两个解决Mac 访问Github的好方法
  4. 数字图像处理(4): 遥感影像中 光谱分辨率、空间分辨率、时间分辨率、全色图像、多光谱图像、高光谱图像 的区别
  5. db2 如何 将 oracle CONNECT BY 移植到 DB2
  6. 王小草【深度学习】笔记第七弹--RNN与应用案例:注意力模型与机器翻译
  7. Pytorch、TorchVision、Python、Jetpack版本匹配问题
  8. 【官方】中国工商银行电子银行业务收费标准
  9. 硬件设计得好,软件就会多简单,以一个H桥电路来说说
  10. Android Google Map 开发指南(一)解决官方demo显示空白只展示google logo问题