首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏分布式系统进阶

    Librdkafka的Transport层

    Librdkafka要和kakfa集群通讯, 网络操作肯定是少不了的,这就需要封装transport数据传输层; Librdkafka毕竟是SDK, 作为访问kafka集群的客户端,不需要支持大并发, 在网络IO模型 上选用了 poll; IO模型确定后, 发送和接收数据必不可少的缓冲区buffer, 我们前面已经介绍过, 请参考Librdkafka的基础数据结构 3 -- Buffer相关 ; 以上介绍的 librdkafka中的poll模型和buffer, 完全可以独立出来, 用在其他项目上, 作者封装得很好; Librdkafka与kafka broker间是tcp连接, 在接收数据后就涉及到一个拆包组包的问题 if ((size_t)r < len) break; } return sum; } ---- Librdkafka

    1.6K10发布于 2018-09-05
  • 来自专栏闲余说

    librdkafka 安装与使用

    安装 librdkafka git clone https://github.com/edenhill/librdkafka.git ./librdkafka cd ./librdkafka . /configure --install-deps --source-deps-only make sudo make install 使用 librdkafka librdkafka 中自带 examples 19092"; std::string errstr; std::string topic_str="test_mq"; 编译 consumer.cpp 和 producer.cpp $ cd ~/librdkafka examples/cpp $ g++ -o consumer consumer.cpp -lrdkafka++ -lrdkafka -lstdc++ -lbaas_c_style_interface -I~/librdkafka -I~/librdkafka/include -L~/librdkafka/lib 运行 producer 和 consumer (控制台交互式的程序,需要开两个窗口) $ cd ~/librdkafka

    2.9K10编辑于 2022-08-19
  • 来自专栏分布式系统进阶

    Librdkafka的各种task处理

    上一节我们介绍了Librdkafka中的任务处理队列的相关操作, 这一节我们介绍一下放入这个队列中的各种任务(也可以叫event, 也可以叫operator), 也就是各种不同类型的operator 具体的 callback) res = callback(rk, rkq, rko, cb_type, opaque); return res; } ---- Librdkafka

    86030发布于 2018-09-05
  • 来自专栏分布式系统进阶

    Librdkafka的操作处理队列

    Librdkafka将与kafka broker的交互,内部实现的一些操作,都封装成operator结构, 然后放入操作处理队列里, 统一处理; 这个队列其实也是一个线程间通讯的管道; 围绕这个队列的操作 rd_kafka_queue_new0(rk, rktp->rktp_fetchq); rd_kafka_toppar_destroy(s_rktp); return result; } ---- Librdkafka

    1.8K20发布于 2018-09-05
  • 来自专栏分布式系统进阶

    Librdkafka对kafka topic的封装

    上一节我们讲了librdkakfa对topic-partition的封装, 任何一个partition都必须要属于一下topic; 我们这节就来分析一上librdkafka对topic的封装 ---- rd_kafka_topic_t,定义:typedef struct rd_kafka_topic_s rd_kafka_topic_t;,这是个空定义没有现实, 其实就是rd_kafka_itopic_s, 这个类型主要是面向librdkafkalibrdkafka内部使用rd_kafka_itopic, 它也有自己的引用计数, 有点罗嗦啊~ 定义: struct rd_kafka_itopic_s { // 定义成tailq rd_kafka_toppar_destroy(s_rktp_ua); /* from get() */ } 关于metadata相关的操作, 我们介绍metadata时再来分析 ---- Librdkafka

    1.5K20发布于 2018-09-05
  • 来自专栏分布式系统进阶

    Librdkafka对Kafka Message的封装和相关操作

    rd_kafka_message2msg (rd_kafka_message_t *rkmessage) { return (rd_kafka_msg_t *)rkmessage; } 发送kafka message前的审计 librdkafka rd_kafka_topic_rdunlock(rkt); rd_kafka_toppar_destroy(s_rktp_new); /* from _get() */ return 0; } ---- Librdkafka

    2.3K30发布于 2018-09-05
  • 来自专栏分布式系统进阶

    Librdkafka的基础数据结构 1 --- 队列

    Librdkafka用纯C写成,作者在C API基础上作了C++的简单封装; 说到C, 自然里面离不开大量的指针操作, 内存操作, 引用计数等等, 作者一一为我们作了实现; 基础数据结构里面也说到了很多 cmp(match, elem)) return (void *)elem; } return NULL; } ---- Librdkafka

    63720发布于 2018-09-05
  • 来自专栏分布式系统进阶

    Librdkafka的基础数据结构 4 --- String和ByteArray

    memcpy((void *)kbytes->data, bytes, len); } return kbytes; } ---- Librdkafka

    71630发布于 2018-09-05
  • 来自专栏分布式系统进阶

    Librdkafka的基础数据结构 3 -- Buffer相关 1

    slice->start && seg->seg_absof + slice->rof <= slice->end); return 0; } ---- Librdkafka

    93820发布于 2018-09-05
  • 来自专栏分布式系统进阶

    Librdkafka的基础数据结构 3 -- Buffer相关 2

    我们在前面的Librdkafka的基础数据结构 3 -- Buffer相关 1介绍了Buffer和其组成segment,只读映射slice的相关定义和操作; 这一篇我们来介绍librdkafka中rd_buf_t rd_atomic32_t rkbq_cnt; rd_atomic32_t rkbq_msg_cnt; } rd_kafka_bufq_t; 提供出队,入队, 删除等操作 ---- Librdkafka

    81930发布于 2018-09-05
  • 来自专栏分布式系统进阶

    Librdkafka对Kafka Metadata的封装和操作

    broker或某一个topic的metadata信息发生变化时, 集群的Controller 都会感知到作相应的状态转换, 同时把发生变化的新的metadata信息广播到所有的broker; 下面我们介绍一下librdkafka } if (cnt > 0) { rd_kafka_metadata_cache_propagate_changes(rk); } } --- ### [Librdkafka

    2.5K10发布于 2018-09-05
  • 来自专栏蓝天

    Kafka C++客户端库librdkafka笔记

    前言 librdkafka提供的异步的生产接口,异步的消费接口和同步的消息接口,没有同步的生产接口。 2.  Events are a generic interface for propagating errors, statistics, logs, etc  * from librdkafka

    5.7K30发布于 2018-08-02
  • 来自专栏后端开发技术

    用 C 语言操作 Kafka :基于 librdkafka 的开发指南

    一、安装 librdkafka 客户端库librdkafka 是一个高性能的 C/C++ Kafka 客户端库,提供了可靠的消息传递机制和丰富的功能。 要使用 librdkafka,需要将其安装到系统中。 安装 librdkafka 的步骤:克隆 librdkafka 仓库:使用 Git 克隆 librdkafka 的代码仓库到本地。 librdkafka 的 Releases 页面 (https://github.com/edenhill/librdkafka/releases) 选择一个稳定的版本】。 例如,要将 librdkafka 安装到 /opt/librdkafka 目录,可以使用以下命令:. 示例程序和参数:在 librdkafka 的 examples 目录下,包含了一些示例程序,可以帮助快速了解如何使用 librdkafka

    90500编辑于 2025-04-25
  • 来自专栏分布式系统进阶

    Librdkafka对kafka协议的封装和Features检测

    流中这样的格式拆包非常简单明了; 具体协议部分,分为协议头和内容两部分, 具体的协议我在之前的kafka 源码分析系列文章的Kafka的Request和Response中有介绍; Kafka官网的协议介绍; Librdkafka 所在文件: src/rdkafka_proto.h 目前官方有Msg Version v0, v1, v2三种格式, 具体可参考:# A Guide To The Kafka Protocol Librdkafka [] Kafka Features 通过KafkaApiRequest我们可以知道broker目前所支持的协议, 不要忘了,我们的client sdk也是在向前演进的,也有一个协议兼容和支持的问题; Librdkafka fails) features |= rd_kafka_feature_map[i].feature; } return features; } ---- Librdkafka

    1.1K20发布于 2018-09-05
  • 来自专栏容器计算

    【Go】confluent-kafka-go的编译问题

    最近在给组里用到的镜像瘦身,也就是用一个更轻一点的基础镜像来重新构建服务的镜像,然后发现我们的项目 indirect 依赖到了 confluent-kafka-go,然后这玩意是需要在本地环境用到 librdkafka variable No package 'rdkafka-static' found 按照报错信息,就是说有个环节变量配置的有问题,先看看本地发现这个环境变量是空的,然后谷歌了一下,发现都是说本地没有安装 librdkafka https://github.com/edenhill/librdkafka 因为编译的时候不希望在本地编译机安装乱七八糟的东西,所以选择了用容器了编译,那么就得保证你的容器环境里有安装这个东西了, 经过一番折腾之后,参考 librdkafka github 仓库编译的方法,个人用下面这个方法,来把依赖安装到容器里。 https://packages.confluent.io/rpm/6.1/archive.key && yum clean all && yum makecache && yum install librdkafka-devel

    1.8K30发布于 2021-05-27
  • 来自专栏Hadoop实操

    0500-使用Python2访问Kerberos环境下的Kafka

    1.安装librdkafka依赖包,该依赖包为操作系统的依赖包 [root@cdh4 ~]# yum install -y librdkafka-devel python-devel ? 注意:安装的librdkafka依赖包的版本需要>=0.11.5,librdkafka是C语言实现的Apache Kafka高性能客户端,为生产和使用Kafka提供高效可靠的客户端。 2. 2.关于Kafka支持的属性配置可以参考如下地址 https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md ? 2.如果使用confluent-kafka-python访问Kerberos环境下的Kafka,需要安装librdkafka及其依赖包,然后使用PyPi命令通过源码的方式安装。

    1.2K10发布于 2019-11-27
  • 来自专栏Rust语言学习交流

    【Rust日报】2022-03-19 过程宏内幕详解:Part 1

    的异步Apache Kafka Client 对于InfluxDB的未来核心InfluxDB IOx,我们使用Apache Kafka来给数据排序: 到目前为止,我们依赖于Rust-rdkafka,它为Librdkafka 提供了异步绑定,Librdkafka是一个用C写的kafka client。 以下是一些原因: 复杂性:Librdkafka是一个复杂的库,具有我们不需要或想要的大量功能,并且支持各种Kafka版本,而我们基本上运行最新的。

    75620编辑于 2022-04-18
  • 来自专栏分布式系统进阶

    Librdkafka用于kafka topic-partition的相关数据结构和操作

    rd_kafka_toppar_set_fetch_state(rktp, RD_KAFKA_TOPPAR_FETCH_OFFSET_WAIT); } ---- Librdkafka

    1.9K10发布于 2018-09-05
  • 来自专栏seth-shi的专栏

    安装 php-rdkafka 扩展并使用 Kafka 记录日志

    /www/server/php/71/etc/php.ini ### 从上面输出找到 php-config 目录: /www/server/php/71/bin/php-config # 先编译 librdkafka wget -c https://github.com/edenhill/librdkafka/archive/v0.11.0.tar.gz tar xvzf v0.11.0.tar.gz cd librdkafka , php_rdkafka.dll librdkafka.dll丢进PHP安装根目录,php_rdkafka.dll丢进PHP安装目录下的ext 然后在php.ini加入 php_rdkafka.dll 运行php -m如果出现下面的警告,那就是librdkafka.dll没有放对目录,参考此项https://github.com/arnaud-lb/php-rdkafka/issues/152 Warning version (runtime) => 0.9.4 # librdkafka version (build) => 0.9.4.0 开始使用 ############################

    1.4K10编辑于 2023-12-18
  • 来自专栏charlieroro

    支持remote write和exemplar的prometheus服务

    库,但不支持在Windows系统上安装librdkafka。 安装步骤如下: git clone https://github.com/edenhill/librdkafka.gitcd librdkafka. /configuremakesudo make install 环境上运行时可以考虑将librdkafka库编译到镜像中。 如使用Alpine镜像时执行apk add librdkafka-dev pkgconf安装即可。 镜像编译 如上所述,如果需要在需要Alpine Linux中进行编译,则需要在在Dockerfile中添加如下内容: RUN apk add git && apk add librdkafka-dev

    1.2K10发布于 2021-10-09
领券