【流式计算】Twitter Storm源代码分析之DRPC架构细节

storm流式计算的应用案例 Storm集群部署及单词计数 目标:          通过本次能够掌握Strom集群搭建、Storm配置文件、Storm源码管理、Storm编程模型。 课程大纲: 集群部署的基本流程 集群部署的基础环境准备 Storm集群部署 Storm集群的常用操作命令 Storm集群的进程及日志熟悉 Storm源码下载及目录熟悉 Storm 单词计数案列   内容 集群部署的基本流程... 阅读详情
作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://xumingming.sinaapp.com/765/twitter-storm-code-analysis-drpc-arch/

 

概述

在前一篇文章中我们介绍了Storm DRPC是怎么利用Storm提供的Tuple, Spout, Bolt, Topology这些原语封装出来的,可以说确实很精妙,那篇文章的重点是如何利用原语来实现DRPC的功能。这篇文章我们来看一看整个Storm DRPC的架构,整个DRPC里面参与的各方如何交互消息而组成这样一个系统。

架构解析

有图有真相, 我们先看看DRPC的架构图:

从上面的图中看,整个DRPC分为了3个部分:

  • Client: 真正使用DRPC服务的代码
  • DRPCServer: 从Client角度来看的DRPC服务器,就是它把DRPC所有的实现细节从Client的眼中隐藏了。
  • Storm: 这里的Storm是指真正实现DRPC功能的storm的Spout, Bolt, 比如JoinResult,ReturnResults等等。

这里比较有意思的一点是对于DRPCServer来说,Client和Storm都是“客户端”,只是干的工作不同,我们下面通过来分析下整个请求提交,返回的流程来看看它们各自都干了啥:

  • 首先DRPCClient提交请求给DRPCServer
  • DRPCServer首先给这个请求产生一个request-id, 然后把它丢到一个 request-id -> request池子里面
    • DRPCServer在把request放入池子里面的时候,会同时生成一个Semaphore, 并且把这个Semaphore把放到一个 request-id -> semaphore池子里面去
    • 同时它调用semaphore.acquire()来等在这个semaphore上面等待结果的到来。
  • Storm组件从 request-id -> request池子中获取需要处理的请求
  • 通过DRPCSpout, PreapreRequest, JoinResult, ReturnResults一帮家伙去处理这个请求。
  • 把处理完的请求结果发回到DRPCServer的 request-id -> result池子里面去。
    • 同时会通过request-id去 request-id -> semaphore池子里面取出这个请求所对应的semaphore, 并且调用semaphore.release()来释放这个semaphore
  • semaphore被释放之后,DRPCServer上面阻塞的等待线程得以继续执行,去 request-id -> result池子里面把结果取出来,返回给等待的客户端。

异步DRPC

Storm现在还不支持异步的DRPC, 不过要在上面的模型的基础上去实现异步的DRPC应该是很简单的,我画了一下大致是这样的:

和上面的同步DRPC相比改动很小:

  • 请求提交之后,服务器不会等在Semaphore上, 而是立即返回给客户端一个Future对象。
    • 这个Future对象带了request-id的信息
  • 在Client端维护一个 request-id -> result的池子, 客户端将来调用future.get()的时候就是要到这个池子里面来找结果
  • 服务器端发现请求的结果来了之后把回客户端的结果池子里面去

智能车竞赛新手必看:用AD21从零画一块英飞凌TC264核心板(附开源PCB文件) 本文详细介绍了使用Altium Designer 21(AD21)从零开始设计英飞凌TC264核心板的完整流程,涵盖原理图绘制、PCB布线到最终DRC检查的全过程。针对智能车竞赛新手,提供了实用的硬件设计技巧和开源PCB文件,帮助快速掌握TC264核心板开发。 阅读详情

相关推荐

Xiaojie雷达之路---毫米波雷达基础知识---中频信号的相位

