分布式之CAP原则

news2024/9/20 14:35:04

文章目录

  • 一、知识储备
    • 1.1 一致性(Consistency)
    • 1.2 可用性(Availability)
    • 1.3 分区容错性(Partition tolerance)
  • 二、CAP原则
    • 2.1 证明
  • 三、常见分布式系统采用的原则
    • 3.1 CP原则
    • 3.2 AP原则
    • 3.3 CA原则
    • 3.4 动态调节一致性和可用性(TACT)
  • 三、应用场景

一、知识储备

1.1 一致性(Consistency)

一致性,指的是分布式系统完成某个写操作时,服务器的各个都应该获取到最新的值,保持各个节点之前的数据一致性

1.2 可用性(Availability)

可用性,指的是在分布式系统中,用户可以永远在正常时间内进行读和写操作,一直可以正常访问并得到响应

1.3 分区容错性(Partition tolerance)

分区容错性,是指在分布式系统中,其中一个节点宕机,整个系统还是能满足一致性和可用性的服务,即部分故障不影响整体使用,所以在项目架构时都会考虑一些外部因素造成的故障,都是要求部分故障不影响整体使用的。

二、CAP原则

CAP原则,指在分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance),这三个要素最多只能同时实现两点,不可能三者兼顾。

2.1 证明

假设有一个简单的分布式系统,只有两台机器A和B,并且发生了网络分区,即A和B之间不能互相通信。
此时,客户端向A发起了一个写请求,并且收到了成功的响应。接着客户端又对B发起了一次读请求,因为B没有收到来自A的同步信息,所以B只有两种选择:要么返回自身已知但已过时的信息,这就违背了一致性;要么不做出响应,这就违背了可用性。

三、常见分布式系统采用的原则

在这里插入图片描述

3.1 CP原则

CP:优先保证一致性和分区容错性,在数据一致性要求比较高的场合使用,在出现问题时牺牲用户体验,恢复之后用户正常访问。

zookeeper保证CP原则,即一致性、分区容错性 。zookeeper对于故障实例会直接剔除,不能保证每次请求的可用性,如果其中一个节点宕机或者在和另外一个节点同步数据的时候网络发生问题,请求就会出问题,会等恢复正常数据同步之后才会继续可以访问。==

3.2 AP原则

AP:优先保证可用性和分区容错性,其中一个节点出问题之后还是能正常访问,不会影响用户体验,但是可能接收到的数据不是最新的数据,恢复之后数据变一致。

==Eureka保证AP原则,即可用性、分区容错性 。Eureka为了实现更高的服务可用性,牺牲了一定的一致性,极端情况下宁愿接收故障实例也不愿丢掉健康实例。在其中一个节点出问题时,其他节点可以正常访问,只不过可能数据不是最新数据,eureka还有自我保护机制,在运行期间统计心跳失败的比例,在15分钟之内是否小于85%,如果低于的话就会将这些实例保护起来,不会注销此项服务

3.3 CA原则

CA:数据一致性、可用性。比如京东的JSF微服务框架。

3.4 动态调节一致性和可用性(TACT)

Tunable Availability and Consistency Tradeoffs,简称TACT,是Haifeng Yu和Amin Vahdat提出的一个概念。在这种场景下,不再将一致性和可用性看成非此即彼的关系,而是根据将其看作一个连续的变量,根据实际的需要在其中做选择。

如飞机的订票系统,在余票较多情况下,可以优先保证可用性,随着余票数量下降,系统的一致性越来越重要。例如Cassandra就使用了这种设计思路,可以在读写数据时设置consistency level,根据consistency level来调整系统提供更高的可用性还是一致性。

