系统性能调优必知必会
陶辉
智链达 CTO,前阿里云 P8 高级技术专家
36367 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
系统性能调优必知必会
15
15
1.0x
00:00/00:00
登录|注册

20 | CAP理论:怎样舍弃一致性去换取性能?

write through模式
write back模式
快照和操作日志的协作
异步方式
同步方式
写操作触发的缓存
读操作触发的缓存
Eventually consistent最终一致性
Soft state软状态
Basically Available基本可用性
Partition tolerance分区容错性
Availability可用性
Consistency一致性
影响性能的因素
不同网络时延和跨IDC情况下的一致性模型考虑
横向上的数据副本和进程同步
纵向上的缓存
纵向和横向两个维度的分布式系统
BASE理论
从时间维度和空间维度设计一致性模型
三者只能取其二的示意
CAP理论的三个核心特性
有状态服务 vs 无状态服务
怎样舍弃一致性去换取性能?
思考题
如何权衡性能与一致性?
CAP理论

该思维导图由 AI 生成,仅供参考

你好,我是陶辉。
上一讲我们介绍了如何通过监控找到性能瓶颈,从这一讲开始,我们将具体讨论如何通过分布式系统来提升性能。
在第一部分课程中,我介绍了多种提升单机处理性能的途径,然而,进程的性能必然受制于一台服务器上各硬件的处理能力上限。如果需要进一步地提升服务性能,那只有整合多台主机组成分布式系统才能办到。
然而,当多台主机通过网络协同处理用户请求时,如果主机上的进程含有数据状态,那么必然需要在多台主机之间跨网络同步数据,由于网络存在时延,也并不稳定,因此不可靠的数据同步操作将会增加请求的处理时延。
CAP 理论指出,当数据同时存放在多个主机上时,可用性与一致性是不可兼得的。根据 CAP 的指导性思想,我们可以通过牺牲一致性,来提升可用性中的核心因素:性能。当然,在实践中对一致性与性能并不是非黑即白的选择,而是从概率上进行不同程度的取舍。
这一讲,我们将基于分布式系统中的经典理论,从总体上看看如何设计一致性模型,通过牺牲部分数据的一致性来提升性能。

如何权衡性能与一致性?

首先,这节课针对的是有状态服务的性能优化。所谓有状态服务,是指进程会在处理完请求后,仍然保存着影响下次请求结果的用户数据,而无状态服务则只从每个请求的输入参数中获取数据,在请求处理完成后并不保存任何会话信息。因此,无状态服务拥有最好的可伸缩性,但涉及数据持久化时,则必须由有状态服务处理,这是 CAP 理论所要解决的问题。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

CAP理论是分布式系统设计中的重要理论,强调一致性、可用性和分区容错性三者只能取其二。在权衡性能与一致性时,需要考虑如何通过最终一致性来提升性能。文章介绍了在纵向和横向两个维度上如何通过缓存和数据副本来实现性能优化,以及同步方式和异步方式对系统性能和一致性的影响。此外,文章还提到了在不同网络环境下如何考虑一致性模型的问题。通过理论和实践相结合的方式,为读者提供了权衡性能与一致性的思路和方法。文章内容丰富,涵盖了分布式系统设计中的关键概念和实际应用,对读者快速了解分布式系统设计中的性能与一致性权衡问题具有重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《系统性能调优必知必会》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • 唐朝首都
    Idc内部因为时延小,网络稳定,可采用同步模式;不同Idc之间,可采用异步模式,以保证各Idc的性能,实现最终的一致性。
    2020-06-22
    18
  • leslie
    老师说的物理模型其实是主从与灾备:2地3中心。 其实同城主从速率还好,我觉得这块其实云服务在这块还是做的不错的。 异地网络问题确实没有过多的好的选择:可能我们能做的选择只是把某些关键设备放在这块相对好的城市,曾经某金融交易所就是因此把核心机房搬到某一线城市。
    2020-06-29
    2
  • Ken
    老师,对于多机房往往存储也会做双活,在这个基础上,是否应用/中间件的数据同步也能依赖于存储双活实现呢?
    2020-06-30
    2
    1
  • 阳仔
    相同idc内可以考虑强一致性cp,不同idc间选择ap,达到最终一致性就可以
    2020-06-25
    1
  • tt
    如果把缓存和对应的源看做异构的副本,那write backq就能对应于异步复制,write through就能对应于同步复制了。这样忽略底层细节,只从数据一致性的角度出发,就可以统一记忆这两种处理数据的方法了。
    2020-06-22
    1
  • 新@青春
    对于某些一致性要求特别高的请求,采用同步比较合适,性能相对而言重要性轻,对于一致性要求不高的请求,采用异步,比较比较合适,提高用户的体验。需要对功能进行拆分(按一致性的重要性)。不知这样理解,老师认为会有些偏吗?
    2020-06-25
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部