系统性能调优必知必会
陶辉
智链达CTO、前阿里云高级技术专家
立即订阅
5350 人已学习
课程目录
已更新 38 讲 / 共 38 讲
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 |答疑精选:这些问题你都清楚吗?
分布式系统优化 (15讲)
19 | 如何通过监控找到性能瓶颈?
20 | CAP理论:怎样舍弃一致性去换取性能?
21 | AKF立方体:怎样通过可扩展性来提高性能?
大咖助场 | 李玥:高并发场景下如何优化微服务的性能?
22 | NWR算法:如何修改读写模型以提升性能?
23 | 负载均衡:选择Nginx还是OpenResty?
大咖助场|庄振运:与程序员相关的SSD性能知识
24 | 一致性哈希:如何高效地均衡负载?
25 | 过期缓存:如何防止缓存被流量打穿?
加餐3|百万并发下Nginx的优化之道
26 | 应用层多播:如何快速地分发内容?
27 | 消息队列:如何基于异步消息提升性能?
大咖助场|傅健:那些年,影响我们达到性能巅峰的常见绊脚石(上)
大咖助场|傅健:那些年,影响我们达到性能巅峰的常见绊脚石(下)
28 | MapReduce:如何通过集群实现离线计算?
系统性能调优必知必会
15
15
1.0x
00:00/00:00
登录|注册

22 | NWR算法:如何修改读写模型以提升性能?

陶辉 2020-06-29
你好,我是陶辉。
前两讲我们介绍数据库的扩展时,写请求仍然在操作中心化的 Master 单点,这在很多业务场景下都是不可接受的。这一讲我将介绍对于无单点的去中心化系统非常有用的 NWR 算法,它可以灵活地平衡一致性与性能。
最初我们仅在单机上部署数据库,一旦性能到达瓶颈,我们可以基于 AKF Y 轴将读写分离,这样多个 Slave 从库将读操作分流后,写操作就可以独享 Master 主库的全部性能。然而主库作为中心化的单点,一旦宕机,未及时同步到从库的数据就有可能丢失。而且,这一架构下,主库的故障还会导致整个系统瘫痪。
去中心化系统中没有“Master 主库”这一概念,数据存放在多个 Replication 冗余节点上,且这些节点间地位均等,所以没有单点问题。为了保持强一致性,系统可以要求修改数据时,必须同时写入所有冗余节点,才能向客户端返回成功。但这样系统的可用性一定很成问题,毕竟大规模分布式系统中,出现故障是常态,写入全部节点的操作根本无法容错,任何 1 个节点宕机都会造成写操作失败。而且,同步节点过多也会导致写操作性能低下。
NWR 算法提供了一个很棒的读写模型,可以解决上述问题。这里的“NWR”,是指在去中心化系统中将 1 份数据存放在 N 个节点上,每次操作时,写 W 个节点、读 R 个节点,只要调整 W、R 与 N 的关系,就能动态地平衡一致性与性能。NWR 在 NoSQL 数据库中有很广泛的应用,比如 Amazon 的 Dynamo 和开源的 Cassandra,这些数据库往往跨越多个 IDC 数据中心,包含成千上万个物理机节点,适用于海量数据的存储与处理。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《系统性能调优必知必会》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(8)

  • ple
    老师的风格很不一样 很专业 硬核,当真说了一些其他地方不容易看到的.

    作者回复: ^_^

    2020-06-30
    2
  • 0xFE
    keepalived 的配置 quorum up 估计也是同化了这个思想
    2020-07-18
  • 坤哥
    陶老师,异步同步剩下的n-w个节点没说呢? last-write-win 前提各个服务时间戳一致。对于剩下的n-w个节点 谁作leader去同步呢?又怎样同步?
    2020-07-09
  • Jeff.Smile
    NWR算法总结:当鸽子的数量超过了鸽巢后,就要注定某一个鸽巢内一定含有两只以上的鸽子,同样的道理,只要读、写操作涉及的节点超过半数,就注定读写操作总包含一个含有正确数据的节点。NWR 算法将这一原理一般化为:只要读节点数 R + 写节点数 W > 存储节点数 N,特别是 W > N/2 时,就能使去中心的分布式系统获得强一致性。
    --------------------------------
    鸽臼原理推导出的NWR一致性算法,真的大开眼界了。nice!
    2020-07-08
  • tang
    zk就有quorum机制,之前只知道NW😂,原来还需要R才能保证强一致性,,,

    作者回复: ^_^

    2020-07-08
  • 杉松壁
    kafka是不是也是NWR模型

    作者回复: 是的,Kafka在选举leader时,使用了简化版的NWR模型

    2020-07-02
  • 黄海峰
    最后一个多中心例子,“数据中心各设置 N = 3,其中 R、W 则采用 QUORUM 一致性模型”。。。r w采用quorum模型那意思到底是r w分别设为多少呢??为何写的时候alpha要两个返回,beta中心一个返回就行了呢?
    2020-07-01
  • 臭猫
    不同的进程请求写入,是如何协调顺序的呢?比如进程A要set X = 3;进程B要set X =4;

    作者回复: 文稿中倒数第3张图,就是2个进程并发写入的,其中client1、client2就是2个进程,基于Last-Write-Win 策略来协调的

    2020-06-30
    6
收起评论
8
返回
顶部