我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python: kafka-python

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python: kafka-python

背景

我们有个数据处理平台,有两个用 docker 运行的数据处理模块,分别是:data_api, 和 processor_api,故名思义:

data_api:      接受数据;
processor_api: 处理数据;

数据处理简单架构

Python: kafka-python版本差异导致的问题

踩坑经过

一直以来,这两个模块都是相安无事,稳定得很,然而在九月份因为更新 kafka 连接地址重启了容器,就出了问题。

只要用过 docker 的童鞋,都会对 docker logs 很熟悉,这次问题就是,因为 docker 的日志狂刷,按照默认的配置,日志会全部写入 json.log,大约一小时就能刷出 2G 的日志;

于是感觉特别的神奇,跑了快两年都没这问题,改下链接地址就有这么多日志输出,但是明明容器是正常在工作的。

排查半天一直找不出原因,就先配置了日志转储才免得磁盘告警。

今天看到那一堆日志时,发现很多 kafka 链接失败日志:

...
[W 181011 14:18:24 conn:625] <BrokerConnection node_id=18 host=xxxx/xxxx(马赛克) port=9093>: close() called on disconnected connection with error: ConnectionError: Unable to connect to any of the names for xxxx/xxxx(马赛克):9093
[E 181011 14:18:24 conn:289] Unable to connect to any of the names for xxxx/xxxx(马赛克):9093
....

之前以为是kafka架构的问题没去管,现在还是去谷歌一下,比较幸运地似乎找到一些原因和解决方案,

Python: kafka-python版本差异导致的问题

相关的链接:

https://github.com/dpkp/kafka...
https://github.com/dpkp/kafka...
大约的意思是因为查找域名失败导致这个bug触发了。

于是事不延迟,找台机器升级下 kafka-python 版本到 1.4.0 看看,升级完之后发现日志大幅度减少了。
Python: kafka-python版本差异导致的问题

Golang 视频大优惠,如不感兴趣略过

升级后的日志大约是升级前的九分之一了,这样来看很明显就是 1.3.5 的问题了。本想着这样就愉快的解决了,然而调整完就有 kafka 消费延迟的告警了,因为一直时不时有少量的消费延迟,所以也没在意。

直到第二天,累积的延迟量已经触发了第二级别的阈值了,消费延迟超过 30 万条了,立马上监控看看
Python: kafka-python版本差异导致的问题

lag 图就是延迟条数了,大约 11 号 18点的时候,也就是我们更新版本重启容器之后,在数据写入并没多大改变情况下,lag 数拼命增长,直接去到 80 万了,而且后面还在持续上涨;

首先排除因素就是 processor_api 消费速度,因为在更新前,一直是不会有延迟这么多的。

先回滚到旧版本看看,看到延迟立马消失了。
Python: kafka-python版本差异导致的问题
基本就能定位这个消费延迟的问题是版本导致的。

既然是消费延迟,那就得看消费速度监控了。刚才已经说了,消费速度是绝对够的,只是不知道为什么还是有延迟而已。

昨天到今天高延迟时的监控图图:
Python: kafka-python版本差异导致的问题

时间太长看不出什么问题,选小区间再看看:
Python: kafka-python版本差异导致的问题

这次看到消费图表,是断断续续的,而看消费者的日志,也看到时不时没有东西打印,仿佛消费完了那样。但是从延迟来看,数据应该是一直有的,不应该出现没有日志打印的情况。

对比下正常时候的消费速率图:
Python: kafka-python版本差异导致的问题

正常消费是连续的平稳的,不应该是断断续续有尖峰的,怀疑是 kafka 消费权重没有均匀等问题,找了 kafka 的童鞋,看能不能看到当前 kafka 消费者分配情况。

kafka 童鞋给了一个神奇的回复,说 kafka 正在 rebalance ...

Consumer group panama_opsys_detect is rebalancing
当 kafka 在 rebalancing 状态,是不能够消费的。这样看起来的话,应该是 kafka 在频繁的 rebalance 了。。

既然消费者进程和链接都没有变化,其实不应该短时间内频繁 rebalance 的。

因为前面的经验,所以现在都很大可能是版本问题了。

直接去 kafka-python 官网,找了较新的版本 1.4.2,更新之后,消费和日志都正常了。

欢迎加入Python ×××流:365534424
转载请注明来源: https://segmentfault.com/a/11...

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python: kafka-python

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python: kafka-python

