《架构设计之[CAP定理]》读后感

news/2024/7/9 22:14:08

  现在有许多互联网项目都是采用分布式结构进行部署。而cap定理是分布式系统中最近出的原则。所以对于哦我们来说,学习cap非常重要。CAP定理又称为布鲁尔定理。CAP定理是指对于一个分布式系统,不能同时满足一致性,可用性,分区容错性。

   一致性(Consisteny)是指,对于任何客户端来说,每次的读操作,都能获得最新的数据。即。当有客户端向A节点写入了新数据之后。从节点B读到的数据也是最新的,与A节点数据保持一致。可用性(Availability)是指,每个请求都能在合理的时间内获得符合预期的响应。简而言之,只要客户端发起请求时,必须给客户回复,不用保证回复的值是否正确。分区容错性(Partition tolerance)是指当节点之间的网络出现问题后,系统依然能正常提供服务。

   应用CAP定理,共有两个架构:cp架构和ap架构。(1)Cp架构是一致性和分区容错性的组合。该结构是指当节点a和节点b不能通讯时,有客户端向节点A进行写入,A节点不接受写入。这样就保证了节点A和节点B的一致性。当客户端请求读出数据时,节点返回网络出现问题之前的数据,这样就保证了分区容错性。(2)ap架构是可用性,分区容错性的组合架构。该结构是指当节点a和节点b不能通讯时,有客户端向节点A进行写入,A节点接受写入。当数据从节点B读出数据时,读出的还是节点a和节点b不能通信时的a的数据,不能读出a新增的数据。但是由于系统能照常提供服务,所以满足了可用性的要求。

Cp和ap架构可以自不同情况下进行应用,例如:在电商系统中,属于用户模块的数据(账密,钱包余额等)对一致性要求没那么高,但是为了照顾用户体验没所以对可用性要求更高一点,那么这个模块可以采用ap架构。

除了cp架构和ap结构,还有ca架构。但是当系统发生网络故障时不能使用ca架构。但是在我们的生活中大多数时间没有网络故障,所以可以采用ca架构。

学习完cap感觉对我们以后设计架构软件时比较有用,尤其是分布式部署系统时,根据具体的功能需求,舍弃掉或放松一些cap特性。当我们不能全都满足时,挑选重要的体位性进行满足,让用户体验更加好。

 

转载于:https://www.cnblogs.com/wl2017/p/10667778.html


http://www.niftyadmin.cn/n/928953.html

相关文章

React的异步组件

最近在学习react,用到了异步组件,实现按需加载chunk.js,减轻首页压力。话不多说,直接上代码:import React, { Component } from "react"; export default function asyncComponent(importComponent) { cla…

程序员协同办公利器 Git,Git从搭建到使用,超完善教程 (包含vscode使用Git与pycharm使用Git方法) ╰( ´・ω・)つ──☆✿✿✿ 项目协同

文章目录Git简介Git的搭建自行搭建Git(创建Git私服)安装Git配置Git用户创建仓库免密处理生成公钥第三方Git平台GitHub简介使用GitHub创建并同步项目GitHub免密处理Git的使用下载与安装git同步仓库最基础的Git方法初次使用gitGit基础配置新仓库非空仓库常用的Git方法Git分支解决…

curl 模拟表单post文件

网上查询出来的几乎都是错误的,正确的应该是: $data array(pic>new CURLFile($path)// 如果无效可以这样 // pic>curl_file_create($path) ); 更多参考:https://www.jianshu.com/p/63b32ceea742 https://blog.csdn.net/a735311619/art…

xss攻击-面向前端的安全攻击 ─=≡Σ(((つ•̀ω•́)つ 知己知彼百战百胜 web安全

文章目录XSS简介测试环境XSS工具步骤与分类XSS用到的一些HTML和JSHTML表单文本框介绍探测xss反射型XSS常用的反射型XSS攻击方法闭合标签使用下拉菜单使用隐藏输入框解除输入框限制使用HTML事件启动攻击JavaScript伪代码XSS攻击防御手段绕过双写绕过编码绕过利用IE特性存储型XSS…

死磕 java集合之LinkedHashSet源码分析

问题 (1)LinkedHashSet的底层使用什么存储元素? (2)LinkedHashSet与HashSet有什么不同? (3)LinkedHashSet是有序的吗? (4)LinkedHashSet支持按元素…

如何在windows电脑中安装OpenSSH服务? (包含面向Windows10和非Windows10两种方法) (〃^ω^) 微软大法好

文章目录OpenSSH简介Windows10系统安装OpenSSHWindows服务器或远古版本安装OpenSSHOpenSSH简介 OpenSSH是Linux上一个类似于Windows远程桌面的工具,可以让Linux的命令行远程操控,但OpenSSH的功能远不止如此。 如果你经常使用Git,为了免密,那你一定离不开OpenSSH,没有这家伙生成…

如何用纯 CSS 创作一个沙漏 loader

效果预览 在线演示 按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。 https://codepen.io/comehope/pen/VGegxr 可交互视频 此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。 请用 chrome, safari, edge 打开…

vscode的git冲突后报错怎么解决?Git:You have not concluded your merge(MERGE HEAD exist)、未能推送refs到远端ヽ(#`Д´)ノ 解决报错

vscode git冲突报错解决方案 当发生冲突,vscode会有如下提示(其中绿色为本地要提交的代码,蓝色为服务器中的代码) 如果选择采用当前更改,之后在进行同步的时候就会报错 推送的时候会报错:未能推送refs到远端。您可以试着运行”拉取功能,整合您的更改。 而拉去的时…