cap
分布式
CAP场景分析:
假设我们用一台服务器A对外提供存储服务,为了避免这台服务器宕机导致服务不可用,我们又在另外一台服务器B上运行了同样的存储服务,每当用户在往服务器A写入数据时,A都往服务器B上写一份,然后再返回客户端。一切都运行的很好,用户的每份数据都分别在A和B上,用户访问任意一台机器都能读取到最新的数据。
这时候,不幸的事情发生啦:A和B之间的网络断了导致A和B无法通信,也就是说网络网络出现了分区,那么用户在往服务器A写入数据的时候,A无法将数据写入到服务器B,这时,服务器A就必须做一个艰难的选择:
要么选择一致性C而牺牲可用性:为了保证服务器A和服务器B上面数据是一致的,服务器A决定暂停对外提供写入服务,从而保证了服务器A和B上数据的一致性,凡是牺牲了可用性。注意,这里的可用性不是我们通常所说的高可用性(比如服务器宕机导致服务不可用),而是指服务器虽然还活着,但是却不能对外提供写入服务。
要么选择可用性而牺牲一致性:为了保证服务不中断,服务器A先把数据写入到本地,然后返回客户端,从而让客户端感觉数据已经写入了,这导致了服务器A和B上数据不一致了。
可用性和一致性之间的选择不是非此即彼的,而是根据业务的需求在他们两者之间做妥协:
我们可以放弃对强一致性的要求,让其变成最终一致性,也就是说当服务器不能把数据传给服务器B的时候,先将数据缓存在本地,等到网络恢复之后再将数据传给服务器B,这样,服务还是可用的,只是在一定的时间窗口内两者的数据是不一致的。
保证最终一致性,不保证实时的一致性。
相关阅读
Ciclop开源3D扫描仪软件---Horus源码分析之Image_capt
* 联系方式:*
Adobe Captivate 2019激活破解安装详细图文教程(附注
AdobeCaptivate2019破解版是一款可以帮助您快速创作多种交互式的电子课件制作以及录像工具,可以制作出html5的学习内容。Captivate
关于SetCapture() 和 ReleaseCapture()的用法
查MSND,对SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对
简单的发包工具——网络协议编辑器(python+scapy+pycha
一、实现的功能基于python+scapy设计协议编辑器,基于Tkinter的Python GUI界面设计。实现了MAC、ARP、IP 、TCP、UDP协议的编辑与
Captura是一款免费开源的屏幕录制工具,它能够将屏幕上的任意区域、窗口录制成视频,可以选择是否显示鼠标、记录鼠标点击、键盘按键