本篇文章主要介绍毫米波雷达的基础知识中的中频信号的相位 文章目录傅里叶变换的快速回顾中频信号的相位中频信号对物体微小位移的灵敏度如何2个chirps来对一个物体的速度进行测量测量一个振动的物体 傅里叶变换的快速回顾 傅里叶变换是将一个信号从时域中转换到频域中,在时域中的一个正弦信号将在频域中产生一个峰值,在大多数情况下,在频域中的一个信号是一个复数(每个值是一个振幅和相位的向量),表示为AejθAe^{j\theta}Aejθ 在频域中峰值的相位等于正弦函数的初始相位 中频信号的相位 上一篇文章中提到,

XiaoJie的博客 1万+

Twitter Storm源代码分析之DRPC架构细节

学习途径 作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://xumingming.sinaapp.com/756/twitter-storm-drpc/   本文翻译自:https://github.com/nathanmarz/storm/wiki/Distributed-RPC。 Storm里面

每天积累一点,一年后你会发现,自己变化很大 756

别再对着数据手册画图了!用HFSS 2023 R2快速复现ESP-01的PCB天线(附模型文件)

本文详细介绍了使用HFSS 2023 R2逆向复现ESP-01 PCB天线的五个关键步骤,包括逆向工程准备、高效建模技巧、材料与边界设置、激励与求解配置以及结果分析与设计验证。通过参数化建模和智能边界检测,大幅提升仿真效率,适用于WIFI和蓝牙设备的射频设计优化。

weixin_30832143的博客 76

Storm DRPC

DRPC简介DRPC是为了实现并发的RPC架构而实现的,其中D就是Distributed,利用Storm分布式、并发的能力,实现RPC的高性能。DRPC架构DRPC的架构如图: 客户端:用来发起DRPC的调用 DRPC Server:实现与客户端的对接,传递参数给Storm,返回结果给客户端。 DPRCSpout: 用于连接DRPC Server和Topology,传递参数给Topology。 To

真诚的程序员 2776

EDA课程实验:《数字逻辑电路》实验四___基于Minisys 平台 VIVADO工具与Verilog语言

(4)使用 Verilog HDL 实现一个分频器 clock_div,输入的是系统提供的 100MHz 频率,输出的是 1Hz 频率,占空比是 1:2,(实际上可以用一个加 1 计数器来实现降频,输入的是一个 100MHz 频率的方波,对这 个方波计数 1 亿次刚好到 1 秒(1Hz),题目要求输出频率占空比是 1:2,也就是这个 1Hz 的 方波高电平和低电平各 500ms,可以采用计数到中间值的时候输出电平翻转。(1)1) 拨动 SW1~0 为 01,按下 P4 按钮,GLD1~0 为 01;

ssjy_的博客 1298

FOC:【1】浅析SVPWM算法(七段式)以及MATLAB仿真验证

最近的科研项目需要使用到SVPWM算法,网上相关的原理介绍很多。对于纯应用的需求来说,或许有些内容上的冗余。 本文的目的就是简要并且明确的给出具体的计算步骤,可以帮助快速上手。同时利用MATLAB进行了简单算法验证。.....................

Alex的技术博客 1万+

storm初级教程 008 DRPC 详解

drpc的工作原理 DRPC由storm构成服务端,DRPCClient构成客户端;reach是storm的一个拓扑定义的函数名称 ,(推特url)是请求参数 而linearDRPCTopologyBuilder实现了DRPC的封装,构造函数参数也就是客户端需要传入的函数名;【同时也是自定义拓扑时候DRPCSpout的函数名称,drpcSpout从客户端指定的函数接收输入流】 ...

小麒麟的博客 732

单片机:实现FFT快速傅里叶变换算法(附完整源码)

单片机:实现FFT快速傅里叶变换算法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1103

Twitter开源流式计算框架Apache Heron源码解析专题【更新】

以下文章是对Apache Heron中的部分源码进行解析和文章,来更好的理解Heron底层的运行机制和代码实现。文章的顺序如下: Heron CLI中update命令实现背后的源码解析 Heron Topology提交过程源码解析(待完成) Heron任务调度机制源码解析(待完成) Heron RoundRobinPacking Algorithm源码解析(待完成) 从Heron CLI...

