storm DRPC例子
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例子相关推荐
- Storm专题一、Storm DRPC 分布式计算
本文译自:https://storm.incubator.apache.org/documentation/Distributed-RPC.html Storm里面引入DRPC主要是利用storm的实 ...
- Twitter Storm: DRPC学习
学习途径 作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://xumingming.sinaapp.com/756/twitte ...
- storm drpc学习
storm drpc 是什么?咋一听觉得挺高大上的,其实也就是那么一回事.就是storm的topology 提供了很多函数,并且函数名唯一,函数里面封装了一些算法操作.只需要在调用的时候指定函数名和传 ...
- storm drpc
转 http://www.cnblogs.com/panfeng412/archive/2012/07/02/storm-common-patterns-of-distributed-rpc.html ...
- storm DRPC指南
storm DRPC指南 @(STORM)[storm] storm DRPC指南 一什么是DRPC 二LocalDPRC的例子 三RemoteDRPC将DPRC拓扑提交至集群 1启动DRPC服务器 ...
- Storm DRPC环境搭建笔记
Storm DRPC环境搭建笔记 By Mickey.Pro 1. 安装系统 CentOS 6.3 64bit minimal http://www.osyunwei.com/archives/475 ...
- Storm DRPC 使用及访问C++ Bolt问题的解决方法
原创文章,欢迎转载,转载请注明出处:http://blog.csdn.net/jmppok/article/details/16840231 参考1: storm下运行C++程序(一) 参考2: St ...
- storm DRPC问题
一.配置集群storm.yaml文件,配置drpc.server. 二.开启drpc服务,storm drpc. 三.编写DrpcTopology程序.如下: <span style=" ...
- Storm DRPC 使用
来源:http://blog.csdn.net/jmppok/article/details/16839363 1. DRPC介绍 Storm是一个分布式实时处理框架,它支持以DRPC方式调用.可以理 ...
最新文章
- qt 一定要指定大小吗 数组_Qt中数组的初始化 | 学步园
- TortoiseGit配置密钥的方法
- 数据库索引的作用和优点缺点
- button,submit, image的区别 点onclick后隐藏行
- mapreduce实现计数时未执行reduce方法(未实现统计功能)
- 手把手教Electron+vue的使用
- wince下获取mac地址的简单方法!
- linux内核mtd分区,linux-kernel – 在运行时调整MTD分区大小
- db2存储过程调用java_db2使用Java存储过程实现MD5函数
- 手机应用只清理不够,还要卸载
- ASP.NET MVC 随想录——探索ASP.NET Identity 身份验证和基于角色的授权,中级篇
- 软件如何上传虚拟服务器,本地软件传到虚拟机上
- poj1392 Ouroboros Snake 欧拉回路
- 上偏续关系哈斯图_[离散]哈斯图偏序集--最好理解版本
- 【Python基础知识整理】
- python 使用pandas简单地把excel里面的数据存储到矩阵里面
- 红米手机5A完整卡刷开发版获取Root超级权限的流程
- 惠普笔记本重装win10系统教程
- [转] 给土鳖装上鹰的翅膀和眼睛后会怎么样?
- 会话验证调度器_用视力调度建立会话式预订机器人
热门文章
- 按照题目打印菜单c语言,--单片机C语言编程实训
- 【乌鸦算法】基于多段扰动共享型乌鸦算法求解单目标优化问题含Matlab代码
- 分享两个解决Mac 访问Github的好方法
- 数字图像处理(4): 遥感影像中 光谱分辨率、空间分辨率、时间分辨率、全色图像、多光谱图像、高光谱图像 的区别
- db2 如何 将 oracle CONNECT BY 移植到 DB2
- 王小草【深度学习】笔记第七弹--RNN与应用案例:注意力模型与机器翻译
- Pytorch、TorchVision、Python、Jetpack版本匹配问题
- 【官方】中国工商银行电子银行业务收费标准
- 硬件设计得好,软件就会多简单,以一个H桥电路来说说
- Android Google Map 开发指南(一)解决官方demo显示空白只展示google logo问题