专栏首页微观技术业务视角谈谈Kafka(第三篇)

业务视角谈谈Kafka(第三篇)

本文接第二篇续,日常工作中使用kafka,可能会遇到的一些问题!欢迎留言补充

问题24:在一个应用中,如果一个topic开始由名为A的消费组消费,后来把消费组名改为B(开始的命名不规范),重新发布应用,这个时候是不是从topic的分区头开始消费?如何保证从上次A消费组的最新偏移量处开始消费?

•把A改成B对于Kafka而言就是新的consumer。新consumer从头还是从最新开始消费取决于auto.offset.reset

问题25:消息经常堆积,常见原因?

•1、生产速度大于消费速度,可以适当增加分区,增加consumer数量,提升消费 TPS;•2、consumer消费性能低,检查是否有很重的消费逻辑(比如拿到消息后写HDFS或Hbase),优化consumer TPS;•3、 确保consumer端有没有因为异常而导致消费hang住;•4、 如果使用的是消费者组,确保没有频繁地发生rebalance

问题26:Producer怎么获取元数据信息?

•集群元数据持久化在ZooKeeper中,同时也缓存在每台Broker的内存中。Producer直接请求broker来获取元数据信息。

问题27:Producer与Broker 的TCP 连接是怎么管理的?

•假设一个Kafka集群中有1000台Broker,Producer只需要与5台Broker交互,它连接池中的链接数量先是1000,空闲检测再回收到5,再创建1000。可能数字不一定准确,但趋势是这样的,有极大的优化空间。

问题28:事务型 Producer 怎么实现多分区以及多会话上的消息无重复的呢?

•两阶段提交(2PC)。引入了事务协调器的组件帮助完成分布式事务

问题29:事务支持多个producer?

•不是,限单个producer

问题30:事务是不是限同一个topic?

•不是,可以同时多个topic

问题31:kafka的消息交付可靠性保障有哪几种?

•最多一次(at most once):消息可能会丢失,但绝不会被重复发送。•至少一次(at least once):消息不会丢失,但有可能被重复发送。•精确一次(exactly once):消息不会丢失,也不会被重复发送。

问题32:同一个consumer 组的两个消费实例通过assign方法订阅同一个TopicPartition,是不是会有一个消费者不能消费到消息?

•使用assign,则表明该consumer是独立consumer(standalone consumer),它不再属于任何consumer组,两个独立consumer可以订阅并消费相同的分区。

问题33:kafka有基于时间戳的消费方式吗?

• KafkaConsumer的offsetsForTimes方法

问题34:follower是异步拉取数据,当生产端设置ack=all时,消息是怎么保证到follower的?

•通过HW机制(high watermark)。leader处的HW要等所有follower LEO都越过了才会前移,consumer无法消费leader副本中位移值大于HW的消息。也就是说,只有消息备份成功才能消费。

问题35:Kafka 会自动调整 ISR 集合,将该一个副本被“踢出”ISR,follow副本还会做同步操作吗?

•会

问题36:幂等性 Producer为什么只能有效于单分区、单会话?

•单分区,是因为采用空间换时间机制,在broker端保留消息的关键属性,每次接收请求后会做重复判断,各分区间不会数据共享。单会话,是因为去重的关键属性有Producer ID和seq number,非重试场景下sendMessage会对seq number递增。

问题37:事务型Producer提交事务消息,如果失败怎么办?

• 直接抛异常,用户自行解决,比如反复重试。RocketMQ 提供了事务反查机制

问题38:kafka的可靠保障采用exactly once(精确一次)模式,消费端是不是天然支持幂等?

• 直不会。有可能consumer消费成功,但ack响应失败,消息还是会再次推送过来。

本文分享自微信公众号 - 微观技术(weiguanjishu),作者:TomGE

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 乐观锁与悲观锁

    在如今分布式、高并发、各种负载纵横天下的时代,支持高访问量成为检验一个系统合不合格的重要标准,然而我们除了在运算过程中要求系统更加效率外,在最终的数据存储过程中...

    用户7676729
  • 函数式编程是如何提升代码的扩展性

    从工程学角度来讲,我们常说的软件工程一般采用面向对象编程,差别在与使用的编程语言不同,有人习惯用java,有人喜欢C#,各有各的特色,除了语法上略有差异,其本质...

    用户7676729
  • 不可错过的电商系统干货

    电商作为互联网的常青业务,已经渗透到我们生活日常方方面面。随着市场发展,以及我们的个性化需求,衍化出很多玩法。虽然业务规则上略有差异,但底层技术都是相通的。无非...

    用户7676729
  • 数据结构-常用的查找算法

    本篇讲讲数据结构里面常用的几个查找算法,数据结构理论篇系列差不多接近尾声了,接下来会分享一些比较特殊的概念,比如KMP、郝夫曼树等等,讲完概念以后会进入刷题阶段...

    张俊红
  • 高效查看日志排错

    免费软件Notepad++是一款功能强大的文本编辑器,其支持使用正则表达式查找,使用方法:选择菜单栏搜索 -> 选择子菜单查找,弹出查找窗口,输入查找目标,查找...

    gaigai
  • 代码实现WordPress自动关键词keywords与描述description

    之前在文章《WordPress自定义栏目运用实例II:添加文章Meta标签(keywords /description)》中给出了手动添加关键词keywords...

    Jeff
  • 少量代码设计一个登录界面(二) – .NET CORE(C#) WPF开发

    使用 .NET CORE 3.1 创建名为 “Login” 的WPF模板项目,添加1个Nuget库:MaterialDesignThemes.3.1.0-ci9...

    zls365
  • Endnote最详细的使用方法

    如果有些步骤你还不太懂,没关系,Endnote全套教程【视频+PPT, 6.07G】免费送你:

    用户7344021
  • 非常详尽,多图慎入:Wayland与Weston简介

    简单地说,Wayland是一套display server(Wayland compositor)与client间的通信协议,而Weston是Wayland c...

    Linux阅码场
  • 非常详尽,多图慎入:Wayland与Weston简介

    简单地说,Wayland是一套display server(Wayland compositor)与client间的通信协议,而Weston是Wayland c...

    刘盼

扫码关注云+社区

领取腾讯云代金券