系统性能调优必知必会
陶辉
智链达CTO、前阿里云高级技术专家
立即订阅
5375 人已学习
课程目录
已更新 39 讲 / 共 43 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 万变不离其宗,性能优化也有章可循
免费
基础设施优化 (6讲)
01 | CPU缓存:怎样写代码能够让CPU执行得更快?
02 | 内存池:如何提升内存分配的效率?
03 | 索引:如何用哈希表管理亿级对象?
04 | 零拷贝:如何高效地传输文件?
05 | 协程:如何快速地实现高并发服务?
06 | 锁:如何根据业务场景选择合适的锁?
系统层网络优化 (7讲)
07 | 性能好,效率高的一对多通讯该如何实现?
08 | 事件驱动:C10M是如何实现的?
09 | 如何提升TCP三次握手的性能?
10 | 如何提升TCP四次挥手的性能?
11 | 如何修改TCP缓冲区才能兼顾并发数量与传输速度?
12 | 如何调整TCP拥塞控制的性能?
13 | 实战:单机如何实现管理百万主机的心跳服务?
应用层编解码优化 (6讲)
14 | 优化TLS/SSL性能该从何下手?
15 | 如何提升HTTP/1.1性能?
16 | HTTP/2是怎样提升性能的?
17 | Protobuf是如何进一步提高编码效率的?
18 | 如何通过gRPC实现高效远程过程调用?
特别放送 | 大厂面试到底在考些什么?
期中考试周 (3讲)
期中考试|行至半程,你的收获如何呢?
加餐1|特别福利:陶辉视频课精选
加餐2 |答疑精选:这些问题你都清楚吗?
分布式系统优化 (16讲)
19 | 如何通过监控找到性能瓶颈?
20 | CAP理论:怎样舍弃一致性去换取性能?
21 | AKF立方体:怎样通过可扩展性来提高性能?
大咖助场 | 李玥:高并发场景下如何优化微服务的性能?
22 | NWR算法:如何修改读写模型以提升性能?
23 | 负载均衡:选择Nginx还是OpenResty?
大咖助场|庄振运:与程序员相关的SSD性能知识
24 | 一致性哈希:如何高效地均衡负载?
25 | 过期缓存:如何防止缓存被流量打穿?
加餐3|百万并发下Nginx的优化之道
26 | 应用层多播:如何快速地分发内容?
27 | 消息队列:如何基于异步消息提升性能?
大咖助场|傅健:那些年,影响我们达到性能巅峰的常见绊脚石(上)
大咖助场|傅健:那些年,影响我们达到性能巅峰的常见绊脚石(下)
28 | MapReduce:如何通过集群实现离线计算?
29 | 流式计算:如何通过集群实现实时计算?
系统性能调优必知必会
15
15
1.0x
00:00/00:00
登录|注册

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

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

如何权衡性能与一致性?

首先,这节课针对的是有状态服务的性能优化。所谓有状态服务,是指进程会在处理完请求后,仍然保存着影响下次请求结果的用户数据,而无状态服务则只从每个请求的输入参数中获取数据,在请求处理完成后并不保存任何会话信息。因此,无状态服务拥有最好的可伸缩性,但涉及数据持久化时,则必须由有状态服务处理,这是 CAP 理论所要解决的问题。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《系统性能调优必知必会》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(6)

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