Kafka是一種高吞吐量的分布式發布訂閱消息系統,它可以處理消費者規模的網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。 這些數據通常是由於吞吐量的要求而通過處理日志和日志聚合來解決。 對於像Hadoop的一樣的日志數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行加載機制來統一線上和離線的消息處理,也是為了通過集群機來提供實時的消費。
下面講解kafka的c++客戶端編譯鏈接過程。
1. 在下面的網址可以找到各種語言的客戶端地址:https://cwiki.apache.org/confluence/display/KAFKA/Clients#Clients-C/C++
可以找到c/c++客戶端地址:https://github.com/edenhill/librdkafka
2. 下載解壓后,在目錄下執行:./configure
3. 報錯如下:
########################################################### ### Configure failed ### ########################################################### ### Accumulated failures: ### ########################################################### __sync_32 (HAVE_ATOMICS_32) module: atomics action: disable reason: compile check failed: CC: CC flags: gcc -g -O2 -fPIC -Wall -Werror _mkltmp30679.c -o _mkltmp30679.c.o : /tmp/ccUxfUe4.o: In function `foo': /home/xumj/support/kafka/librdkafka-master/_mkltmp30679.c:4: undefined reference to `__sync_add_and_fetch_4' collect2: ld 返回 1 source: #include <inttypes.h> int32_t foo (int32_t i) { return __sync_add_and_fetch(&i, 1); } __sync_64 (HAVE_ATOMICS_64) module: atomics action: disable reason: compile check failed: CC: CC flags: gcc -g -O2 -fPIC -Wall -Werror _mkltmp30720.c -o _mkltmp30720.c.o : /tmp/ccyNHxii.o: In function `foo': /home/xumj/support/kafka/librdkafka-master/_mkltmp30720.c:4: undefined reference to `__sync_add_and_fetch_8' collect2: ld 返回 1 source: #include <inttypes.h> int64_t foo (int64_t i) { return __sync_add_and_fetch(&i, 1); }
請使用下面的命令執行:
CFLAGS="-O2 -march=i686" ./configure --cc=gcc --cxx=g++ --arch=i686 --mbits=32 --prefix=/home/test/support/kafka/install
4. 執行make
5. 執行make install.