三、应用场景

  1. CA without P,放弃系统扩展性,不部署子节点,比如

    (1)单节点的关系型数据库

  2. CP without A,在分布式服务器中保持强一致性,但可能会导致同步时间长,比如

    (1)分布式数据库redis

  3. AP without C,放弃一致性,保持高可用。每个节点使用本地数据提供服务,使得全局数据不一致。比如

    (1)手机网购,可能浏览商品时还有货,但下单时系统告诉你下单失败。
    (2)web缓存,相比于长时间加载不出来网页,用户看到没有更新的网页可能更容易接受。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/393604.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

可视化爬虫框架spiderflow入门及实战

官网: 点击直达官网 文档: 点击查看官网文档 以下内容部分来自官网或官网文档。文章比较长,请准备好瓜子和小板凳~~~ TIP: 文中用到的网站地址仅为了说明功能,如有侵犯,请告知,会及时删除或者修改本文仅供学习参考&am…

合作伙伴管理软件VS CRM,企业应该选择哪一个?

当涉及到管理你公司的伙伴关系和与客户的关系时,有两个主要选择:合作伙伴管理软件和CRM(客户关系管理)软件。虽然这两种工具都可以帮助你跟踪商业关系的重要信息,但它们都有各自的优势和不足。 合作伙伴管理软件是专门…

没有钢琴也可实现弹奏自由?实时在Jetson上运行单阶段手指关键点模型

钢琴是人类创作音乐的经典乐器,程序是实现创意的工具之魂。今天我给大家分享用程序实现的桌上钢琴师项目。本项目基于飞桨实现一个虚拟钢琴,让大家可以在任意平面上弹奏钢琴,实现弹奏自由。 该项目的原理是利用手部关键点检测模型识别手的关键…

金三银四,我猜你需要这套网络安全工程师面试题合集【全网首发】

以下为信息安全/网络安全各个方向涉及的面试题,星数越多代表问题出现的几率越大,祝各位都能找到满意的工作~ 注:做这个List的目标不是很全,因为无论如何都不可能覆盖所有的面试问题,更多的还是希望由点达面&#xff0…

h264编码之SPS解析

一、概念 SPS即Sequence Paramater Set,又称作序列参数集。SPS中保存了一组编码视频序列(Coded video sequence)的全局参数。 二、定义 H.264标准协议中规定的SPS格式位于文档的7.3.2.1.1,如下图所示: 1、profile_idc 根据《T-REC-H.264-2…

数据库的备份与恢复

文章目录前言备份恢复概述故障的种类数据库备份数据库的恢复日志文件前言 提示:这里可以添加本文要记录的大概内容: 备份与恢复是为了防止数据库运行出现故障时造成数据丢失、损坏的一个重要手段 提示:以下是本篇文章正文内容,…

【SAP PO】X-DOC:SAP PO 接口配置完整教程之三REST服务发布报文转换

X-DOC:SAP PO 接口配置完整教程之三REST服务发布&报文转换1、SAP端RFC开发2、PO端接口配置2.1、PO端SLD配置2.2、PO端ESB配置2.3、PO端IB配置2.4、Postman测试3、报文转换配置1、SAP端RFC开发 开发一个支持远程访问的RFC: FUNCTION yfm_xl_rest_de…

水库大坝安全监测及水情自动测报系统(设备清单)

解决方案水库大坝安全监测及水情自动测报系统方案,系统主要由降雨量监测站、水库水位监测站、大坝安全监测中的渗流量、渗流压力和变形监测站及视频和图像监测站等站点组成,同时建立规范、统一的监测平台,集数据传输、信息共享、数据储存于一…

springBoot健康检查与k8s探针

从springBoot健康检查到k8s探针的问题定位 环境: k8s、springboot、mysql、flyway、Spring boot 2.0 Actuator健康检查组件等 问题: 项目中集成了flyway,当项目第一次启动时,都会初始化flyway文件,再加上各种组件的…

水文模型有哪些?SWAT模型、VIC模型、HEC模型、HSPF模型、HYPE模型、SWMM模型、FVCOM模型、Delft3D模型等应用