Blossom 450

YOLOv8剪枝 稀疏训练+slim剪枝测试精度仅掉1.6个点,速度提高10.3fps!

摘要 本文介绍了YOLOv8剪枝方法Slim(Network Slimming),通过L1正则化作用于BN层的缩放因子(γ),自动识别并剪除冗余通道,实现模型轻量化。核心步骤包括:稀疏训练(引入L1正则化)、通道剪枝(按γ阈值裁剪)、微调恢复精度。实验表明,该方法能有效压缩模型大小、减少计算量,且支持通过调整speed_up等超参数控制剪枝强度。移植代码需修改C2F模块以适配剪枝,并配置稀疏训练参数(如reg、sl_epochs)。最终剪枝模型需移除优化器以减小体积,但不支持多卡训练。

FJN110的博客 861

如何在 FPGA 中做数学运算

FPGA 非常适合进行数学运算,但是需要一点技巧,所以我们今天就看看如何在 FPGA 中进行简单和复杂的数学运算。介绍由于FPGA可以对算法进行并行化,所以FPGA 非常适合在可编程逻辑中实现数学运算。我们可以在 FPGA 中使用数学来实现信号处理、仪器仪表、图像处理和控制算法等一系列应用。这意味着 FPGA 可用于从自动驾驶汽车图像处理到雷达和飞机飞行控制系统的一系列应用。因为 FPGA 寄存器...

OpenFPGA的博客 2919

Twitter Storm 分布式RPC

分布式RPC 分布式RPC(DRPC)的真正目的是使用storm实时并行计算极端功能。Storm拓扑需要一个输入流作为函数参数,以一个输出流的形式发射每个函数调用的结果。 DRPC没有多少storm特性,因为它是从storm的原始流,spouts,bolts,拓扑来表达一个模式。DRPC没有单独打包,但它如此有用,以至于和storm捆绑在一起。 概述 分布...

weixin_33743880的博客 241

Windows版TASSEL5的下载及安装

TASSEL5是一款用于研究表型和基因型关系的软件,由美国康奈尔大学Buckler实验室所研发。,选择Windows环境安装包下载并安装。1.安装成功后TASSEL5界面。

沉香best的博客 8188

python 流式计算框架_Flink流式计算系统

本文将以这些概念为基础,逐一介绍 Flink 的发展背景、核心概念、时间推理与正确性工具、安装部署、客户端操作、编程API等内容,让开发人员对 Flink 有较为全面的认识并拥有一些基础操作与编程能力。一、发展背景1.1 数据处理架构在流处理器出现之前,数据处理架构主要由批处理器组成,其是对无限数据的有限切分,具有吞吐量大、数据较为准确的特点。然而我们知道,批处理器在时间切分点附近仍然...

weixin_39933356的博客 1083

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

storm DRPC指南

storm DRPC指南@(STORM)[storm]storm DRPC指南 一什么是DRPC 二LocalDPRC的例子 三RemoteDRPC将DPRC拓扑提交至集群 1启动DRPC服务器 2准备storm拓扑代码并提交 3使用客户端发起请求 使用DRPC访问hbase有问题因为storm集群上的hbase jar包还是098的有些类找不到先解决这个 (一)什么是DRPC先看一个经典的图:

jediael_lu的专栏 1967

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

drpc详解

1. DRPC介绍 Storm是一个分布式实时处理框架,它支持以DRPC方式调用.可以理解为Storm是一个集群,DRPC提供了集群中处理功能的访问接口. 其实即使不通过DRPC,而是通过在Topoloye中的spout中建立一个TCP/HTTP监听来接收数据,在最后一个Bolt中将数据发送到指定位置也是可以的。这是后话,后面再进行介绍。而DPRC则是Storm提供的一套开发组建,

scl1991的专栏 4648

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Storm的DRPC

