Storm系列(十七)DRPC介绍

介绍Apache Storm中DRPC服务的工作原理与调用流程,包括配置启动、远程及本地调用方式,适用于分布式计算场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Storm版本0.9.5

在storm中DRPC服务应用于远程分布式计算,根据客户端提交的请求参数,而返回Storm计算的结果。

DRPC服务启动流程(远程模式)

  • 启动DRPC服务,启动命令:storm drpc
  • 修改storm.yaml配置文件,添加drpc.servers,如:

    drpc.servers:

    - "mast"

  • 向storm集群中的drpc服务节点mast提交DRPC拓扑

DRPC工作流程

  1. 客户端发起请求到DRPC Service
  2. DRPC Service会为这次请求生成对应的requestId与输入的参数一起发送到DRPCSpout,再提交到DrpcTopology(输入参数的字段名称固定为args)
  3. 处理后的结果返回给ReturnResults
  4. 调用DRPC Service服务返回给客户端,返回的结果包括requestId和请求的结果数据.
  5. ReturnResults输出两个字段:第一个为结果数据,第二个为requestId

工作流程图

 

image

 

本地调用DRPC服务方式

TopologyBuilder topologyBuilder = new TopologyBuilder();
LocalDRPC drpc = new LocalDRPC();
       
DRPCSpout spout = new DRPCSpout("test", drpc);
topologyBuilder.setSpout("drpc", spout);
topologyBuilder.setBolt("bolt1", new TestBolt(),2).shuffleGrouping("drpc");
topologyBuilder.setBolt("return", new ReturnResults(),2).shuffleGrouping("bolt1");
       
LocalCluster cluster = new LocalCluster();
10  Config conf = new Config();
11  cluster.submitTopology("bolt1", conf, topologyBuilder.createTopology());

 

分布式集群模式调用DRPC服务

TopologyBuilder topologyBuilder = new TopologyBuilder();
       
DRPCSpout spout = new DRPCSpout("test");
topologyBuilder.setSpout("drpc", spout);
topologyBuilder.setBolt("bolt1", new TestBolt(),2).shuffleGrouping("drpc");
topologyBuilder.setBolt("return", new ReturnResults(),2).shuffleGrouping("bolt1");   
 
Config conf = new Config();
StormSubmitter.submitTopology("bolt1", conf, topologyBuilder.createTopology());

 

调用

public class DRPCTest {
 
    public static void main(String[] args) {
 
        DRPCClient client = new DRPCClient("远程服务IP地址", 3772);
        try {
            String result = client.execute("exclamation", "hello ");
           
            System.out.println(result);
10          } catch (TException e) {
11              e.printStackTrace();
12          } catch (DRPCExecutionException e) {
13              e.printStackTrace();
14          } 
15      }
16  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值