Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java高频面试题- 每日三连问?【Day34】 — Kafka篇(二)

Java高频面试题- 每日三连问?【Day34】 — Kafka篇(二)

作者头像
浩说编程
发布于 2022-04-12 06:22:49
发布于 2022-04-12 06:22:49
2500
举报
文章被收录于专栏:Java经验之谈Java经验之谈

问题导读

一、Kafka 的多副本机制了解吗?

二、Kafka 的多分区(Partition)以及多副本(Replica)机制有什么好处呢?

三、Zookeeper 在 Kafka 中的作用知道吗?

01

Kafka 的多副本机制了解吗?

正经回答:

Kafka 为分区(Partition)引入了多副本(Replica)机制。

分区(Partition)中的多个副本之间会有一个叫做 leader 的家伙,其他副本称为 follower。

我们发送的消息会被发送到leader 副本,然后 follower 副本才能从 leader 副本中拉取消息进行同步。

生产者和消费者只与 leader 副本交互。

你可以理解为其他副本只是 leader 副本的拷贝,它们的存在只是为了保证消息存储的安全性。

当 leader 副本发生故障时会从 follower 中选举出一个 leader,但是 follower 中如果有和 leader 同步程度达不到要求的参加不了 leader 的竞选。

分享朋友圈,记录学习每一天~

02

Kafka 的多分区(Partition)

以及多副本(Replica)机制有什么好处呢?

正经回答:

 Kafka 通过给特定 Topic 指定多个 Partition, 而各个 Partition 可以分布在不同的 Broker上, 这样便能提供比较好的并发能力(负载均衡)。

 Partition 可以指定对应的 Replica 数, 这也极大地提高了消息存储的安全性, 提高了容灾能力,不过也相应的增加了所需要的存储空间。

03

Zookeeper 在 Kafka 中的作用知道吗?

正经回答:

 Broker 注册 :

在 Zookeeper 上会有一个专门用来进行 Broker 服务器列表记录的节点。

每个 Broker 在启动时,都会到 Zookeeper 上进行注册,即到 /brokers/ids 下创建属于自己的节点。

每个 Broker 就会将自己的 IP 地址和端口等信息记录到该节点中去。

 Topic 注册 :

在 Kafka 中,同一个 Topic 的消息会被分成多个分区并将其分布在多个Broker 上,这些分区信息及与 Broker 的对应关系也都是由 Zookeeper 在维护。

比如我创建了一个名字为 my-topic 的主题并且它有两个分区,对应到 zookeeper 中会创建这些文件夹:

/brokers/topics/my-topic/Partitions/0、

/brokers/topics/my-topic/Partitions/1

 负载均衡 :

上面也说过了 Kafka 通过给特定 Topic 指定多个 Partition, 而各个 Partition可以分布在不同的 Broker 上, 这样便能提供比较好的并发能力。

对于同一个 Topic 的不同 Partition,Kafka 会尽力将这些 Partition 分布到不同的 Broker 服务器上。

当生产者产生消息后也会尽量投递到不同 Broker 的 Partition 里面。

当 Consumer 消费的时候,Zookeeper 可以根据当前的 Partition 数量以及 Consumer 数量来实现动态负载均衡。