Storm drpc  1.DRPC介绍 Storm是一个分布式实时处理框架,它支持以DRPC方式调用.可以理解为Storm是一个集群,DRPC提供了集群中处理功能的访问接口.其实即使不通过DRPC,而是通过在Topoloye中的spout中建立一个TCP/HTTP监听来接收数据,在最后一个Bolt中将数据发送到指定位置也是可以的。而DPRC则是Storm提供的一套开发组建,使用DRPC可以极

Zonzereal的博客 3367

StormDRPC 概念以及简单例子测试

Storm里面引入DRPC主要是利用storm的实时计算能力来并行化CPU intensive的计算。DRPC的storm topology以函数的参数流作为输入,而把这些函数调用的返回值作为topology的输出流。   DRPC其实不能算是storm本身的一个特性, 它是通过组合storm的原语spout,bolt, topology而成的一种模式(pattern)。 Storm

热爱生活,热爱技术的大彪 3577

Storm DRPC【分布式RPC】概述

一、什么是RPC? RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。 RPC采用客户机/服务器模式。请求程序...

不清不慎的博客 1310

【Storm】DRPC精解和案例分析

一、DRPC简介和工作流程 1、DRPC 简介 分布式RPC( distributed RPC,DRPC) 用于对storm上大量的函数调用进行并行计算。对于每一次函数调用,storm集群上运行的拓扑接收调用函数的参数信息作为输入流,并将计算结果作为输出流发射出去。 一句话概括:storm进行计算,根据客户端提交的请求参数,而返回storm计算的结果。 DRPC通过DRPC Server...

晚风中的自由 925

DRPC实时请求应答服务

文章目录一、简介二、DRPC设计的目的三、流式处理3.1 异步模式3.2 同步模式(实时请求应答服务)3.3 关键点四、DRPC架构五、配置六、定义DRPC拓扑6.1 通过LinearDRPCTopologyBuilder创建6.2 通过TopologyBuilder创建 一、简介 DRPC是分布式远程过程调用(从客户端去查找服务器端的服务),是通过一个DRPC服务端来实现分布式RPC功能的。 D...

墨玉浮白的博客 2244

Flink 1.7.2 业务时间戳分析流式数据源码分析

Flink 1.7.2 业务时间戳分析流式数据源码分析 源码 https://github.com/opensourceteams/flink-maven-scala 概述 由于Flink默认的ProcessTime是按Window收到Source发射过来的数据的时间,来算了,也就是按Flink程序接收的时间来进行计算,但实际业务,处理周期性的数据时,每5分钟内的数据,每1个小时内的数据进行...

大数据技术分享 568

Storm系列(十七)DRPC介绍

Storm版本0.9.5 在storm中DRPC服务应用于远程分布式计算,根据客户端提交的请求参数,而返回Storm计算的结果。 DRPC服务启动流程(远程模式) 启动DRPC服务,启动命令:storm drpc 修改storm.yaml配置文件,添加drpc.servers,如: drpc.servers: - "mast" ...

weixin_30699463的博客 370

strom DRPC LinearDRPCTopologyBuilder 源码 的巧妙之处

前段时间公司做接口封装。 领导推荐一种封装规范。 processor : 传入string[] params, 实现逻辑自己去根据processor接口规范实现 init(params) 和 execute() 对于每个接口形成参数模板,初始化,执行之后,返回实体,得到有效实体,保存到数据库。 相当于对processor 的方法体进行参数化。 与storm d...

weixin_30501857的博客 800

STOPM学习之drpc

RPC(Remote Procedure Call Protocol) 远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为

kk_2015的博客 519

strom 官方DRPC

storm 官方DRPC package drpc; import backtype.storm.Config; import backtype.storm.LocalCluster; import backtype.storm.LocalDRPC; import backtype.storm.StormSubmitter; import backtype.storm.drpc.LinearD

梁小明的博客 990
上一篇: 【流式计算】Twitter Storm: DRPC简介
下一篇: 【流式计算】Twitter Storm源代码分析之CoordinatedBolt
indie-XinYe
博客等级 码龄19年 154粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值