分布式之CAP定理

总结自:

1.CAP Theorem:Revisited

2.网络编程(七):CAP原理推导和应用


先说定义吧

一致性(Consistency):对于某次读取返回的内容是该信息的最新版本。

可用性(Availability):一个正常工作的节点,对于client的请求会在合理的时间内返回一个合理的响应,这个响应不应该是错误也不应该是请求超时。

分区容忍性(Partition Tolerance):当网络分区发生时,系统仍然工作正常。


说说一些注意事项以及认识

1.一致性

不一致并不是像移动通信里面的错误一样,由于干扰的存在产生传输的数据都解码出来错误了。

比如本来拷贝一个变量x,值为1,从node1拷贝到node2,发生错误变成了值为2。

(1)不一致主要是因为需要维护变量x的多个副本,在有些节点或者网络故障的时候,一些对于x变量的修改操作没有在某些节点里面进行,

导致了不同节点之内表示的同一个变量的值不一致。

(2)少数派在crash之后或者在被partition之后,recovery出来执行一些已经执行、没有执行反正不一样的动作。


2.可用性

可用性的概念就是上面提到的概念。值得注意的是,在分析系统的时候我们也经常会将具备可用性的概率也称作可用性。

比如,如果对于单机系统,如果宕机的概率是p,那么就有1-p的概率是具备可用性的,习惯上我们也说可用性是1-p


3.分区容忍性

要弄清分区容忍性,首先就要清楚什么是network partition

network partition就是说,由于网络设备的故障导致原来的网络分裂为2个,分裂出来的2个网络现在是不能互通的了。

而分区容忍性就是说,当network partition发生的时候,系统也能工作正常。

系统也能正常工作的意思是说,系统并没有随着network partition也表现出分裂为两部分的现象,

系统对外仍然表现为仿佛只存在一个统一的整体,并对外提供服务。


4.可用性和分区容忍性的区别

其实在上面的3中,关于分区容忍性的概念还有一个比较模糊的地方,就是什么是系统工作正常。

其实这个系统正常工作就是能不能正常对外提供服务,换句话说就是client来了一个请求,会是一个怎样的结果。

从这个角度来说可用性和分区容忍性的确有很大的相似程度。

我们不妨将整个系统划分为以下几个部分:client、distributed system(node + network)

而我们又可以将distributed system划分为:network和node部分,其中network是node之间通信的网络,而node是对client提供服务的逻辑实体。

我现在的认识是,凡是node对于提供服务的影响就是可用性,凡是network对于提供服务的影响就是分区容忍性。

将这个概念带入到网络编程(七):CAP原理推导和应用里面提供的几个模型中去分析,感觉还是比较清晰地。

特别要注意的是,其实可用性说穿了就是一个请求是否能够顺利达到目的,但是在分析的时候应该对于读请求和写请求分别对待。

因为正如网络编程(七):CAP原理推导和应用里面所列举的,同一个架构下读请求和写请求的可用性改变甚至是相反的。


5.几种网络架构

总结自网络编程(七):CAP原理推导和应用

(1)单机系统

(2)Sharding

(3)多副本读写

(4)Clustering--多副本同步

(5)Clustering--多副本非同步


Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值