扫码阅读
手机扫码阅读

Kafka 副本间如何实现数据同步?

150 2024-07-19

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:Kafka 副本间如何实现数据同步?
文章来源:
咸鱼运维杂谈
扫码关注公众号
Kafka介绍摘要

咸鱼,一位繁忙的博主,近期在学习Kafka,并决定写一篇介绍Kafka的文章。他意识到可能有些读者不熟悉Kafka,因此他首先对Kafka进行了一个简单的介绍。

Kafka 介绍

Kafka是一个能够处理高吞吐量的分布式消息系统,它不仅具备异步处理、流量消峰、服务解耦的特性,还能够将消息持久化到磁盘,支持批量消费。作为一个分布式系统,Kafka拥有高吞吐量和高可用性。

Kafka 角色

在Kafka中,客户端可以是生产者(producer)或消费者(consumer),分别负责创建和读取消息。服务端(broker)由leader负责对外提供读写服务,而follower负责数据同步。

Topic(主题)和 Partition(分区)

消息在topic中发布,消费者通过订阅topic获取消息。为了提高吞吐量和实现负载均衡,topic被分为多个partition,每个partition是一个有序且不可变的消息队列,允许并行消费。

Log(日志)

Kafka为每个topic维护一个分区日志,分区内的消息带有唯一序列号即偏移量(Offset),用于标识记录。Kafka不会自动删除消息,保留策略由配置参数控制。

Kafka 集群

Kafka采用分布式架构,多个broker组成集群。分区有多个副本,分散在不同的broker上,其中一个副本作为Leader,其余为Follower。集群内一个broker充当集群控制器,管理集群。

数据同步

通过ISR(In-Sync Replicas)机制,follower定期向leader发送fetch请求来同步数据。若follower在指定时间内未能同步,则会被从ISR中移除。

咸鱼总结,Kafka的topic是逻辑上的概念,分区是实际存储消息的单位。分区的副本中选一个作为leader,其它作为follower。Follower通过fetch请求与leader保持数据同步,而leader会在follower未及时同步时将其从ISR中移除。

文章结尾,咸鱼提及中国互联网公司Top100排行榜,Python语言的特性,CPython中GIL锁的未来可能性,以及Linux安装软件的几种方式。

想要了解更多内容?

查看原文:Kafka 副本间如何实现数据同步?
文章来源:
咸鱼运维杂谈
扫码关注公众号