原创 python通過thrift實現向flume發送數據

Apahce Thrift是FaceBook實現的一種高效的、支持多種語言的遠程服務調用的框架。Source是負責接收數據到Flume Agent的組件,可以從其他系統中接收數據。Flume有Java Thrift RPC客戶端,是FL

原创 c++通過Thrift向flume發送數據

在flume源碼包apache-flume-1.7.0-src\flume-ng-sdk\src\main\thrift\flume.thrift 目錄下,有Flume的Thrift接口定義(IDL)語言,通過該Thrift可以生成客戶端

原创 thrift文件詳解

本文介紹如何在一個.thrift文件中使用thrift. 首先要注意的是, .thrift文件支持標準shell註釋,這使得thrift文件可執行,

原创 libevent實現的一個簡單的服務器和客戶端程序

關於libevent的大致介紹,可以參考博文 libevent學習筆記 此處使用上述方法實現一個簡單的服務器與客戶端程序: server.cpp: #include <stdio.h> #include <string.h>

原创 生產環境中的flume海量數據傳輸性能優化

上一篇文章,記flume部署過程中遇到的問題以及解決方法,記錄了flume在運行過程中遇到的問題的解決方法,本文將記錄在項目調試過程中對flume性能的優化。 再放上項目的拓撲結構圖: 實際生產環境中,agent層的機器大約

原创 thrift網絡通訊架構解析與實例驗證

Thrift實現了C/S模式,通過代碼生成工具將接口定義文件生成服務器端和客戶端代碼(可以爲不同語言),從而實現服務端和客戶端跨語言的支持。用戶在Thirft描述文件中聲明自己的服務,這些服務經過編譯後會生成相應語言的代碼文件,然後用戶實

原创 c++11多線程編程(四):數據共享和競爭條件

在多線程環境中,線程間的數據共享很簡單,但是在程序中這種簡單的數據共享可能會引起問題,其中一種便是競爭條件。什麼是競爭條件? 競賽條件是發生在多線程

原创 c++11多線程編程(三):仔細地將參數傳遞給線程

要將參數傳遞給線程的可關聯對象或函數,只需將參數傳遞給std::thread構造函數。 默認情況下,所有的參數都將複製到新線程的內部存儲中。 看一個例子:給線程傳遞單個參數 #include <iostream> #include <st

原创 c++11多線程編程(六):事件處理

本節討論在多線程環境下的事件處理。 有時,線程需要等待某事件發生,比如一個條件變爲true,或者某任務被另一個線程完成。 例如,我們創建一個基於網絡

原创 c++11多線程編程(二):joining和detaching 線程

Joining線程 線程一旦啓動,另一個線程可以通過調用std::thread對象上調用join()函數等待這個線程執行完畢std::thread th(funcPtr); th.join(); 看一個例子主線程啓動10個工作線程,啓動

原创 c++11多線程編程(一):創建線程的三種方法

c++11線程庫原始的c++標準僅支持單線程編程,新的c++標準(c++11或c++0x)於2011年發佈,引入了新的線程庫。 編譯器要求 Linux: gcc 4.8.1 (完全併發支持) Windows: Visual Studio

原创 c++11多線程編程(五):使用mutex修復競爭

這節我們討論怎樣使用mutex鎖保護多線程環境中的共享數據來避免競爭條件 爲了修復多線程環境中的競爭條件,我們需要mutex互斥鎖,在修改或讀取共享

原创 cmake學習筆記

一、cmake常用變量和常用環境變量 1、cmake變量引用形式: cmake使用${}進行變量的引用,在if語句中直接使用變量名而不需要通過${}取值。 2、cmake自定義變量的方式: 分爲顯式定義和隱式定義,例如PROJECT指令

原创 c語言使用librdkafka庫實現kafka的生產和消費實例

關於librdkafka庫的介紹,可以參考kafka的c/c++高性能客戶端librdkafka簡介,本文使用librdkafka庫來進行kafka的簡單的生產、消費 一、producer librdkafka進行kafka生產操作的大

原创 epoll實現的多人聊天室程序

關於epoll的介紹此處不贅述,可以參考這篇博文 linux epoll詳解及使用方法概述 這裏給出一個epoll實現的聊天室程序,實現羣聊功能,分爲server端和client端代碼: server.cpp: //server.cpp