最新要闻
- 天天热点!看完沉默:那些我们想买 却无法得手的半导体公司
- 天天滚动:千元续航怪兽!荣耀X50开启预售:1399元起
- 在民科吧里 我找到了“中华有史以来最接近神的人”
- 【全球速看料】你发现没?苹果从来不提什么虚拟现实、AI:只有华为学会了!
- 银河麒麟才是第一国产操作系统!连续12年无敌
- 上单奶妈出装 快来看看
- 环球关注:俄媒:中国新的对外关系法意味着什么?
- 数年前患上抑郁症 轻生去世!李玟轻生当天还在给粉丝发语音 多名演艺界人士悼念|天天观天下
- 微博崩了!歌手李玟轻生去世 姐姐发声:数年前患上抑郁症
- 每日时讯!华擎出品 第一次半高刀卡!Intel显卡也如此娇小可爱
- AI加持江湖更自由!《逆水寒》手游体验:单人也能自由探索 告别“每日一条龙”
- 女子花盆里种出2.5米高向日葵 网友:不愧是山东的
- 2023年女足世界杯最终名单公布 王霜与唐佳丽等中国女足主力队员悉数入选
- 一头搁浅的抹香鲸吸引动物学家注意 体内含重达9.5公斤的龙涎香
- 苹果最新旗舰iPhone 15系列预计今年上市 其电池容量具有较大提升
- 重庆出现入汛以来最强降水 江滩公园部分道路被淹导致成为江心岛
手机
光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯
搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注
- 光庭信息跌4.57% 2021上市超募11亿2022扣非降74% 时快讯
- 搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代-环球关注
- 视点!美国首位女总统即将诞生?拜登恐怕要提前下岗,美政坛迎来变局?
- 当前速递!用理想仪器实现更好的颗粒 德国新帕泰克亮相CPHI & PMEC China获好评
- 微粒贷怎么申请开通 开通方法如下
- 焦点简讯:心疼!这位40岁的云南缉毒警,已是满头白发
家电
一天吃透Kafka面试八股文 全球报道
Kafka 都有哪些特点?
- 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。
- 可扩展性:kafka集群支持热扩展
- 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
- 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
- 高并发:支持数千个客户端同时读写。最全面的Java面试网站
请简述下你在哪些场景下会选择 Kafka?
- 日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、HBase、Solr等。
- 消息系统:解耦和生产者和消费者、缓存消息等。
- 用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
- 运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
- 流式处理:比如spark streaming和 Flink
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~
Github地址
(相关资料图)
如果访问不了Github,可以访问gitee地址。
gitee地址
Kafka 的设计架构你知道吗?
Kafka 架构分为以下几个部分:
- Producer :消息生产者,就是向 kafka broker 发消息的客户端。
- Consumer :消息消费者,向 kafka broker 取消息的客户端。
- Topic :可以理解为一个队列,一个 Topic 又分为一个或多个分区,
- Consumer Group:这是 kafka 用来实现一个 topic 消息的广播(发给所有的 consumer)和单播(发给任意一个 consumer)的手段。一个 topic 可以有多个 Consumer Group。
- Broker :一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker 可以容纳多个 topic。
- Partition:为了实现扩展性,一个非常大的 topic 可以分布到多个 broker上,每个 partition 是一个有序的队列。partition 中的每条消息都会被分配一个有序的id(offset)。将消息发给 consumer,kafka 只保证按一个 partition 中的消息的顺序,不保证一个 topic 的整体(多个 partition 间)的顺序。
- Offset:kafka 的存储文件都是按照 offset.kafka 来命名,用 offset 做名字的好处是方便查找。例如你想找位于 2049 的位置,只要找到 2048.kafka 的文件即可。当然 the first offset 就是 00000000000.kafka。
Kafka 分区的目的?
分区对于 Kafka 集群的好处是:实现负载均衡。分区对于消费者来说,可以提高并发度,提高效率。
你知道 Kafka 是如何做到消息的有序性?
kafka 中的每个 partition 中的消息在写入时都是有序的,而且单独一个 partition 只能由一个消费者去消费,可以在里面保证消息的顺序性。但是分区之间的消息是不保证有序的。
Kafka Producer 的执行过程?
1,Producer生产消息 --> 2,从Zookeeper找到Partition的Leader --> 3,推送消息 --> 4,通过ISR列表通知给Follower --> 5, Follower从Leader拉取消息,并发送ack --> 6,Leader收到所有副本的ack,更新Offset,并向Producer发送ack,表示消息写入成功。
给大家分享一个Github仓库,上面有大彬整理的300多本经典的计算机书籍PDF,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,可以star一下,下次找书直接在上面搜索,仓库持续更新中~
Github地址
如果访问不了Github,可以访问码云地址。
码云地址
讲一下你使用 Kafka Consumer 消费消息时的线程模型,为何如此设计?
Thread-Per-Consumer Model,这种多线程模型是利用Kafka的topic分多个partition的机制来实现并行:每个线程都有自己的consumer实例,负责消费若干个partition。各个线程之间是完全独立的,不涉及任何线程同步和通信,所以实现起来非常简单。
请谈一谈 Kafka 数据一致性原理
一致性就是说不论是老的 Leader 还是新选举的 Leader,Consumer 都能读到一样的数据。
假设分区的副本为3,其中副本0是 Leader,副本1和副本2是 follower,并且在 ISR 列表里面。虽然副本0已经写入了 Message4,但是 Consumer 只能读取到 Message2。因为所有的 ISR 都同步了 Message2,只有 High Water Mark 以上的消息才支持 Consumer 读取,而 High Water Mark 取决于 ISR 列表里面偏移量最小的分区,对应于上图的副本2,这个很类似于木桶原理。
这样做的原因是还没有被足够多副本复制的消息被认为是“不安全”的,如果 Leader 发生崩溃,另一个副本成为新 Leader,那么这些消息很可能丢失了。如果我们允许消费者读取这些消息,可能就会破坏一致性。试想,一个消费者从当前 Leader(副本0) 读取并处理了 Message4,这个时候 Leader 挂掉了,选举了副本1为新的 Leader,这时候另一个消费者再去从新的 Leader 读取消息,发现这个消息其实并不存在,这就导致了数据不一致性问题。
当然,引入了 High Water Mark 机制,会导致 Broker 间的消息复制因为某些原因变慢,那么消息到达消费者的时间也会随之变长(因为我们会先等待消息复制完毕)。延迟时间可以通过参数 replica.lag.time.max.ms 参数配置,它指定了副本在复制消息时可被允许的最大延迟时间。
ISR、OSR、AR 是什么?
ISR:In-Sync Replicas 副本同步队列
OSR:Out-of-Sync Replicas
AR:Assigned Replicas 所有副本
ISR是由leader维护,follower从leader同步数据有一些延迟(具体可以参见 图文了解 Kafka 的副本复制机制),超过相应的阈值会把 follower 剔除出 ISR, 存入OSR(Out-of-Sync Replicas )列表,新加入的follower也会先存放在OSR中。AR=ISR+OSR。
LEO、HW、LSO、LW等分别代表什么
LEO:是 LogEndOffset 的简称,代表当前日志文件中下一条
HW:水位或水印(watermark)一词,也可称为高水位(high watermark),通常被用在流式处理领域(比如Apache Flink、Apache Spark等),以表征元素或事件在基于时间层面上的进度。在Kafka中,水位的概念反而与时间无关,而是与位置信息相关。严格来说,它表示的就是位置信息,即位移(offset)。取 partition 对应的 ISR中 最小的 LEO 作为 HW,consumer 最多只能消费到 HW 所在的位置上一条信息。
LSO:是 LastStableOffset 的简称,对未完成的事务而言,LSO 的值等于事务中第一条消息的位置(firstUnstableOffset),对已完成的事务而言,它的值同 HW 相同
LW:Low Watermark 低水位, 代表 AR 集合中最小的 logStartOffset 值。
数据传输的事务有几种?
数据传输的事务定义通常有以下三种级别:
(1)最多一次: 消息不会被重复发送,最多被传输一次,但也有可能一次不传输(2)最少一次: 消息不会被漏发送,最少被传输一次,但也有可能被重复传输.(3)精确的一次(Exactly once): 不会漏传输也不会重复传输,每个消息都传输被
Kafka 消费者是否可以消费指定分区消息?
Kafa consumer消费消息时,向broker发出fetch请求去消费特定分区的消息,consumer指定消息在日志中的偏移量(offset),就可以消费从这个位置开始的消息,customer拥有了offset的控制权,可以向后回滚去重新消费之前的消息,这是很有意义的。最全面的Java面试网站
Kafka消息是采用Pull模式,还是Push模式?
Kafka最初考虑的问题是,customer应该从brokes拉取消息还是brokers将消息推送到consumer,也就是pull还push。在这方面,Kafka遵循了一种大部分消息系统共同的传统的设计:producer将消息推送到broker,consumer从broker拉取消息。
一些消息系统比如Scribe和Apache Flume采用了push模式,将消息推送到下游的consumer。这样做有好处也有坏处:由broker决定消息推送的速率,对于不同消费速率的consumer就不太好处理了。消息系统都致力于让consumer以最大的速率最快速的消费消息,但不幸的是,push模式下,当broker推送的速率远大于consumer消费的速率时,consumer恐怕就要崩溃了。最终Kafka还是选取了传统的pull模式。
Pull模式的另外一个好处是consumer可以自主决定是否批量的从broker拉取数据。Push模式必须在不知道下游consumer消费能力和消费策略的情况下决定是立即推送每条消息还是缓存之后批量推送。如果为了避免consumer崩溃而采用较低的推送速率,将可能导致一次只推送较少的消息而造成浪费。Pull模式下,consumer就可以根据自己的消费能力去决定这些策略。
Pull有个缺点是,如果broker没有可供消费的消息,将导致consumer不断在循环中轮询,直到新消息到t达。为了避免这点,Kafka有个参数可以让consumer阻塞知道新消息到达(当然也可以阻塞知道消息的数量达到某个特定的量这样就可以批量发
Kafka 高效文件存储设计特点
Kafka把topic中一个parition大文件分成多个小文件段,通过多个小文件段,就容易定期清除或删除已经消费完文件,减少磁盘占用。
通过索引信息可以快速定位message和确定response的最大大小。
通过index元数据全部映射到memory,可以避免segment file的IO磁盘操作。
通过索引文件稀疏存储,可以大幅降低index文件元数据占用空间大小
Kafka创建Topic时如何将分区放置到不同的Broker中
副本因子不能大于 Broker 的个数;
第一个分区(编号为0)的第一个副本放置位置是随机从 brokerList 选择的;
其他分区的第一个副本放置位置相对于第0个分区依次往后移。也就是如果我们有5个 Broker,5个分区,假设第一个分区放在第四个 Broker 上,那么第二个分区将会放在第五个 Broker 上;第三个分区将会放在第一个 Broker 上;第四个分区将会放在第二个 Broker 上,依次类推;
剩余的副本相对于第一个副本放置位置其实是由 nextReplicaShift 决定的,而这个数也是随机产生的
谈一谈 Kafka 的再均衡
在Kafka中,当有新消费者加入或者订阅的topic数发生变化时,会触发Rebalance(再均衡:在同一个消费者组当中,分区的所有权从一个消费者转移到另外一个消费者)机制,Rebalance顾名思义就是重新均衡消费者消费。Rebalance的过程如下:
第一步:所有成员都向coordinator发送请求,请求入组。一旦所有成员都发送了请求,coordinator会从中选择一个consumer担任leader的角色,并把组成员信息以及订阅信息发给leader。
第二步:leader开始分配消费方案,指明具体哪个consumer负责消费哪些topic的哪些partition。一旦完成分配,leader会将这个方案发给coordinator。coordinator接收到分配方案之后会把方案发给各个consumer,这样组内的所有成员就都知道自己应该消费哪些分区了。
所以对于Rebalance来说,Coordinator起着至关重要的作用
Kafka 是如何实现高吞吐率的?
Kafka是分布式消息系统,需要处理海量的消息,Kafka的设计是把所有的消息都写入速度低容量大的硬盘,以此来换取更强的存储能力,但实际上,使用硬盘并没有带来过多的性能损失。kafka主要使用了以下几个方式实现了超高的吞吐率:
- 顺序读写;
- 零拷贝
- 文件分段
- 批量发送
- 数据压缩。
Kafka 缺点?
- 由于是批量发送,数据并非真正的实时;
- 对于mqtt协议不支持;
- 不支持物联网传感数据直接接入;
- 仅支持统一分区内消息有序,无法实现全局消息有序;
- 监控不完善,需要安装插件;
- 依赖zookeeper进行元数据管理;
Kafka 新旧消费者的区别
旧的 Kafka 消费者 API 主要包括:SimpleConsumer(简单消费者) 和 ZookeeperConsumerConnectir(高级消费者)。SimpleConsumer 名字看起来是简单消费者,但是其实用起来很不简单,可以使用它从特定的分区和偏移量开始读取消息。高级消费者和现在新的消费者有点像,有消费者群组,有分区再均衡,不过它使用 ZK 来管理消费者群组,并不具备偏移量和再均衡的可操控性。
现在的消费者同时支持以上两种行为,所以为啥还用旧消费者 API 呢?
Kafka 分区数可以增加或减少吗?为什么?
我们可以使用 bin/kafka-topics.sh 命令对 Kafka 增加 Kafka 的分区数据,但是 Kafka 不支持减少分区数。
Kafka 分区数据不支持减少是由很多原因的,比如减少的分区其数据放到哪里去?是删除,还是保留?删除的话,那么这些没消费的消息不就丢了。如果保留这些消息如何放到其他分区里面?追加到其他分区后面的话那么就破坏了 Kafka 单个分区的有序性。如果要保证删除分区数据插入到其他分区保证有序性,那么实现起来逻辑就会非常复杂。
最全面的Java面试网站
关键词:
一天吃透Kafka面试八股文 全球报道
2023年年中总结_世界新资讯
天天热点!看完沉默:那些我们想买 却无法得手的半导体公司
天天滚动:千元续航怪兽!荣耀X50开启预售:1399元起
在民科吧里 我找到了“中华有史以来最接近神的人”
【全球速看料】你发现没?苹果从来不提什么虚拟现实、AI:只有华为学会了!
银河麒麟才是第一国产操作系统!连续12年无敌
上单奶妈出装 快来看看
环球关注:俄媒:中国新的对外关系法意味着什么?
环球观热点:22-数码管的动态显示
数年前患上抑郁症 轻生去世!李玟轻生当天还在给粉丝发语音 多名演艺界人士悼念|天天观天下
微博崩了!歌手李玟轻生去世 姐姐发声:数年前患上抑郁症
【后端面经-计算机基础】HTTP和TCP的区别-环球最资讯
每日热讯!文心一言 VS 讯飞星火 VS chatgpt (55)-- 算法导论6.3 1题
每日时讯!华擎出品 第一次半高刀卡!Intel显卡也如此娇小可爱
AI加持江湖更自由!《逆水寒》手游体验:单人也能自由探索 告别“每日一条龙”
女子花盆里种出2.5米高向日葵 网友:不愧是山东的
2023年女足世界杯最终名单公布 王霜与唐佳丽等中国女足主力队员悉数入选
一头搁浅的抹香鲸吸引动物学家注意 体内含重达9.5公斤的龙涎香
苹果最新旗舰iPhone 15系列预计今年上市 其电池容量具有较大提升
重庆出现入汛以来最强降水 江滩公园部分道路被淹导致成为江心岛
女孩花费两个月在鱼缸中做出“海市蜃楼” 曾是哈尔滨工业大学硕士
广州发布垃圾分类专管员拟聘用人员名单公告 竟有一名研究生上榜
在尚未取得环保许可下开挖人工湖 知名球星内马尔被重罚1600万雷亚尔
电影《孤注一掷》发布“境外诈骗工厂”版群像海报 为宁海导演作品
Twitch平台知名女主播靠直播睡觉赚钱 月收入高达1448万元
lvm逻辑卷|当前独家
HTTPS站点真的会被百度优先收录吗? 天天报道
当前关注:1399元起!荣耀X50发布:首发第一代骁龙6、十面抗摔
当前热点-英国12岁以下观众不能看《芭比》:打火机烧坏娃娃很危险
2K屏不足千元!荣耀平板X8 Pro发布:999元起 播资讯
全球快播:中国限制镓、锗材料出口:美国公司急了!
首销299元 荣耀亲选悦喔K歌麦克风发布:AI律动灯效|天天消息
Python教程(2)——开发python常用的IDE|全球速看
债市日报:7月5日-世界观速讯
致癌风险难掩掘金热情 国内首个“减肥针”获批 GLP-1领域竞争升级
日照海滩现大量面条鱼引市民捡拾 场面太壮观:一晚能捡上百斤-环球热讯
天天快看:硕士毕业10年被查出论文剽窃:被撤销学位
搭载天玑1200处理器:AYANEO推出首款安卓复古游戏掌机
世界速看:兰博基尼燃油车被抢购一空:2025年将发布纯电超跑
长城汽车6月销售新车104957辆 新能源强势暴涨110%_天天播报
【当前独家】CCLINK转profinet与三菱PLC通讯案例
航拍暴雨后重庆:江滩公园成江心岛 今夜雨水重返-环球快资讯
凛冬已至 寒气逼人!游戏手机率先倒下了
男子用棉袜装6条活体蛇入境被查:为濒危野生动物球蟒|全球新消息
7999元 宏碁传奇X 16 2023款上架:3.2K OLED超感屏
日本核废水排海临近!韩国官宣对进口海产品展开“前所未有的检查”
修川地藏为什么是银尘的复制品 修川地藏为什么是银尘
环球百事通!瞬间抠图!揭秘 ZEGO 绿幕抠图算法背后的技术
世界快看点丨Visual Studio2019 BackgoroundImageLayout属性
全球最资讯丨nginx访问日志过滤(多条件)
【速看料】WPF 在MVVM模式下应用动画
记录--什么!一个项目给了8个字体包???|头条焦点
官旗大促:鸿星尔克梭织速干运动短裤 限时49元
热点聚焦:450块都不到!AMD最便宜新U锐龙3 5100来了:极致性价比
新机型恐怕还要等:发售七年后Switch销量再创新高 每日看点
钢铁侠同款!全新奥迪纯电轿跑e-tron GT限量发售 109.98万起
Poi Excel 动态变化行高,动态创建Sheet-当前视点
【笔试实战】LeetCode题单刷题-编程基础 0 到 1【三】-最资讯
AI PPT 一句话轻松生成PPT演讲稿。-全球聚焦
世界速递!实时社群技术专题(一):支持百万人超级群聊,一文读懂社群产品Discord
欢乐颂3酒店问题(欢乐颂3酒店取景地)
红魔大黄蜂超能版全家桶来了:手机、键鼠全定制
21年前清华学生硫酸泼熊 现已是中科院副研究员:程序合规
深圳一辆私家车开上火车站台 路人惊叹 官方回应
每日讯息!RTX 4090频繁烧毁!英伟达在4070上用改良接口 16针接口要淘汰了
1080P光追利器!索泰RTX 4060 X-GAMING OC欧泊白图赏
环球实时:解决浏览器SSL缓存,自动将http跳转至https导致无法访问的问题
今日看点:加速体细胞突变检测分析流程-系列2(ctDNA等高深度样本)
FreeMarker指令语法【FreeMarker】
最新消息:MedCalc v22.009 医学ROC曲线统计分析软件下载安装教程
04vgg剪枝_世界新动态
焦点速看:昆导确认:十部电影上限降至《杀死比尔3》无望
满血版骁龙8+《原神》满帧无压力!红魔电竞平板发布|焦点日报
突然!腾讯音频App企鹅FM宣布停运:上线刚8年 环球短讯
【世界新要闻】通吃全平台!红魔Dao TWS氘锋耳机上市:1499元起
天天微资讯!几百块的激光打印机堪用吗?实测后心里有数了
红魔魔境49寸QD-OLED电竞显示器发布:240Hz超高刷新率-全球热议
世界快讯:世界气象组织预警:厄尔尼诺或致今后气温“创纪录”
【世界独家】第五套人民币豹子号价格(2023年7月5日)
美国女网红直播睡觉月入1447万 网友羡慕:躺着就把钱赚了
环球时讯:被曝能白嫖付费网页:ChatGPT紧急下线联网模式
打破全球23年魔咒!天兵科技天龙三号大型液体火箭明年首飞:可复用_时讯
环球视讯!谷歌论文展示量子计算机新突破!超算47年任务几秒即可完成
轿车高速路上强行变道被大货撞旋一圈 女子不满处罚:明明是他撞我
[llama懒人包]ChatGPT本地下位替代llama-7b,支持全平台显卡/CPU运行 环球看热讯
灵山卫站派出所110民警帮助乘客归还遗失证件
全新国产芯片设计EDA发布:首发PCIe 5.0、60万兆网络!
日本有孩家庭数首次跌破1000万户:欲加快推进机器人、AI人工智能
曝小米14系列和Redmi Note 13系列手机预装MIUI 15,均配备极窄屏 环球快报
焦点报道:天问一号登陆火星2多年 我国公布科学探测数据:总量超过2TB
全球热点!Magic V2通讯将是行业顶级!荣耀赵明:无需与iPhone比较
前沿资讯!33.5万开卖!网红坦克500出混动了:发布会现场教友商做越野
一次不成功的洞穴救援 天天热闻
轿车跑车SUV应有尽有 比亚迪腾势全新品牌计划曝光 涵盖30-80万共7款车型
当前滚动:Android Launcher apk 授信安装
华为云GaussDB圈层活动走进香港,以技术创新构筑金融政企数智发展基石
基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索
一种基于DeltaE(CIE 1976)的找色算法Cuda实现_即时看
世界通讯!复苏中的中国经济怎么看?2023上财宏观论坛在沪举办