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

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

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

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

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

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

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

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

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

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

我这个项目选型的时候,使用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),未经作者授权同意,请勿转载。

相关推荐
小小的木头人6 分钟前
Windows Docker desktop 部署
运维·kafka
一晌小贪欢5 小时前
Python爬虫第10课:分布式爬虫架构与Scrapy-Redis
分布式·爬虫·python·网络爬虫·python爬虫·python3
摇滚侠9 小时前
Spring Boot3零基础教程,监听 Kafka 消息,笔记78
spring boot·笔记·kafka
摇滚侠12 小时前
Spring Boot3零基础教程,Kafka 小结,笔记79
spring boot·笔记·kafka
沐浴露z13 小时前
一篇文章详解Kafka Broker
java·分布式·kafka
pythonpioneer15 小时前
Ray Tune 强大的分布式超参数调优框架
分布式·其他
笨蛋少年派15 小时前
Hadoop High Availability 简介
大数据·hadoop·分布式
一只小透明啊啊啊啊17 小时前
Java电商项目中的概念: 高并发、分布式、高可用、微服务、海量数据处理
java·分布式·微服务
兜兜风d'1 天前
RabbitMQ 七种工作模式全解析
分布式·rabbitmq
ErizJ1 天前
IM|im-service
golang·kafka·go·im·心跳检测