Kafka_CAP理论以及kafka当中的CAP机制 原创

1246-谭同学

发表文章数:140

首页 » 大数据 » 正文


CAP理论

1.分布式系统当中的CAP理论

问题: 分布式系统的最大难点,就是各个节点的状态如何同步!!

解决: 在1998年,由加州大学的计算机科学家 Eric Brewer 提出分布式系统的三个指标,分别是:
一致性:Consistency
• 通过某个节点的写操作结果对后面通过其它节点的读操作可见
• 如果更新数据后,并发访问情况下后续读操作可立即感知该更新,称为强一致性
• 如果允许之后部分或者全部感知不到该更新,称为弱一致性
• 若在之后的一段时间(通常该时间不固定)后,一定可以感知到该更新,称为最终一致性
可用性:Availability
• 任何一个没有发生故障的节点必须在有限的时间内返回合理的结果
分区容忍性:Partition tolerance
• 部分节点宕机或者无法与其它节点通信时,各分区间还可保持分布式系统的功能

Eric Brewer 说,这三个指标不可能同时做到。最多只能同时满足其中两个条件,这个结论就叫做 CAP 定理

一般而言,都要求保证分区容忍性。所以在CAP理论下,更多的是需要在可用性和一致性之间做权衡。

Kafka_CAP理论以及kafka当中的CAP机制
                    原创

2.Consistency

Consistency 中文叫做"一致性"。意思是,写操作之后的读操作,必须返回该值。举例来说,某条记录是 v0,用户向 G1 发起一个写操作,将其改为 v1
Kafka_CAP理论以及kafka当中的CAP机制
                    原创

接下来,用户的读操作就会得到 v1。这就叫一致性
Kafka_CAP理论以及kafka当中的CAP机制
                    原创

问题发生: 用户有可能向 G2 发起读操作,由于 G2 的值没有发生变化,因此返回的是 v0。G1 和 G2 读操作的结果不一致,这就不满足一致性了
Kafka_CAP理论以及kafka当中的CAP机制
                    原创

解决办法: 为了让 G2 也能变为 v1,就要在 G1 写操作的时候,让 G1 向 G2 发送一条消息,要求 G2 也改成 v1
Kafka_CAP理论以及kafka当中的CAP机制
                    原创

这样的话,用户向 G2 发起读操作,也能得到 v1,体现了一致性(Consistency)

3.Availability

Availability 中文叫做"可用性",意思是只要收到用户的请求,服务器就必须给出回应。
用户可以选择向 G1 或 G2 发起读操作。不管是哪台服务器,只要收到请求,就必须告诉用户,到底是 v0 还是 v1,否则就不满足可用性。

4.Partition tolerance

Kafka_CAP理论以及kafka当中的CAP机制
                    原创

上图中,G1 和 G2 是两台跨区的服务器。G1 向 G2 发送一条消息,G2 可能无法收到。系统设计的时候,必须考虑到这种情况。
一般来说,分区容错无法避免,因此可以认为 CAP 的 P 总是存在的。即永远可能存在分区容错这个问题

5.kafka当中的CAP机制

满足: kafka满足的是CAP定律当中的CA

具体: kafka首先将数据写入到不同的分区里面去,每个分区又可能有好多个副本,数据首先写入到leader分区里面去,读写的操作都是与leader分区进行通信,保证了数据的一致性原则,也就是满足了Consistency原则。然后kafka通过分区副本机制,来保证了kafka当中数据的可用性

问题: 副本分区当中的数据与leader当中的数据存在差别的问题如何解决??这个就是Partition tolerance的问题。

解决办法: 使用了ISR的同步策略
每个leader会维护一个ISR(a set of in-sync replicas,基本同步)列表;ISR列表主要的作用就是决定哪些副本分区是可用的,也就是说可以将leader分区里面的数据同步到副本分区里面去,决定一个副本分区是否可用的条件有两个:
replica.lag.time.max.ms=10000 副本分区与主分区心跳时间延迟
replica.lag.max.messages=4000 副本分区与主分区消息同步最大差

未经允许不得转载:作者:1246-谭同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Kafka_CAP理论以及kafka当中的CAP机制 原创》 发布于2021-02-22

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录