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.