现在有许多互联网项目都是采用分布式结构进行部署。而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特性。当我们不能全都满足时,挑选重要的体位性进行满足,让用户体验更加好。

《架构设计之[CAP定理]》读后感的更多相关文章

  1. 《DevOps软件架构师行动指南》读后感

    从软件架构师视角讲解了引入DevOps实践所需要拥有的技术能力,涵盖运维.部署流水线.监控.安全与审计以及质量关注,这是本书一开始内容简介的开头,本书的作者是伦恩·拜斯(Len Bass).英戈·韦伯 ...

  2. nodejs开发指南读后感

    nodejs开发指南读后感 阅读目录 使用nodejs创建http服务器; supervisor的使用及nodejs常见的调式代码命令了解; 了解Node核心模块; ejs模板引擎 Express 理 ...

  3. DevOps:软件架构师行动指南(文摘)

    第一部分 背景 第1章 DevOps是什么 第二部分 部署流水线 第三部分 横切关注点 第四部分 案例研究 第五部分 走向未来

  4. 2020年DevOps工程师入门指南

    DevOps兴起于2010年代,到现在DevOps已经在行业中拥有了一席之地,并在继续发展壮大. 有兴趣成为一名DevOps工程师吗?如果想要成为一名DevOps工程师,需要做到以下五点: 要有开发者 ...

  5. 5月29日 Java性能调优指南 读后感

    并行垃圾收集器 串行垃圾收集器 并发标记清除(CMS)垃圾收集器 Garbage First(G1)垃圾收集器 没有深入的学习G1的原理,只是看了大概的思想; SA工具:待学习

  6. 敏捷开发、DevOps相关书籍——书单

    自己瞎整理的一些书单,都是豆瓣评分比较高的书,可以作为选择的一个参考. 书名 豆瓣链接 持续交付:发布可靠软件的系统方法 https://book.douban.com/subject/6862062 ...

  7. 有奖试读—Windows PowerShell实战指南(第2版)

    为什么要学PowerShell? Windows用户都已习惯于使用图形化界面去完成工作,因为GUI总能轻易地实现很多功能,并且不需要记住很多命令.使得短时间学会一种工具成为可能. 但是不幸的是,GUI ...

  8. [转载]你所不了解的DevOps

    DevOps开发运维训练营 一旦建立了创新的文化,即使那些并非科学家或者工程师的人——诗人.演员.记者——也能以团体的形式,接受科学文化的意义.他们信奉创新文化的概念.他们以促进这种文化的方式投票.他 ...

  9. 给 DevOps 初学者的入门指南

    当我们谈到 DevOps 时,可能讨论的是:流程和管理,运维和自动化,架构和服务,以及文化和组织等等概念.那么,到底什么是"DevOps"呢? 什么是DevOps 随着软件发布迭代 ...

  10. CI Weekly #3 | 关于微服务、Docker 实践与 DevOps 指南

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

随机推荐

  1. [GO]方法值和方法表达式

    package main import "fmt" type Person struct { name string sex byte age int } func (p Pers ...

  2. cenots7单机安装Kubernetes

    关于什么是Kubernetes请看另一篇内容:http://www.cnblogs.com/boshen-hzb/p/6482734.html 一.环境搭建 master安装的组件有: docker ...

  3. CodeForces 289A Polo the Penguin and Segments (水题)

    题意:给你 n 段区间,而且还是不相交的,然后你只能向左扩展左端点,或者向右扩展右端点,然后扩展最少的步数让整数总数能够整除 k. 析:很简单么,只要在记录算一下数量,然后再算出 k 的倍数差多少就行 ...

  4. .NET基础 (01).NET基础概念

    .NET基础概念 1 什么是CTS.CLS和CLR2 开发和运行.NET程序需要的最基本环节是什么3 .NET是否支持多编程语言开发4 CLR技术和COM技术的比较5 什么是程序集和应用程序域 1 什 ...

  5. JavaScript学习总结——转

    JavaScript学习总结(一)——JavaScript基础 JavaScript学习总结(二)——逻辑Not运算符详解 JavaScript学习总结(三)——逻辑And运算符详解 JavaScri ...

  6. ssm集合的配置

    web.xml <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN&quo ...

  7. MAX6675操作源码--K型热电偶模数转换器

    #define P_TENB PF4_OUT #define P_TSLK PA3_OUT #define P_TDAT PB2_IN //****************************** ...

  8. 【C#】泛型

    泛型是一个非常有用的技术,在博客园里面有太多说到泛型的好文章,这里我推荐一篇我个人觉得非常全面,也非常齐全的文章. (重造轮子很傻!!!) C# -- 泛型(1) C# -- 泛型(2) C# -- ...

  9. getpost请求

    // GET请求与获取结果 /// </summary> public static string HttpGet(string Url, string postDataStr) { Ht ...

  10. 在一台服务器上搭建相对高可用HiveServer实践

    本文来自网易云社区 作者:刘杰 问题及原因 组里之前搭建了一个hiveserver提供给猛犸上的ETL程序调用,hiveserver隔三差五地挂掉重启,网上查了些资料,也咨询了猛犸那边维护hivese ...