深入理解Kafka:组件

目录

1、kafka介绍

1.1、什么是kafka

1.2、Kafka的特性

1.3、kafka使用场景

2、Kafka组件介绍

2.1、主题topic

2.2、分区与偏移量offset

2.3、多副本机制(leader -follower )

2.4、leader副本选举

2.5、follower(broker/副本)如何与leader同步数据

2.5、Broker故障转移

2.5、Broker Leader的选举

3、常见问题

3.1、如何判断节点是否存活

3.2、kafka高可用机制

3.3、Kafka哪些些设计让它高性能

3.4、Kafka为什么不支持读写分离


1、kafka介绍

1.1、什么是kafka

Kafka是最初由领英公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,消息服务等等,用scala语言编写。

1.2、Kafka的特性

(1)高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition,、consumer group 。

(2)可扩展性:kafka集群支持热扩展

(3)持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失

(4)容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)

(5)高并发:支持数千个客户端同时读写

1.3、kafka使用场景

(1)日志收集

(2)消息系统

(3)用户活动跟踪

Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析。

(4)运营指标:记录运营监控数据。

(5)流式处理:比如spark streaming和storm

2、Kafka组件介绍

主题信息属于kafka的元数据,存储在zookeeper中

2.1、主题topic

Kafka 中的消息以主题为单位进行归类,一个主题可以横跨多个 broker。

2.2、分区与偏移量offset

一个分区只属于一个主题,一个主题可以横跨多个 broker。同一主题下的不同分区包含的消息是不同的,消息在被追加到分区时分配一个特定的偏移量(offset)。Kafka 通过它来保证消息在分区内的顺序性,Kafka 保证的是分区有序而不是主题有序。

2.3、多副本机制(leader -follower

同一分区的不同副本中保存的是相同的消息(在同一时刻,副本之间并非完全一样),副本之间是“一主多从”的关系,其中 leader 副本负责处理“读写”请求,follower 副本只负责与 leader 副本的消息同步副本处于不同的 broker(服务器) 中。

2.4、leader副本选举

leader副本有故障时从follower副本选举。Kafka 通过多副本机制实现了故障的自动转移,当 Kafka 集群中某个 broker 失效时仍然能保证服务可用

2.5、follower(broker/副本)如何与leader同步数据

(1)当生产者向 Kafka 集群发送消息时,消息首先被写入 leader 副本所在的 Broker

(2)leader 副本会将这些消息异步地发送给 follower 副本

(3)follower同步完会通知leader,leader确认同步完成

2.5、Broker故障转移

Broker故障时,它上面所有分区都不可用。此时Kafka Controller会检测到这个故障,并开始进行故障转移。它会选择该Broker上的分区副本中的一个作为新的Leader副本,然后通知其他Broker更新元数据信息,将新的Leader副本信息传播到整个集群中。

2.5、Broker Leader的选举

只有一个Kafka Broker能在ZK注册一个临时节点他就是leader节点,其他都是follower节点如果它宕机就会触发其余节点去ZK注册,谁注册成功谁是leader这就是选举。

3、常见问题

3.1、如何判断节点是否存活

(1)心跳机制

每个节点都会定期向集群发送心跳信号通知其他节点它仍存活。如果其他节点一定时间没收到心跳,就会将该节点标记为不可用。

(2)元数据的更新

元数据包含了集群中各节点、主题和分区的信息。当一个节点不再活跃时,它将无法及时更新元数据。其他节点可以通过检查元数据的更新情况来判断一个节点是否还活着

3.2、kafka高可用机制

(1)副本机制

每个主题的分区都可以配置多个副本,这些副本可以分布在不同的 broker 上。当某个 broker 发生故障时,副本可以在其他 broker 上继续提供服务,确保数据不会丢失。

(2)ISR副本集合机制

ISR 是指与 leader 副本保持同步的副本集合。Kafka 使用 ISR 来确保故障时不会丢失数据。当 leader 副本发生故障时,Kafka 会从 ISR 中选择一个新的 leader 副本。

(3)Broker 故障转移机制

当某个 broker 不可用时,Kafka 可以将该 broker 上的分区重新分配到其他可用的 broker 上,从而确保数据的可用性和可靠性。

(4)监控和自动恢复

(5)水平扩展

3.3、Kafka哪些些设计让它高性能

(1)天然分布式架构

(2)零拷贝

在数据被写入或读取时,Kafka 不需要将数据从操作系统缓冲区中拷贝到Kafka的缓冲区,而是直接在内存中进行传输,从而减少了CPU和内存的开销

(3)文件持久化和索引查找

Kafka 使用文件系统来存储消息可保存大量信息,而不是仅仅依赖内存,并且支持索引进行数据恢复

(4)分区和分区再平衡

Kafka 使用分区来实现消息的并行处理,允许多个消费者同时处理不同分区的消息。同时,Kafka 通过再平衡机制可以 动态 地将分区重新分配给消费者,以保持负载的均衡

(5)生产者消费者批处理

3.4、Kafka为什么不支持读写分离

这是分布式场景下的通用问题,CAP理论下,我们只能保证C(一致性)和A(可用性)取其一。副本之间同步来实现副本数据一致过程中肯定会有时间的消耗和延迟,如果支持了读写分离可能数据不一致或滞后

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值