云畅网站建设,左侧菜单 网站,网站建设套餐怎么样,1122t文章目录 介绍目标 正文CAPConsistencyAvailabilityPartition tolerance BASEBasically AvailableSoft StateEventually Consistent ACIDatomicityconsistencyisolationdurability 参考文档 介绍
分布式系统面临的场景往往是众口难调#xff0c;“这也要#xff0c;那也要”… 文章目录 介绍目标 正文CAPConsistencyAvailabilityPartition tolerance BASEBasically AvailableSoft StateEventually Consistent ACIDatomicityconsistencyisolationdurability 参考文档 介绍
分布式系统面临的场景往往是众口难调“这也要那也要”最后可能啥都得不到这就是分布式系统的常态没有灵丹妙药都是妥协和退无可退 其实类似金融中的不可能三角固定汇率、自由市场、独立货币政策不能都得到仔细思考会发现非常有趣
目标
温习分布式系统的基础理论尤其是常见的设计思想和理论温故而知新。
正文
分布式系统的基础理论有CAP、BASE本文主要介绍它们以及做下diff顺带对比ACID
CAP
强一致性和可用性都比较好理解最不好理解的就是分区容错性 分区容错更多说的是一种系统出现分区时该如何继续下去也就是常说的保证了P的时候此时关注A还是C 目前大多数互联网公司包括个人工作过的公司基本都是AP毕竟给老板画饼定OKR的时候都是SLA xx个9目前没见过人说为了一致性系统全年停服一半以上时间没有可用性其他都没有意义用户就是上帝听说金融系统CP较多但是细琢磨也够呛毕竟数据进来了可以通过日志做清洗停服没用户、流量进来公司都活不下去谈其他似乎也不合理参考铁路的抢票系统 曾经在国内top级的电商公司做分布式存储为了保证可用性在流量最大的那几天默认是忽视一致性的 “池塘先修大点鱼进来了就跑不了不行我们再下水去捞呗”通过日志的形式把所有流量都兜住然后扩容上大规模计算集群异步做流量回放降噪、聚合、汇总保证最终一致性熔断、降低更是闻所未闻毕竟没人会承认自己服务扛不住了要在双11掉链子毕竟在誓师大会上亲眼见过老板们赌咒发誓承诺100%没问题迫于现实的无奈实践了BASE理论想来也是”得道多助天助我也“。
Consistency
强一致性 注意国内翻译的原因往往忽略了强一致性而是翻译为一致性 指的是请求分布式系统任意一节点拿到的数据都是一致且是最新版本的也就意味着所有节点上的数据都是完全一致版本也一致且是最新的节点/数据不存在中间状态
Availability
可用性 指的是每次请求收到的响应都是非异常
Partition tolerance
分区容错性 指的是当通信故障时系统发生了分区此时系统能否继续运行按照何种方式对外提供服务A还是C
BASE
现有的或者说大多数系统基本都是BASE的最佳实践者系统的第一目标是可用一致性可通过其他手段“慢慢”实现或者说当系统可以承担一定时间内的数据不一致造成的损失那么就没有必要花费更多成本去实现强一致性 比如消息队列领域Kafka通过Zookeeper实现强一致性约束导致服务可用性相较于RocketMQ等差了很多反观RocketMQ等对于强一致性的约束更为宽泛甚至变成可配置项如果要求走强一致性那么就需要开启同步刷盘且ALLACK否则可以通过异步等方式提高可用性降低一致性按需索取 最终一致性的范例就是Consul协议Gossip原理类似八卦一传十十传百理论上总归所有人都能知道
Basically Available
基本可用 参考CAP的可用性
Soft State
软状态 数据的状态不是不可修改的允许数据/节点存在中间状态
Eventually Consistent
最终一致性 数据/节点经过一定时间后从中间状态最终变成一致实现所有数据/节点的状态一致
ACID
atomicity
原子性atomicity或称不可分割性
consistency
一致性consistency
isolation
隔离性isolation又称独立性
durability
持久性durability
参考文档
数据密集型应用系统