当前位置: 首页 > news >正文

东莞东城网站建设网站项目策划书实例

东莞东城网站建设,网站项目策划书实例,自己做的网站怎么设置地址,网站主页设计大家好#xff0c;我是易安#xff01; 今天让我们来聚焦于分布式系统架构中的重要理论——CAP理论。在分布式系统中#xff0c;可用性和数据一致性是两个至关重要的因素#xff0c;而CAP理论就是在这两者之间提供了一种权衡的原则#xff0c;帮助我们在设计分布式系统时进…大家好我是易安 今天让我们来聚焦于分布式系统架构中的重要理论——CAP理论。在分布式系统中可用性和数据一致性是两个至关重要的因素而CAP理论就是在这两者之间提供了一种权衡的原则帮助我们在设计分布式系统时进行决策。同时CAP理论的出现也深刻影响着分布式系统的发展和设计。但是在当今这个时间点业界对于CAP理论的理解和应用也在不断地发生变化我们一起探讨下这些新的思考和认识 什么是 CAP 理论 CAP 理论是加州理工大学伯克利分校的 Eric Brewer 教授在 2000 年 7 月的 ACM PODC 会议上首次提出的它是 Eric Brewer 在 Inktomi 期间研发搜索引擎、分布式 Web 缓存时得出的关于数据一致性 CConsistency 、服务可用性 AAvailability 、分区容错性 PPartition-tolerance 的一个著名猜想 It is impossible for a web service to provide the three following guarantees : Consistency, Availability and Partition-tolerance. 在这个猜想提出的 2 年以后来自麻省理工学院的 Seth Gilbert 和 Nancy Lynch 从理论上证明了 Eric Brewer 教授的 CAP 猜想是成立的从此CAP 理论在学术上正式成为了分布式领域公认的定理并深刻影响着分布式系统的发展。 CAP 理论告诉我们 一个分布式系统不可能同时满足数据一致性、服务可用性和分区容错性这三个基本需求最多只能同时满足其中的两个。为什么会这样呢我们先来了解一下 CAP 理论对于数据一致性、服务可用性和分区容错性是怎么定义的。 一致性 C CAP 理论中的一致性是指强一致性 Strong Consistency 又叫线性一致性 Linearizable Consistency 它要求多节点组成的分布式系统能像单节点一样运作如果一个写操作返回成功那么之后的读请求都必须读到这个新数据如果返回失败那么所有的读操作都不能读到这个数据。 一致性中除了强一致性之外还有其他的一致性级别比如序列一致性 Sequential Consistency 和最终一致性 Eventual Consistency 等这个在后面的课程“一致性与共识一”中会有详细的介绍。 可用性 A CAP 理论对可用性的定义指的是要求系统提供的服务必须处于 100% 可用的状态对于用户的每一个操作请求系统总能够在有限的时间内返回结果。 下面我们重点来讨论可用性定义中的三个关键点“100%可用”、“有限时间内”和“返回结果”。 第一点100% 可用既不是 99% 可用也不是99.99% 可用它说的是系统必须完全可用不允许任何不可用的情况出现这是一个非常理想的模型。第二点有限时间内它指的是对于客户端的一个请求系统必须在指定的时间内返回对应的请求结果如果超过了这个时间系统就被认为是不可用的。一般来说“有限时间内”是系统在设计的时候就设定好的系统运行指标不同的系统之间会有非常大的差别。 例如对于一个服务在线业务的 OLTP 数据库 MySQL 它的“有限时间”一般不会超过 1 秒但是对于服务离线分析的 OLAP 数据库 Hive 它的“有限时间”可能会超过 30 秒甚至更长。 虽然不同的系统对于“有限时间”的设定差别非常大但是对于一个给定的系统来说在设定了这个“有限时间”之后只要对一个请求的响应超过了这个时间我们就认为这个系统是不可用的。 第三点返回结果这是指系统在完成对客户端请求的处理后必须返回一个正常的响应结果。客户端可以根据这个响应结果来明确判断这个请求执行成功还是失败而不是返回一个让用户无法判断的不正常的响应结果。 比如客户发起一个请求从用户 A 的账户转 50 元到用户 B 的账户“转账成功”和“余额不足”都是正常的响应结果而“服务不可达”和“服务器内部错误”等就是不正常的响应结果。 分区容错性 P 分区指的是在整个分布式系统中因为各种网络原因系统被分隔成多个单独的部分它不仅包含我们通常说的网络分区也包含因为网络丢包导致的网络不通的情况。并且这里说的因为网络丢包导致网络不通的情形还包含节点宕机的场景由于系统的其他机器不知道某个节点宕机了只知道与宕机节点的网络是不通的所以当节点宕机发生时其他节点发往宕机节点的包也将丢失。 在现实的分布式系统中我们面对的就是一个不可靠的网络和有一定概率宕机的设备这两个因素都会导致分区出现因此在分布式系统实现中分区容错性 P 是一个必须项而不是可选项。 在分布式系统中如果我们的设计放弃分区容错性就相当于我们认为节点之间的网络通信永远是好的那么我们对节点之间的远程调用的结果就不需要处理超时、网络地址不可达等网络层错误了。但是这样一来看似是简化了系统设计实际却忽视了超时等网络错误的情况。当它们出现后系统的行为就是未定义的了可能会出现崩溃或者是脏数据的问题。 因此对于分布式系统工程实践来说 CAP 理论更合适的描述是在满足分区容错的前提下没有算法能同时满足数据一致性和服务可用性。 CAP 理论争论 关于数据一致性和可用性之间的争论由来已久当时主要表现为 ACID 与 BASE 之间的争论。 基于 BASE 理论支撑的 NoSQL 运动坚持创造各种可用性优先、数据一致性其次的方案而传统数据库则坚守 ACID 特性原子性、一致性、隔离性、持久性优先数据一致性在必要的时候可以放弃系统可用性。当时 BASE 理论还没有被广泛接受人们还是不愿意放弃 ACID 的优点。 当 CAP 理论提出后我们明白了在分布式系统中只能在强一致性和 100% 的可用性之间二选一不能两个都要。从此 BASE 理论也逐渐被人们所接受在大规模存储的场景中广泛应用并且开创了从 2000 年到 2010 年 NoSQL 运动的黄金十年。这十年里工业界产生了大量优秀的 NoSQL 系统比如 BigTable 、 HBase 、 MongoDB 、 Cassandra 解决了人们当时遇到的大规模数据存储的问题。 CAP 理论的重新思考与理解 CAP 理论的出现是有历史使命的让人们能够在分布式系统中放弃以关系数据库为代表的 ACID 强一致性系统接受以 NoSQL 为代表的 BASE 理论并且暂时解决了人们在 2000 年前后对于分布式系统中数据一致性和可用性之间的争论让人们能够更加务实地解决当时由于互联网爆发式发展产生的海量用户和数据的分布式计算与存储的问题。 一个有历史使命的事物在使命完成后要么就过时了人们不再提起它要么就会对它有新的解释让它跟随时代一起发展下去。而 CAP 理论显然属于后者因为直到现在人们还在对它不断地重新思考与理解。 在 2000 年的时候CAP 理论通过一个简单但是精确定义的模型论证了在一个满足分区容错的分布式系统中当我们进行系统设计时只能在数据一致性和服务可用性之间二选一。其中 数据一致性 C 指的是数据的强一致性服务的可用性 A 指的是服务100 % 的可用性这才是 CAP 理论论证模型的关键点。 对可用性的重新思考与理解 首先我们对服务的可用性 A 进行分析你会发现在我们的日常工作中几乎没有见过 100% 可用的服务。可用性指标是在 0 到 100% 之间连续分布的其实一个 100% 可用性的服务和一个 99.9999% 可用性的服务之间并没有多大的差别如果我们的服务能实现 99.9999% 的可用性哪怕它不符合 CAP 理论的可用性也是符合我们工作中对可用性的要求的。 所以在我们的系统选择了 CP 模型的时候对于可用性 A 我们永远无法达到 100%但是按业务要求不断优化是我们努力的目标。 关于具体的实践我认为基于 Raft 算法实现的 etcd 就是一个非常好的对可用性进行重新思考的实践。如果依据 CAP 理论来划分的话etcd 属于 CP 模型。 而在 etcd 系统的实现中如果网络没有出现分区整个系统是 100% 可用的就算网络出现分区了也不会有整个etcd 系统都不可用的情况。在这时超过半数 etcd 实例所在的网络分区一侧系统是正常可用的虽然网络分区的另一侧是不可用的但是整个 etcd 系统的可用性依然可能超过 50% 。 对一致性的重新思考与理解 对于数据的一致性 C 除了 CAP 理论要求的强一致性外还有单调一致性、会话一致性和最终一致性等。如果我们的系统设计选择了 AP 模型 在数据一致性方面虽然我们无法实现强一致性但是我们也不要全部放弃可以努力去实现更高的一致性级别为系统的服务提供更好的抽象。 这里我们通过一个例子来说明假设我们设计一个 AP 模型的分布式系统正常情况下如果依据 CAP 理论在系统设计时我们需要放弃数据的一致性。但是我们可以从另一个思路来设计在系统没有出现网络分区的时候这个分布式系统应该设计为强一致性的。 如果出现网络分区了我们可以根据系统情况有选择并且精心设计地降低系统的一致性级别。比如从强一致性降低到单调一致性或会话一致性等这样的设计既符合 CAP 理论依据也为系统提供了更好的一致性级别特别是在网络分区的时候。 对分区容错性的重新思考与理解 最后我们来分析一下分区容错性 P 的问题。在分布式系统中节点之间必须通过网络来通信可是网络可能会丢包和中断节点也可能会宕机这样的情况就要求我们在系统设计的时候必须做好系统的分区容错处理。 但是系统出现分区的情况非常少见所以我们可以来试想一下在网络不出现分区的时候我们将数据强一致性和 100% 的可用性都选择等到网络出现分区的时候系统再选择放弃部分的可用性或者降低数据一致性的级别这种处理方式是否可行呢 其实这样的处理方式是可以的在上面对可用性和一致性的重新思考与理解中所举的例子都是按这个方式来处理的 它实际是将 CAP 理论的选择推迟到出现网络分区的时候而不是系统一启动就进行 CAP 的选择。这样可以大大提高系统的可用性和数据一致性并且系统依然能容忍网络分区。 另外关于 CAP 理论的重新思考特别需要说明的一个例子是 Google 的 Spanner 我们都知道 Spanner 是一个全球分布式数据库但是 Google 却宣称 Spanner 是一个 CA 系统这是不是和 CAP 理论的说法产生了矛盾呢 其实并不矛盾Spanner 虽然是一个分布式系统但是它运行在 Google 的内部网络中并且拥有大量冗余的网络链路、处理相关故障的架构规划、以及非常细致的运维以此来确保系统的可用性超过了 99.999%。虽然不能达到 100%但是对于使用者来说和可用性 100% 几乎没有任何区别所以Spanner 就是一个 CA 系统。 而且在网络出现分区的时候Spanner 会选择一致性而不是可用性这个时候 CAP 理论依然会生效。所以对于 CAP 理论的重新思考总而言之就是一句话 CAP 理论给我们定义了系统的设计边界虽然想要设计出超过边界的系统是徒劳的但是我们却可以无限逼近边界并且把它作为我们设计系统的目标。--- 总结 今天我们一起讨论了什么是 CAP 理论它是指分布式系统中在满足分区容错的前提下没有算法能同时满足数据一致性和服务可用性只能在数据一致性和服务可用性之间二选一。 紧接着我们讨论了 CAP 理论产生的影响可以说 CAP 理论的出现让人们接受了 BASE 理论并且推动了 NoSQL 运动的发展开启了它的黄金十年。 最后我们探讨了现在人们对于 CAP 理论的新理解。对于 AP 模型的系统我们会努力去提升数据一致性的级别而对于 CP 模型的系统我们会努力去提升系统可用性的级别。在网络不出现分区的时候我们可以将 A 和 C 都选择上在网络出现分区的时候通过推迟 CAP 选择来提高系统的可用性和数据一致性。 综上所述CAP 理论对于分布式系统的设计和实践具有重要意义让人们在处理数据一致性和服务可用性之间的权衡时有了更加明确的思路和指导原则。而对于未来的发展我们相信人们会不断地探索和挑战 CAP 理论的极限以期创造出更加高效、稳定、可靠的分布式系统。 最后推荐你去读一下周志明老师的凤凰架构相信你能有更加深刻的认识。 如果本文对你有帮助的话欢迎点赞分享这对我继续分享创作优质文章非常重要。感谢 本文由 mdnice 多平台发布
http://www.w-s-a.com/news/283065/

