librdkafka -- Apache Kafka C/C++ 客户端库
版权所有(c)2012-2019,Magnus Edenhill。
https://github.com/edenhill/librdkafka
librdkafka 是 Apache Kafka 协议的 C 库实现,提供生产者、消费者和管理客户端。它的设计考虑到了消息传递的可靠性和高性能,当前的数据对于生产者超过100 万 msgs/秒,对于消费者超过300万 msgs/秒。
librdkafka 根据 2-clause BSD 许可证获得许可。
特性
- 高级生产者
- 高级均衡 KafkaConsumer(要求 broker >= 0.9)
- 简单(传统)消费者
- 管理客户端
- 压缩:snappy,gzip,lz4,zstd
- SSL 支持
- SASL(GSSAPI/Kerberos/SSPI,PLAIN,SCRAM,OAUTHBEARER)支持
- Broker 版本支持:>= 0.8(参见 Broker 版本兼容性)
- 稳定的 C&C++ API(C 保证 ABI 安全)
- 统计指标
- Debian 软件包:Debian 和 Ubuntu 中的 librdkafka1 和 librdkafka-dev
- RPM 包:librdkafka 和 librdkafka-devel
- Gentoo 包:dev-libs/librdkafka
- Portable:运行在 Linux、OSX、Win32、Solaris、FreeBSD、AIX,...
文档
- Public API in C 头文件 和 C++ 头文件中的公共 API。
- INTRODUCTION.md中的介绍和手册。
- CONFIGURATION.md中的配置属性。
- STATISTICS.md中的统计指标。
- 经常问的问题。
注:主分支正在积极开发中,生产使用请使用最新版本。
安装
安装预构建的包
在 Mac OSX 上,使用 homebrew 安装 librdkafka:
$ brew install librdkafka
在 Debian 和 Ubuntu 上,从 Confluent APT 存储库安装 librdkafka,请参阅此处的说明,然后安装 librdkafka:
$ apt install librdkafka-dev
在 RedHat、CentOS、Fedora 上,从 Confluent YUM 存储库安装 librdkafka,这里有说明,然后安装 librdkafka:
$ yum install librdkafka-devel
在 Windows 上,在 Visual Studio 项目中引用 librdkafka.redist NuGet 包。
对于其他平台,请遵循以下源代码构建说明。
从源代码构建
要求
- GNU toolchain
- GNU make
- pthreads
- zlib-dev(可选,用于 gzip 压缩支持)
- libssl-dev(可选,用于 SSL 和 SASL SCRAM 支持)
- libsasl2-dev(可选,用于 SASL GSSAPI 支持)
- libzstd-dev(可选,用于 ZStd 压缩支持)
注意:生成器中的 ZStd 静态链接(需要 zstd >=1.2.1)允许在压缩帧头中编码原始大小,这将加速消费者。使用 STATIC_LIB_zstd=/path/to/libzstd.a ./configure --enable-static 启用静态 ZStd 链接。 MacOSX 示例:STATIC_LIB_zstd=$(brew ls -v zstd | grep libzstd.a $) ./configure --enable-static
构建
./configure # Or, to automatically install dependencies using the system's package manager: # ./configure --install-deps # Or, build dependencies from source: # ./configure --install-deps --source-deps-only make sudo make install
注:有关如何使用 Microsoft Visual Studio 在 Windows 上构建的说明,请参阅 README.win32。
注:请参阅 CMake 说明了解实验性 CMake 构建(不支持)。
在代码中使用
- 有关使用的代码,请参阅 Refer to the examples 目录
- 生产者:基本生产者,幂等生产者
- 消费者:基本消费者,阅读批量消息
- 性能测试仪
- 有关连接到基于 Apache Kafka 的云流数据服务的代码,请参考 examples GitHub repo。
- 用 -lrdkafka (C) 或 -lrdkafka++ (c++) 链接您的程序。
商业支持
Confluent Inc 提供商业支持。
社区支持
社区成员仅支持最后一个官方版本。
使用 GitHub Issues 提交文件错误报告,功能请求和问题。
欢迎来自Confluent Community slack #clients 频道或 irc.freenode.org#apache-kafka 频道的问题和讨论。(First edition: vz revised at 2019.08.11)
语言绑定
- C#/.NET: confluent-kafka-dotnet (based on rdkafka-dotnet)
- C++: cppkafka
- Common Lisp: cl-rdkafka
- D (C-like): librdkafka
- D (C++-like): librdkafkad
- Erlang: erlkaf
- Go: confluent-kafka-go
- Haskell (kafka, conduit, avro, schema registry): hw-kafka
- Lua: luardkafka
- Node.js: node-rdkafka
- OCaml: ocaml-kafka
- PHP: phpkafka
- PHP: php-rdkafka
- Python: confluent-kafka-python
- Python: PyKafka
- Ruby: Hermann
- Ruby: rdkafka-ruby
- Rust: rust-rdkafka
- Tcl: KafkaTcl
- Swift: Perfect-Kafka
librdkafka 用户
- kafkacat -- Apache Kafka 瑞士军刀
- Wikimedia's varnishkafka -- Varnish 缓存 web 日志生成器
- Wikimedia's kafkatee -- Kafka 多消费者与过滤和扇出
- rsyslog
- syslog-ng
- collectd
- logkafka -- 收集日志并发送到 Kafka
- redBorder
- Headweb
- Produban's log2kafka -- Web日志生产者
- fuse_kafka -- FUSE 文件系统层
- node-kafkacat
- OVH - AntiDDOS
- otto.de's trackdrd -- Varnish 日志阅读器
- Microwish 具有一系列Kafka实用程序,用于日志聚合、HDFS集成等。
- aidp -- kafka 使用者在数据处理框架中嵌入了 Lua 脚本语言
- Yandex ClickHouse
- NXLog -- 企业日志系统,Kafka input/output 插件。
- 大型未具名金融机构
- 和更多..
- 如果您正在使用 librdkafka,请告诉 我。
(First edition: vz revised at 2019.08.12)