Windows系统编译Qt使用的kafka(librdkafka)

Windows系统编译Qt使用的kafka(librdkafka)

去年,由于Qt项目的需要,需要使用到kafka,于是自己的编译了windows上的kafka库,这个编译的过程中真的是,一步一个坑,网上的网友留下的资料也比较久远了,编译参考也导致失败了很多次。不过最终经过一次一次的尝试最后成功了,Qt项目也成功调用了kafka。项目也成功发布了。

现在有时间了,还是决定把当时的编译过程记录下来,防止以后需要的时候,再次用到。小时候老师说,好记性不如烂笔头,还是非常有道理的。

之所以选择Kafka,主要的考虑是:

Kafka是一个开源的高吞吐量的分布式消息中间件,对比于其他缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。

1) 解耦和扩展性:项目开始的时候,并不能确定具体需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能力。

1) 冗余:可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费到,供多个毫无关联的业务使用。

1) 健壮性:消息队列可以堆积请求,所以消费端业务即使短时间死掉,也不会影响主要业务的正常进行。

1) 异步通信:很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。

我这个项目选型的时候,使用librdkafk主要的考虑的是:

librdkafka动态库及开发文档是专为Windows平台开发者提供的强大工具,其核心功能是为Windows环境下的Kafka应用开发提供高效的动态库和详细的API使用文档。

librdkafka动态库是基于Apache Kafka客户端库的C语言实现,为开发者提供了丰富的API接口,以实现对Kafka集群的连接、消息生产、消息消费等功能。以下是项目的关键技术特点:

技术特点:

1、跨平台支持:虽然本项目主要面向Windows平台,但librdkafka本身支持多种操作系统,如Linux、macOS等。
2、高并发性能:librdkafka采用多线程、异步处理机制,确保了高并发环境下的性能表现。
3、易用性:通过提供详细的API开发文档和示例代码,使开发者能够快速上手。
4、稳定性:librdkafka的稳定性和可靠性得到了广泛的认可,适用于生产环境。

技术应用场景
librdkafka动态库及开发文档在以下场景中表现出色:

1、实时数据处理:利用Kafka的高吞吐量和低延迟特性,实现实时数据流的处理和分析。
2、分布式消息系统:构建高可用、高并发的分布式消息系统,支撑企业级应用。
3、微服务架构:在微服务架构中,利用librdkafka实现服务间的异步通信。
4、日志收集:利用Kafka进行日志收集和集中处理,提高系统监控和维护效率。


项目特点
以下是librdkafka动态库及开发文档的几个显著特点:

即插即用:预编译的动态库使开发者无需繁琐的编译过程,直接集成到项目中。
丰富的文档:详细的API开发文档和示例代码,帮助开发者快速掌握librdkafka的使用方法。
高度可定制:librdkafka支持多种配置选项,满足不同应用场景的需求。
社区支持:作为一个活跃的开源项目,librdkafka拥有庞大的社区和丰富的资源,为开发者提供强大的技术支持。

本专栏,接下来的几篇文章,准备更新,windows系统中编译kafka,供Qt项目调用。

一、环境准备

相关的环境准备:

1、VS2017

由于需要使用vs作为编译器,来编译相关的库和kafka库(librdkafka),所以我们的电脑需要安装vs,我是用的是vs2017。

2、Qt

Qt需要配置msvc的编译器。我的Qt的版本是Qt5.14

相关的配置安装,大家可以参考我之前的文章:

Qt 5.14安装(配置MSVC 2017)

3、windows环境

我的电脑系统是windows 11 64位的操作系统。

二、kafka的编译流程

编译librdkafka还需要其他的依赖库,这些依赖的的库最好也通过同一个版本的vs编译一次。所以,如果你使用的也是vs2017,这些相关的库,你最好也使用vs2017来编译。

需要下载编译的主要内容如下:

1、librdkafka

2、perl

3、openssl

4、zlib

5、curl

6、zstd

总体的先后顺序是下面这样的:

1、perl环境配置

2、openssl的安装:

3、编译curl

4、编译zlib

5、编译zstd

6、编译librdkafka

得先把前面的环境配置完成,最后一步才是编译librdkafka。

三、perl环境配置

perl是一个脚本解释器,在这里我安装的是ActivePerl:

ActivePerl一个perl脚本解释器。其包含了包括有 Perl for Win32、Perl for ISAPI、PerlScript、Perl Package Manager四套开发工具程序,可以让用户编写出适用于unix,windows,linux系统的CGI程序来。

1、我选择安装的是ActivePerl 5.28.1,为什么选择这个,因为我之前安装的是ActiveState Perl环境,但是后面编译openssl的时候会报错,所以我替换成了ActivePerl,你只要配置这个安装环境就行了。参考连接如下:

安装ActivePerl 5.28.1

2、配置Perl(ActiveState)环境的连接,我也放上来,仅供参考,大家编译librdkafka的时候,别安装这个就行:

安装Perl(ActiveState)-仅供其他查看

四、Nasm的安装(这一步可以跳过

x86汇编语言编译器:Netwide Assembler (简称 NASM)是一款基于x86架构的汇编反汇编软件。

安装NASM

五、openssl的安装:

openssl是一个功能丰富且自包含的开源安全工具箱。

VS2017编译openssl3.0.8

六、编译curl

cURL是一个利用URL语法在命令行下工作的文件传输工具。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。

VS2017编译curl

七、编译zlib

zlib是一个开源的解压缩库,广泛应用在各种软件中,如FFmpeg、OpenSSH等。

vs2017编译zlib1.2.11

八、编译zstd

zstd (Zstandard)是一种开源的数据压缩算法和压缩库,旨在提供高性能的数据压缩和解压缩功能。

编译zstd

九、编译librdkafka

VS2017编译librdkafka 2.1.0

十、使用libkaafka

Qt调用librdkafka

本文原创作者:冯一川(csdn:ifeng12358),未经作者授权同意,请勿转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冯一川

谢谢老板对我的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值