• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C/C++实现对STORM运行信息查看及控制的方法

C/C++实现对STORM运行信息查看及控制的方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c c++ c#区别,c和c++的区别,c语言和c++有什么区别,c/c++,c语言与c++的区别等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文所述程序实例主要实现在后端应用服务器上实时获取STORM集群的运行信息和topology相关的提交和控制。对此,通过对STORM UI和CMD源码的分析,得出可以通过其thrift接口调用实现这些功能。先下载一个thrift库进行编码和安装。关于thrift可以参见这个地方。安装完成后,从STORM源码中将storm.thrift拷贝到thrift目录下。输入:

hrift -gen cpp storm.thrift

</div>

会得到一个gen-cpp目录,里面就是thrift先关脚本的C++实现。我们先看storm.thrift文件接口:

service Nimbus 
{
 //TOPOLOGY上传接口
 void submitTopology(1: string name, 2: string uploadedJarLocation, 3: string jsonConf, 4: StormTopology topology);
 void submitTopologyWithOpts(1: string name, 2: string uploadedJarLocation, 3: string jsonConf, 4: StormTopology topology, 5: SubmitOptions options);
 void killTopology(1: string name);
 void killTopologyWithOpts(1: string name, 2: KillOptions options) throws (1: NotAliveException e);
 void activate(1: string name) ;
 void deactivate(1: string name);
 void rebalance(1: string name, 2: RebalanceOptions options);
 
 //TOPOLOGY JAR包上传接口
 string beginFileUpload();
 void uploadChunk(1: string location, 2: binary chunk);
 void finishFileUpload(1: string location);
 string beginFileDownload(1: string file);
 binary downloadChunk(1: string id);

 //获取NIMBUS的配置信息
 string getNimbusConf();
 //获取STORM集群运行信息
 ClusterSummary getClusterInfo();
 //获取TOPOLOGY的运行状态信息
 TopologyInfo getTopologyInfo(1: string id);
 //获取TOPOLOGY对象信息
 string getTopologyConf(1: string id);
 StormTopology getTopology(1: string id);
 StormTopology getUserTopology(1: string id);
}

</div>

生成C++文件后,我们就可以对其接口进行调用,由于thrift c++框架是使用boost库实现的,必须安装boost库依赖。实现的代码如下:

#define HAVE_NETDB_H //使用网络模块的宏必须打开
#include "Nimbus.h"
#include "storm_types.h"

#include <string>
#include <iostream>
#include <set>

#include <transport/TSocket.h> 
#include <transport/TBufferTransports.h> 
#include <protocol/TBinaryProtocol.h> 
int test_storm_thrift()
{
 boost::shared_ptr<TSocket> tsocket(new TSocket("storm-nimbus-server", 6627));
 boost::shared_ptr<TTransport> ttransport(new TFramedTransport(tsocket, 1024 * 512)); //此处必须使用TFramedTransport
 boost::shared_ptr<TProtocol> tprotocol(new TBinaryProtocol(ttransport));
 try{
 //创建一个nimbus客户端对象
 NimbusClient client(tprotocol);
 //打开通道
  ttransport->open();

 ClusterSummary summ;
 std::string conf;
 //对STORM的RPC调用,直接获取信息,同步进行的。
 client.getNimbusConf(conf);
 client.getClusterInfo(summ);
 //关闭通道
 ttransport->close(); 
  }catch(TException &tx){ 
 printf("InvalidOperation: %s
", tx.what()); 
  }
}

</div>

以上代码就可以直接获取nimbus的配置和集群信息,其他接口以此类推。值得注意的是storm.thrift to C++生成的storm_types.h文件里其中operator < 函数都未实现,所以必须手动进行添加实现,否则编译会有问题。

此外,不仅仅C++可以实现STORM的控制,PHP和其他的语言也可以实现,只要thrift支持就OK。感兴趣的读者可以自己实现一下试试看。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C/C++ 中堆和栈及静态数据区详解
  • C/C++中运算符的优先级、运算符的结合性详解
  • C/C++ 中sizeof('a')对比详细介绍
  • C/C++中的typedef和#define详解
  • C/C++中宏定义(#define)
  • C/C++函数参数传递机制详解及实例
  • C/C++ 公有继承、保护继承和私有继承的对比详解
  • C/C++静态类和this指针详解及实例代码
  • C/C++中提高查找速度的小技巧
  • C/C++ ip地址与int类型的转换实例详解

相关文章

  • 2017-05-28C++ 关于 CMFCPropertyGridCtrl 的使用方法
  • 2017-05-28c++ 连接两个字符串实现代码 实现类似strcat功能
  • 2017-05-28C++统计中英文大小写字母、数字、空格及其他字符个数的方法
  • 2017-05-28二叉搜索树源码分享
  • 2017-05-28浅谈do {...} while (0) 在宏定义中的作用
  • 2017-05-28C++ 设置透明背景图片
  • 2017-05-28C++ 数据结构链表的实现代码
  • 2017-05-28C++11新特性之auto的使用
  • 2017-05-28C++你可能不知道地方小结
  • 2017-05-28C++实现数字转换为十六进制字符串的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言中堆空间的生成与释放详解
    • DSP中浮点转定点运算--定点数模拟浮点数运算及常见的策略
    • 关于C++为什么不加入垃圾回收机制解析
    • 深入解析C++的WNDCLASS结构体及其在Windows中的应用
    • C++程序的执行顺序结构以及关系和逻辑运算符讲解
    • C语言逻辑运算符知识整理
    • C++11新特性之智能指针(shared_ptr/unique_ptr/weak_ptr)
    • Win32应用程序(SDK)设计原理详解
    • 学编程难吗?多久能入门?
    • C++递归线性阵列搜索数字的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有