程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C/C++完成對STORM運轉信息檢查及掌握的辦法

C/C++完成對STORM運轉信息檢查及掌握的辦法

編輯:關於C++

C/C++完成對STORM運轉信息檢查及掌握的辦法。本站提示廣大學習愛好者:(C/C++完成對STORM運轉信息檢查及掌握的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C/C++完成對STORM運轉信息檢查及掌握的辦法正文


本文所述法式實例重要完成在後端運用辦事器上及時獲得STORM集群的運轉信息和topology相干的提交和掌握。對此,經由過程對STORM UI和CMD源碼的剖析,得出可以經由過程其thrift接口挪用完成這些功效。先下載一個thrift庫停止編碼和裝置。關於thrift可以拜見這個處所。裝置完成後,從STORM源碼中將storm.thrift拷貝到thrift目次下。輸出:

hrift -gen cpp storm.thrift

會獲得一個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);
}

生成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()); 
  }
}

以上代碼便可以直接獲得nimbus的設置裝備擺設和集群信息,其他接口以此類推。值得留意的是storm.thrift to C++生成的storm_types.h文件裡個中operator < 函數都未完成,所以必需手動停止添加完成,不然編譯會有成績。

另外,不只僅C++可以完成STORM的掌握,PHP和其他的說話也能夠完成,只需thrift支撐就OK。感興致的讀者可以本身完成一下嘗嘗看。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved