惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
N
News and Events Feed by Topic
A
About on SuperTechFans
aimingoo的专栏
aimingoo的专栏
The Cloudflare Blog
H
Heimdal Security Blog
Schneier on Security
Schneier on Security
Engineering at Meta
Engineering at Meta
Google Online Security Blog
Google Online Security Blog
宝玉的分享
宝玉的分享
AI
AI
The GitHub Blog
The GitHub Blog
MongoDB | Blog
MongoDB | Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
The Last Watchdog
The Last Watchdog
T
Troy Hunt's Blog
S
Security @ Cisco Blogs
H
Hacker News: Front Page
F
Fortinet All Blogs
博客园_首页
S
Secure Thoughts
N
News and Events Feed by Topic
P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
Spread Privacy
Spread Privacy
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Hugging Face - Blog
Hugging Face - Blog
Hacker News: Ask HN
Hacker News: Ask HN
C
CXSECURITY Database RSS Feed - CXSecurity.com
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
L
LINUX DO - 最新话题
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Schneier on Security
Know Your Adversary
Know Your Adversary
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Scott Helme
Scott Helme
P
Privacy & Cybersecurity Law Blog
S
Securelist
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
O
OpenAI News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
PCI Perspectives
PCI Perspectives
L
LangChain Blog
雷峰网
雷峰网
Security Archives - TechRepublic
Security Archives - TechRepublic
V2EX - 技术
V2EX - 技术

Kafka

请问一下,多节点消费 kafka 如何做到串行消费 Kafka 消息处理冲突问题 - V2EX kafka king 陆续也快有 100 个 star 了,虽然很少,但是也是对我的认可,感谢大家 - V2EX 求助一个 zookeeper 配置 acl, kafka 是否需要做相关修改的问题 - V2EX 2023 年基于 Kafka 做重试队列的最佳实践? - V2EX kakfa 生产者的 ack=all 的参数会受到 broker 的最小同步副本参数的影响吗 - V2EX kafka 的 producer 和 broker 的关系是什么? - V2EX kafka 性能问题: kafka 传递海量小数据的时候,需要合并数据发送吗 - V2EX 有无 kafka 八股文或者书籍推荐 - V2EX 有什么好用的 kafka 桌面客户端? - V2EX kafka Kraft 模式增加投票节点配置后启动报错 - V2EX kafka-console-consumer.sh 同时读取某个 topic 的所有 partition 能实现吗? - V2EX 请教一个使用 HAProxy 代理访问 kafka 集群的问题 - V2EX kafka stream 拓扑的几个疑问 在生产环境中,向 kafka 发送图片消息是否合适 - V2EX kafka 消费者平滑退出一般是怎么做的? 请教 kafka 独立消费者 如果崩溃了如何获取 offset? - V2EX 关于 kafka 丢数据 - V2EX 如何获取 KRaft Kafka 的 controller leader - V2EX 如何从 Kafka 消费的数据中取最大值存储? - V2EX Kafka Stream 拓扑结构可视化 - V2EX Kafka 数据同步 - V2EX 请教一下 kafka group 数量比较大对 kafka 性能影响大吗 - V2EX 为什么很多场景数据先写入 kafka 再写入 elastic,而不是直接写 elastic? - V2EX Golang Kafka Writer 消息被截断 - V2EX kakfa producer 发消息会堵塞么? kakfa 的 producer 阻塞该怎么查 - V2EX 请问一下实际业务中, kafka 的消费者组一般应用于什么场景? - V2EX kafka 多线程消费是否必须手动提交 offset/partion 才能避免竞争 - V2EX 求一个基于 kafka 的消息消费框架 - V2EX kafka 如何实现每 10 秒拉一次数据? - V2EX 蹲一个 Kafka 大神,新增 partition 没有引起消费组的 rebalance,偶现 - V2EX kafka 如何知道生产者的 IP? - V2EX Python 消费 ka-f-a-k 时无限挂起,如何定位原因 - V2EX Python 消费 kafka 时无限挂起,如何定位原因 - V2EX 关于 PHP Rdkafka 消费者性能讨论 - V2EX xshell 无法使用 kafka 命令行发送消息到 topic - V2EX kafka 非常非常非常难用 - V2EX 有什么办法可以让 kafka 消费者走代理么? - V2EX 如何在消息消费者多实例(Cluster)的情况下保证应用级别的精确分发? - V2EX 各位大佬, zookeeper 加了 digest , kafka 要怎么改配置啊? - V2EX Kafka 需不需要设置安全认证 - V2EX springboot 集成 kafka 广播式消费 - V2EX kafka 疑惑,为什么随着 topic 增加,性能会急剧下降 - V2EX 求 kafka 的 docker 镜像? - V2EX 有老哥知道怎么给 kafka 某个 topic 创建消费组 - V2EX 准备写个基于 kafka 的延迟队列, 有感兴趣的吗 - V2EX 问一个消息队列的问题 - V2EX 有同学在生产环境里用过 Apache Kafka 么?能否分享一下你踩过的坑? - V2EX Kafka 内存陡然降低问题 - V2EX
[Kafka] 求助, 同一个服务如何组播消费 kafka 某个 topic 的消息呢? - V2EX
BBCCBB · 2020-08-21 · via Kafka

这是一个创建于 2124 天前的主题,其中的信息可能已经有所发展或是发生改变。

我现在用的是启动的时候动态生成 groupId, 比如 name + uuid 的方式

但是这样重启后就会导致原来的 consumerGroup 对应的实例都被销毁了.但 kafka 里依然存在原来的 consumerGroup, 监控上看已经被销毁的 consumerGroup 也会发现堆积越来越严重, 有谁知道正确的使用姿势吗??

不胜感激

😢

useben

1

useben      2020 年 8 月 21 日

生成唯一 groupId, 存到文件, 启动时读文件, 有就用原来的, 没有再生成写到文件...

BBCCBB

2

BBCCBB      2020 年 8 月 21 日

@useben 这个在固定机器上是可以的, 但我们这里 docker 镜像每次都不知道到哪个机器上了. 😢

SingeeKing

3

SingeeKing      2020 年 8 月 21 日 via iPhone

环境变量?

hustmisa

4

hustmisa      2020 年 8 月 21 日

首先 consumer 的使用业务需求是什么,新启动的 groupId 对启动期间的数据是否可以丢弃?
如果可以丢弃 kafka 配置 retention 很短就可以了,这样不会堆积;如果不能丢弃,配置 retention 长一些这样重启换 groupId 也能续接数据(大概是你现在的方式),但是就不要频繁换 groupId 了啊。我是这么理解的不知道对不对

BBCCBB

5

BBCCBB      2020 年 8 月 21 日

@SingeeKing 都是同一个服务, 不同实例,这个不方便给每个实例加环境变量, 哈哈

@hustmisa 可以丢弃, 因为应用上有 ack 超时重试机制, 要命的是重启后老的 groupId 不会自动心跳超时消失, 会在监控上看到消息不断堆积. 其实我想实现的就是 rocketmq 的广播的功能.. 但我们使用 kafka.

mosesyou

6

mosesyou      2020 年 8 月 21 日

为什么用唯一或者固定的 groupId 不行

zardly666

8

zardly666      2020 年 8 月 21 日

用 redis 做一个类似选 ID 的东西,服务启动份数等于 ID 份数。

for (int i = 0; i < 启动份数; i++) {
if (redisUtil.setnx( + i, “lockthing”,time )) {
bucketConfig.setConsumeZsetBucketNum(i);
log.info("此实例的消费者为" + i);
break;
}
}

服务启动的时候,第一个服务拿到 consumerId+1 ;
第二个服务拿到 consumerId+2 ;
这样,就复用几个了吧。

zardly666

9

zardly666      2020 年 8 月 21 日

代码没删干净,大概意思就是服务启动动态去拿自己所属的 consumer

wisej

10

wisej      2020 年 8 月 21 日 via Android

另一种思路,服务同一个 groupid,分发由服务自己来做(拿到服务其它实例的 ip )

另外旧 cg 堆积会有什么负面影响么?除了消息会冗余地保存,直到 retention 设置的时间被清除

sonice

11

sonice      2020 年 8 月 21 日

想多了,consumerGroup 堆积能有多少,起停一次多一个,也不会有很多啊。这也不会导致 zk 性能降低啊

amwyyyy

12

amwyyyy      2020 年 8 月 21 日

原来 consumerGroup 的堆积只是个数字,消息数据只有一份,不管你有几个 consumerGroup 。过期的 consumerGroup 会被清理掉。

kifile

13

kifile      2020 年 8 月 21 日

我的理解,题主的意思是因为 ConsumerGroup 的 GroupId 每次重启会重新生成一个新的,导致监控面板上出现了废弃的 groupId 的 Lag 不断增大的现象。

如果重启时 Consumer 的 offset 没有什么意义,那就在重启新应用前,删除老的 ConsumerGroup,做一个这种策略不就好了?

BBCCBB

14

BBCCBB      2020 年 8 月 21 日

@zardly666 这个倒是可以做, 类似 snowflake 算法 workid 的生成. 但相对较麻烦, 老哥但还有没有简单点的解决办法啊 😿
@wisej consumergroup 堆积就是监控上看着有点慌. 磁盘会占用.
@sonice 额, 我们多个实例发布的时候重启, 那就会一次性有多个 old consumerGroup, 监控上看着蛇皮的很, 比较难搞.
@kifile 是, 这是一种方案, 但开发没有 KafkaAdmin 的权限, 所以代码里删除不掉, 只能手动了.... 哈哈

谢谢各位, 期待更好的方案 🐶

mosesyou

15

mosesyou      2020 年 8 月 21 日

纯 docker 么,如果是 k8s 的话,用 statefulset,可以实现每个实例有固定递增编码 0,1,2....

BBCCBB

16

BBCCBB      2020 年 8 月 21 日

@mosesyou 我们将 docker 镜像上传到云上, 然后后续的流程我得研究一下, 问一下我们负责这一块的同事, 如果可行的话这得确是一个好办法. 多谢.

yangbonis

17

yangbonis      2020 年 8 月 21 日 via iPhone

mq 不是本来就组播工作的?所有订阅都会收到。

j2gg0s

19

j2gg0s      2020 年 8 月 21 日

@BBCCBB 瞎逼设计,每个实例根据消息在自己的内存里面做些什么工作吗?不能搞个 redis 或者 db ?

然后,kafka 的监控看到堆积是没有什么大影响的,因为消息只存一份。
如果你觉得不爽,可以在实例 shutdown 的时候了,把 consumergroup 注销掉?

BBCCBB

23

BBCCBB      2020 年 8 月 21 日

im 推消息, 量小, 所以还不想做路由中心. 所以采用广播.

rockyou12

25

rockyou12      2020 年 8 月 21 日

我觉得最好用其它 mq,kafka 本来就不适合这种场景,你这业务看起来也不需要持久化,redis 的 sub/pub 可能都够了

lwldcr

26

lwldcr      2020 年 8 月 21 日

你这个问题 加一个预处理步骤就可以了吧。

比如你一组应用有 10 个实例,那你提前分配好 groupId 名字,如 cg_1, cg_2,..., 然后存到一个地方:DB 、Redis 等

然后每个应用实例启动时 去存储的地方请求分配一个 groupId,用这个 groupId 启动 kafka 消费服务不就完事了

JKeita

27

JKeita      2020 年 8 月 21 日

固定 group id 每次启动清除 offset 怎样?

yty2012g

28

yty2012g      2020 年 8 月 21 日

固定 group id,每次设置 offset 到最新应该就可以满足

IamNotShady

29

IamNotShady      2020 年 8 月 21 日 via iPhone

redis 的 pub/sub 不香吗?

timonwong

31

timonwong      2020 年 8 月 21 日

原理是手动维护 offset,如果程序不死 retry 的时候保持 offset,程序死了从最新的来,可以按照自己的需求来调整。

不过有一点要注意的真的是 IM 的话,因为 kafka 的 partition reblance IO 相当大,可能造成非常大的 E2E 的 latency,这点要注意(虽然可以通过配置限制 IO 来绕过)。 总的来说,其实不适合 IM 这个场景