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。感興致的讀者可以本身完成一下嘗嘗看。