当前位置: 首页 > news >正文

代刷推广网站大连建站平台

代刷推广网站,大连建站平台,项目从立项到结束的流程图,重庆设计网站目录 前言 副本定义 副本角色 In-sync Replicas(ISR) 参考资料 前言 现在的很多的分布式系统都支持副本的机制,比如Mysql就有副本的机制,一般使用副本有如下特性和好处。 提供数据冗余。即使系统部分组件失效,系…

目录

前言

 副本定义

副本角色 

 In-sync Replicas(ISR)

参考资料 


前言

现在的很多的分布式系统都支持副本的机制,比如Mysql就有副本的机制,一般使用副本有如下特性和好处。

  • 提供数据冗余。即使系统部分组件失效,系统依然能够继续运转,因而增加了整体可用性以及数据持久性。
  • 提供高伸缩性。支持横向扩展,能够通过增加机器的方式来提升读性能,进而提高读操作吞吐量。
  • 改善数据局部性。允许将数据放入与用户地理位置相近的地方,从而降低系统延时。

而kafka的副本机制仅仅享受到了第一个好处。但是即使是这样,kafka的副本机制也是确保系统高可用和消息高持久性的重要基石。

 副本定义

Kafka 是有主题概念的,而每个主题又进一步划分成若干个分区。副本的概念实际上是在分区层级下定义的,每个分区配置有若干个副本。 

所谓副本(Replica),本质就是一个只能追加写消息的提交日志。根据 Kafka 副本机制的定义,同一个分区下的所有副本保存有相同的消息序列,这些副本分散保存在不同的 Broker 上,从而能够对抗部分 Broker 宕机带来的数据不可用。

在实际生产环境中,每台 Broker 都可能保存有各个主题下不同分区的不同副本,因此,单个 Broker 上存有成百上千个副本的现象是非常正常的。

示例图如下:

副本角色 

 既然分区下能够配置多个副本,而且这些副本的内容还要一致,那么很自然的一个问题就是:我们该如何确保副本中所有的数据都是一致的呢?特别是对 Kafka 而言,当生产者发送消息到某个主题后,消息是如何同步到对应的所有副本中的呢?针对这个问题,最常见的解决方案就是采用基于领导者(Leader-based)的副本机制。

副本机制的工作原理图如下:

第一,在 Kafka 中,副本分成两类:领导者副本(Leader Replica)和追随者副本(Follower Replica)。每个分区在创建时都要选举一个副本,称为领导者副本,其余的副本自动称为追随者副本。

第二,Kafka 的副本机制比其他分布式系统要更严格一些。在 Kafka 中,追随者副本是不对外提供服务的。这就是说,任何一个追随者副本都不能响应消费者和生产者的读写请求。所有的请求都必须由领导者副本来处理,或者说,所有的读写请求都必须发往领导者副本所在的 Broker,由该 Broker 负责处理。追随者副本不处理客户端请求,它唯一的任务就是从领导者副本异步拉取消息,并写入到自己的提交日志中,从而实现与领导者副本的同步。

第三,当领导者副本挂掉了,或者说领导者副本所在的 Broker 宕机时,Kafka 依托于 ZooKeeper 提供的监控功能能够实时感知到,并立即开启新一轮的领导者选举,从追随者副本中选一个作为新的领导者。老 Leader 副本重启回来后,只能作为追随者副本加入到集群中。 

 既然如此,Kafka 为什么要这样设计呢?其实这种副本机制有两个方面的好处。

1、方便实现“read your writes” 

所谓 Read-your-writes,顾名思义就是,当你使用生产者 API 向 Kafka 成功写入消息后,马上使用消费者 API 去读取刚才生产的消息。

2、方便实现单调读(Monotonic Reads)

 什么是单调读呢?就是对于一个消费者用户而言,在多次消费消息时,它不会看到某条消息一会儿存在一会儿不存在。

 In-sync Replicas(ISR)

 Kafka 引入了 In-sync Replicas,也就是所谓的 ISR 副本集合。ISR 中的副本都是与 Leader 同步的副本,相反,不在 ISR 中的追随者副本就被认为是与 Leader 不同步的。那么,到底什么副本能够进入到 ISR 中呢?

我们首先要明确的是,Leader 副本天然就在 ISR 中。也就是说,ISR 不只是追随者副本集合,它必然包括 Leader 副本。甚至在某些情况下,ISR 只有 Leader 这一个副本。

 Broker 端参数 replica.lag.time.max.ms 参数值。这个参数的含义是 Follower 副本能够落后 Leader 副本的最长时间间隔,当前默认值是 10 秒。这就是说,只要一个 Follower 副本落后 Leader 副本的时间不连续超过 10 秒,那么 Kafka 就认为该 Follower 副本与 Leader 是同步的,即使此时 Follower 副本中保存的消息明显少于 Leader 副本中的消息。 

Kafka 把所有不在 ISR 中的存活副本都称为非同步副本。通常来说,非同步副本落后 Leader 太多,因此,如果选择这些副本作为新 Leader,就可能出现数据的丢失。毕竟,这些副本中保存的消息远远落后于老 Leader 中的消息。在 Kafka 中,选举这种副本的过程称为 Unclean 领导者选举。Broker 端参数 unclean.leader.election.enable 控制是否允许 Unclean 领导者选举。

如果你听说过 CAP 理论的话,你一定知道,一个分布式系统通常只能同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)中的两个。显然,在这个问题上,Kafka 赋予你选择 C 或 A 的权利。

强烈建议你不要开启它,毕竟我们还可以通过其他的方式来提升高可用性。如果为了这点儿高可用性的改善,牺牲了数据一致性,那就非常不值当了。

参考资料 

23 | Kafka副本机制详解-极客时间

http://www.yayakq.cn/news/503653/

相关文章:

  • 汕头网站开发服务我爱做衣服网站
  • 合肥网站建设技术托管网站开发盈亏平衡分析表
  • 检测网站是否被墙计算机网络技术是干嘛的
  • 自己做高仿衣服网站查域名注册
  • 金阊网站建设wordpress 用户留言
  • 萍乡网站建设哪家好规范网站维护 建设 管理
  • 宁德市城乡住房建设厅网站城市宣传网站建设方案
  • 到位app做网站需要些程序wordpress 统计浏览量
  • 肥城网站建设方案网站空间购买时选择什么脚本语言
  • 烟台网站建设托管设计企业
  • 毕业设计做网站做什么好wordpress批量传图片大小
  • 网站建设用什么技术wordpress侧边栏在哪调
  • 个人商城网站源码下载怎么用dw做响应式网站
  • 怎么制作单页网站新闻头条最新消息今天
  • 外贸 模板网站 定制网站郑州网站建设 论坛
  • 郑州建设网站报价微信公众平台 网站开发
  • 宝安区建设工程交易服务中心云南效果好的网站优化
  • 如何建论坛网站备案域名购买阿里云
  • 建站流程主要有哪些企业网站建设方案及报价
  • 专业网站建设在哪里wordpress ajax 分页
  • 最专业网站建设公网站建设-纵横网络
  • 国外主题网站辛集外贸网站建设
  • 视频网站亏损也做唐山最新消息今天
  • 网站服务器时间查询工具上海一 网站建设公司
  • 做外贸网站商城个人网站备案备注写什么
  • 如何修改上线网站想学广告设计没有基础
  • 刷推广链接的网站哈尔滨住房建设发展集团网站
  • 什么语言网站比较安全沈阳做一个网站需要多少钱
  • 苍南具城乡建设局网站网站开发语言有什么要求
  • 定制化网站开发费用wordpress升级数据库