背景我们有个数据处理平台,有两个用 docker 运行的数据处理模块,分别是:data_api, 和 processor_api,故名思义:data_api: 接受数据;processor_api: 处理数据;数据处理简单架构踩坑
2023-01-31

安装Kafka-Python

安装Kafka-Python下载Kafka-Python压缩包从https://github.com/mumrah/kafka-python/releases中下载最新的release包,此时最新的包为kafka-python-0.9.3.
2023-01-31

python连接kafka

https://blog.csdn.net/see_you_see_me/article/details/78468421https://zhuanlan.zhihu.com/p/38330574from kafka import Kafk
2023-01-31

python 操作kafka

https://pypi.python.org/pypi/pykafka最近项目中总是跟java配合,我一个写python的程序员,面对有复杂数据结构的java代码转换成python代码,确实是一大难题,有时候或多或少会留有一点坑,看来有空
2023-01-31

kafka-python安装实践

#网上看的教程都很麻烦,也不知道为什么,反正我是pip install setuptoolspip install kafka-python就OK了setuptools是kafka-python的依赖库
2023-01-31

python对kafka的基本操作

from kafka import KafkaProducerfrom kafka import KafkaConsumerfrom kafka.structs import TopicPartitionimport timebootstr
2023-01-31

Python脚本消费kafka数据

kafka简介(摘自百度百科)一、简介:详见:https://blog.csdn.net/Beyond_F4/article/details/80310507二、安装详见博客:https://blog.csdn.net/beyond_f4/
2023-01-31

Kafka系列3-python版本pro

直接上代码了:# -*- coding: utf-8 -*-''' 使用kafka-Python 1.3.3模块'''import sysimport timeimport jsonfrom kafka import KafkaPro
2023-01-31

Python中Kafka的作用是什么

本篇文章为大家展示了Python中Kafka的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,
2023-06-14

python连接kafka的方法是什么

要连接Kafka,可以使用Kafka-Python库。以下是一个简单的示例代码,演示如何连接Kafka并发送消息:```pythonfrom kafka import KafkaProducer, KafkaConsumer# 连接Kafk
2023-09-14

Python使用Kafka处理数据的方法详解

Kafka是一个分布式的流数据平台,它可以快速地处理大量的实时数据。在Python中使用Kafka可以帮助我们更好地处理大量的数据,本文就来和大家详细讲讲具体使用方法吧
2023-05-16

Python如何调用kafka进行构建与应用

本篇文章为大家展示了Python如何调用kafka进行构建与应用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。近期遇到一个需求就是我们需要把当前比较耗费资源的接口开发成异步通讯的机制,简单来说就是有
2023-06-16

python怎么消费kafka数据并写入数据库

要使用Python消费Kafka数据并写入数据库,您可以遵循以下步骤:安装kafka-python库:使用pip安装kafka-python库,它是一个用于与Kafka交互的Python库。可以使用以下命令进行安装:pip install
2023-10-21

python怎么结合shell自动创建kafka的连接器

这篇“python怎么结合shell自动创建kafka的连接器”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python怎么
2023-06-30

python怎么实现消费kafka数据并写入数据库

要消费Kafka数据并将其写入数据库,可以按照以下步骤进行操作:1. 首先,确保已经安装了kafka-python库,可以使用以下命令安装:```pip install kafka-python```2. 导入所需的模块:```python
2023-09-14

Python 检测系统时间,k8s版本,redis集群,etcd,mysql,ceph,kafka

线上有一套k8s集群,部署了很多应用。现在需要对一些基础服务做一些常规检测,比如:系统时间,要求:k8s的每一个节点的时间,差值上下不超过2秒k8s版本,要求:k8s的每一个节点的版本必须一致redis集群,要求:1. 查看cluster
2023-01-31

Kafka之kafka-topics.sh如何使用

本文小编为大家详细介绍“Kafka之kafka-topics.sh如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Kafka之kafka-topics.sh如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知
2023-07-05

【Kafka】Kafka Stream简单使用

一、实时流式计算 1. 概念 一般流式计算会与批量计算相比较。在流式计算模型中,输入是持续的,可以认为在时间上是无界的,也就意味着,永远拿不到全量数据去做计算。同时,计算结果是持续输出的,也即计算结果在时间上也是无界的。流式计算一般对实
2023-08-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录