相关文章:

  • 网站开发 改进如何创建公众号平台
  • wordpress网站响应很慢只有asp网站代码可以重新编译吗
  • 哪个网站教做饭做的好wordpress热点文章
  • 可以做推广东西的网站重庆网站建设 重庆网站制作
  • 珠海网站建设培训学校wordpress去版权 合法
  • 建设食品商购网站学校网站设计实验报告
  • 建个网站多少钱沭阳奥体小区做网站的
  • 广州视频网站建站公司php网页设计作业代码
  • 成都公司网站设计如何制作网址最简单的方法
  • 温州 做网站福建住房城乡建设部网站
  • 网站自动化采集成都网站设计费用
  • 广东专业网站定制建设淘宝网站的人员组织结构
  • 网站改版seo无锡有多少家公司
  • h5美食制作网站模板下载wordpress大学百度云
  • 零陵做网站建立网站的公司平台
  • 某企业电子商务网站建设网站开发实验结论
  • 自己做的网站突然打不开杭州哪些做网站公司好
  • 株洲专业建设网站免费cms内容管理系统
  • 网上建立网站赚钱网站建设方案书纯文字
  • 专业网站设计哪家好it外包合同模板
  • 个人网站备案都需要什么中小企业服务网
  • 佛山网站建设哪个在公司网站投简历该怎么做
  • 八戒网站做推广老域名全部失效请拿笔记好
  • iss服务器网站建设甘肃建设厅网站执业注册中心
  • 域名访问网站 过程网站 免费 托管运营
  • 下单的网站建设教程wordpress php7.1
  • 爱网站查询怎么做网站的图片跳转
  • 阿里云建站百度收录吗北京的设计公司排名
  • 网站制作方案包含哪些内容布吉网站建设方案
  • 吉林省建设安全信息网站宜宾市建设工程质量监督站网站