- End -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浩说编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
入门篇!大白话带你认识 Kafka!
今天我们来聊聊 Kafka ,主要是带你重新认识一下 Kafka,聊一下 Kafka 中比较重要的概念和问题。在后面的文章中我会介绍:
Guide哥
2020/05/07
6590
都说Kafka牛3万字带你全面掌握kafka
系统间的耦合高怎么办,我们如何不让一个服务过于庞大,一个好的方式就是依据具体的功能模块拆分服务,降低服务的耦合度,服务间的交互可以通过消息传递数据来实现,除此之外Kafka非常适合在线日志收集等高吞吐场景,kafka有更好的吞吐量,内置分区,副本和故障转移,这有利于处理大规模的消息,所以kafka被各大公司广泛运用于消息队列的构建:
大数据老哥
2021/03/05
1.3K0
都说Kafka牛3万字带你全面掌握kafka
Kafka进阶面试题分享
1) 缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。
857技术社区
2022/05/17
1.2K0
Kafka进阶面试题分享
史上最详细Kafka原理总结 | 建议收藏
Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。
大数据技术架构
2019/08/28
6.1K0
史上最详细Kafka原理总结 | 建议收藏
面试题:Kafka 如何保证高可用?有图有真相!
Kafka从0.8版本开始提供了高可用机制,可保障一个或多个Broker宕机后,其他Broker能继续提供服务
张乘辉
2021/06/10
1.2K0
面试题:Kafka 如何保证高可用?有图有真相!
Kafka设计解析-Kafka High Availability
Topic:每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)
chengcheng222e
2021/11/04
3290
【Kafka】(二)Kafka 的架构
如上图所示: 一个典型的 Kafka 集群中包含若干 Producer(可以是 web 前端产生的 Page View,或者是服务器日志,系统 CPU、Memory 等); 若干 broker(Kafka 支持水平扩展,一般 broker 数量越多,集群吞吐率越高),若干 Consumer Group,以及一个 Zookeeper 集群; Kafka 通过 Zookeeper 管理集群配置,选举 leader,以及在 Consumer Group 发生变化时进行 rebalance; Producer 使用 push 模式将消息发布到 broker,Consumer 使用 pull 模式从 broker 订阅并消费消息;
redszhao
2021/08/09
1K0
【Kafka】(二)Kafka 的架构
Kafka源码系列之源码分析zookeeper在kafka的作用
浪尖的kafka源码系列以kafka0.8.2.2源码为例给大家进行讲解的。纯属个人爱好,希望大家对不足之处批评指正。 一,zookeeper在分布式集群的作用 1,数据发布与订阅(配置中心) 发布与订阅模型,即所谓的配置中心,顾名思义就是讲发布者将数据发布到zk节点上,共订阅者动态获取数据,实现配置的集中式管理和动态更新。例如,全局的配置信息,服务服务框架的地址列表就非常适合使用。 2,负载均衡 即软件负载均衡。最典型的是消息中间件的生产、消费者负载均衡。 3,命名服务(Naming Service)
Spark学习技巧
2018/01/30
1.2K0
Kafka源码系列之源码分析zookeeper在kafka的作用
Kafka剖析系列之高可用(下)
本文主要阐述了HA相关各种场景,如Broker failover、Controller failover、Topic创建/删除、Broker启动、Follower从Leader fetch数据等详细处理过程。同时介绍了Kafka提供的与Replication相关的工具,如重新分配Partition等。 Broker Failover过程 Controller对Broker failure的处理过程 Controller在ZooKeeper的/brokers/ids节点上注册Watch。一旦有Broker宕机
用户1263954
2018/01/30
7100
Kafka剖析系列之高可用(下)
深入浅出Kafka(3):我的生命是如何运转的?
Kafka作为一个消息系统,为什么会如此受欢迎?消息系统在不同系统传输数据中扮演着非常重要的角色。让我们看看没有消息系统的数据管道会怎样?
double
2019/07/23
6340
深入浅出Kafka(3):我的生命是如何运转的?
2023携程面试真题
字符流:以字符为单位,每次次读入或读出是 16 位数据。其只能读取字符类型数据。
小马哥学JAVA
2023/07/15
2560
2023携程面试真题
Kafka剖析系列之高可用(上)
Kafka在0.8以前的版本中,并不提供High Availablity机制,一旦一个或多个Broker宕机,则宕机期间其上所有Partition都无法继续提供服务。若该Broker永远不能再恢复,亦或磁盘故障,则其上数据将丢失。而Kafka的设计目标之一即是提供数据持久化,同时对于分布式系统来说,尤其当集群规模上升到一定程度后,一台或者多台机器宕机的可能性大大提高,对Failover要求非常高。因此,Kafka从0.8开始提供High Availability机制。本文从Data Replication和
用户1263954
2018/01/30
5560
Kafka剖析系列之高可用(上)
你可能需要的Kafka面试题与部分答案整理
场景:数据比较集中且实时要求不是太高,如果同步处理,假如业务高峰需要4台服务支撑,那么在业务高峰过了之后,就会出现资源闲置,如果引入消息队列的话,将数据放到消息队列后直接返回成功,提升了响应时间,真正的业务在消息队列后面消费处理,可能2台服务就能够支撑的住,而且流量更加均匀。
大数据真好玩
2020/02/13
9010
Kafka设计解析(二)- Kafka High Availability (上)
http://www.jasongj.com/2015/04/24/KafkaColumn2/
Java后端技术
2018/08/09
3690
Kafka设计解析(二)- Kafka High Availability (上)
kafka–核心技术篇
在消息发送的过程中,涉及到了两个线程——main 线程和== Sender 线程==。在 main 线程中创建了一个双端队列 RecordAccumulator(32M内存)。main 线程将消息发送给 RecordAccumulator,Sender 线程不断从 RecordAccumulator 中拉取消息发送到 Kafka Broker。
全栈程序员站长
2022/09/13
6780
Kafka之集群架构原理
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/08/29
7380
Kafka之集群架构原理
kafka学习笔记
搭建参考: https://www.cnblogs.com/luotianshuai/p/5206662.html
保持热爱奔赴山海
2019/09/17
5680
kafka学习笔记
Kafka快速入门(Kafka Broker)节点服役和退役、手动调整副本
(3)查看/kafka/brokers/topics/first/partitions/0/state 路径上的数据。
鱼找水需要时间
2023/02/16
9920
Kafka快速入门(Kafka Broker)节点服役和退役、手动调整副本
内功提升-kafka入门到精通
这个专题的主要目的是debug kafka,并从中学习到kafka的架构原理,以及底层实现,提升抽象思维、汲取优秀设计思想、实现场景复用,当然也能实现与面试官侃大山。
用户1081422
2020/04/08
9420
Kafka系列之高频面试题
ISR是由Leader维护,Follower从Leader同步数据有一些延迟,超过配置的阈值会把Follower剔除出ISR,存入OSR列表,新加入的Follower也会先存放在OSR中。AR=ISR+OSR。
johnny666
2024/09/21
1450
相关推荐
入门篇!大白话带你认识 Kafka!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档