目录 ㈠ 从小白到精通SWAT模型学习建模方法、实例应用、高级进阶 ㈡ RVIC模型融合实践技术应用及未来气候变化模型预测 ㈢ HEC-RAS一维、二维建模方法及实践技术应用 ㈣ HEC-HMS水文模型实践技术应用 ㈤ HSPF 模型应用 ㈥ HYPE分布式水文模型建模方法与案例分析 ㈦ 基于…

raspberry安装ffmpeg以及扩展了解

文章目录ffmpeg简介使用ffmpegffplay播放控制命令播放滤镜处理参数选项ffprobeffmpeg sudo apt-get install ffmpeg简介 FFmpeg的名称来自MPEG视频编码标准,前面的“FF”代表“Fast Forward”,FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0…

Godot Engine 4.0横空出世,Vulkan大怪兽加持,画质提升简直亮瞎眼

【CSDN 编者按】经历了漫长的等待,万众瞩目的 Godot Engine 4.0 正式版在其 3.0 版本发布 5 年以后,终于带着海量令人兴奋的新功能横空出世! 整理 | 开发游戏的老王 责编 | 王子彧 出品 | CSDN(ID:CSDNnews&#xff09…

优思学院|盘点,精益生产25个工具!【必需收藏】

精益生产方法需要一种全面的方法才能有效实施。精益这个概念是每个接触产品供应链的人都要实践的,无论是在计划方面还是在分析方面。 精益生产工具有助于持续改进生产效率和产品或服务质量。精益工具是要减少 Muda (浪费),从生产过…

内存清理、动画制作、CPU检测等五款实用软件推荐

人类与99%的动物之间最大差别在于是否会运用工具,借助好的工具,能提升几倍的工作效率。 1.内存清理软件——MemReduct MemReduct是一款内存清理软件,现在越来越多的软件由于硬件的普遍发展,对内存的使用都开始肆无忌惮起来&…

【C++】list的使用和基本迭代器框架的实现 vs和g++下string结构的说明

真正的成熟应该并不是追求完美,而是直面自己的缺憾,这才是生活的本质。 文章目录一、初见list1.list的迭代器失效和基本使用2.list的operations操作接口(看起来挺不错的接口,但可惜不怎么实用)3.vector和list的排序性能…

Linux系统基础命令(二)

一、浏览和切换目录 ls命令:列出文件和目录,主要用于列出文件和目录 CentOS的终端默认是有颜色标注的。一般来说:蓝色--->目录;绿色-->可执行文件;红色--->压缩文件;浅蓝色--->链接文件&#…

Java并发类库提供的线程池有哪几种? 分别有什么特点?

第21讲 | Java并发类库提供的线程池有哪几种? 分别有什么特点? 我在专栏第 17 讲中介绍过线程是不能够重复启动的,创建或销毁线程存在一定的开销,所以利用线程池技术来提高系统资源利用效率,并简化线程管理&#xff0c…

计算机网络总结

第一章 互联网 互连网:局部范围互连起来的计算机网络,与网络相连的计算机常称为主机。 互联网:当今世界上最大的计算机网络,Internet 两个基本特点 连通性,资源共享(信息,软件,硬件) 计算…

Ubuntu18安装新版本PCL-1.13,并和ROS自带PCL-1.8共存

文章目录1.安装新版本PCL-1.132.在工程中使用新版本的PCL-1.133.pcl-1.13误装到/usr/local/下如何卸载1.安装新版本PCL-1.13 下载PCL-1.13代码: 修改CMakeLists.txt文件,不编译vtk相关的代码:vtk的问题比较难解决,但是一般我们安…

科技大势怎么看 2023怎么干?

2023年,科技的走向依旧是世界各国的关注重点,各国在纷纷设立自己的科技战略目标外,还在潜心研究不同技术领域的科技趋势,试图通过科技占据国际竞争的制高点。 随着我国深入实施创新驱动发展战略,推动产业结构优化升级&…