分布式系统的特点、CAP、BASE理论

分布式的特点

分布式诞生的背景

在互联网还没有现在这么方便的时候,大多数公司的业务线都是垂直架构。由于各个公司的业务比较简单,需要处理的用户数据也相应较少,所以简单易上手的垂直架构还能很有效地支撑各个公司的业务发展。但是随着互联网的普及移动互联网的发展,需要处理的用户数据得到了爆炸性的增长。而且为了同时服务于手机app和自助终端机等渠道的业务,各种新的需求层出不穷。在不断地迭代升级的过程中,之前提到的公司垂直应用架构慢慢就演化成了一个个的巨无霸应用。系统变得臃肿庞大,业务错综复杂。一旦有新的需求到来,牵一发而动全身。不仅系统可能有很多地方需要同时修改(比如一个访问mysql的接口,可能在代码里到处都是),而且整个系统都需要经过严格的测试才可以上线。开发效率低下,修改成本越来越高,测试周期越来越长,而bug越来越多。更让人头大的是,一旦之前维护这个项目的人员发生变动,新顶替上来的同事需要很长的时间才能把整个系统弄个半懂。所以垂直型巨无霸应用已经在大流量和高并发的冲击下,越来越力不从心。

这时候的解决办法便是,对复杂的巨无霸应用进行水平拆分。把公共业务包装成服务提供出来,把各个相关业务封装成子系统也提供出接口。达到降低代码耦合,公共业务复用的目的。由于子系统和子系统之间已经进行了解构,所以一些业务可以通过简单的加机器进行水平扩容来应对高并大和大流量。每个子系统的修改基本不会影响到其他子系统的稳定性,测试也不需要把整个系统拉过来全部测试一遍,提高了系统更新迭代的效率。

分布式的优点

  1. 增大了系统的容量:对业务进行垂直或是水平拆分,以此达到增大系统容量的目的。
  2. 加强系统可用:处理的业务越来越关键,需要提高整个系统架构的可用性,架构中不能存在单点故障,这个系统不会因为一台机器出故障而导致整体不可用,即需要通过分布式架构来冗余系统以消除单点故障,从而提高系统的可用性
  3. 系统模块化提高了重用度
  4. 软件服务模块被拆分,提高了开发和发布速度。
  5. 系统扩展性提高
  6. 团段写作流程得到改善

分布式的缺点

  1. 架构设计变得复杂
  2. 部署单个服务会比较快,但是如果部署读个服务,会变得复杂
  3. 响应时间变长
  4. 运维复杂度增加
  5. 学习难度增加
  6. 测试和排错难度增加

CAP理论
在这里插入图片描述

C:一致性:数据一致
A:可用性:服务可用
P:分区容错性:能够解决分区问题。网络故障导致分布式系统各组件之间产生分区,无法同时满足一致性和可用性

1.一致性:分布式系统中的各个节点时时刻刻保持数据的一致性。
2.可用性:客户端一直可以正常访问并得到系统的正常响应,用户角度来看就是不会出现系统操作失败或者访问超时等问题。
3.分区容错性:指的分布式系统中的某个节点或者网络分区出现了故障的时候,整个系统仍然能对外提供满足一致性和可用性的服务。也就是说部分故障不影响整体使用。

BASE理论
1.BA:Basically Available(基本可用),分布式系统在出现不可预知故障的时候,允许损失部分可用性。
2.S:Soft state(软状态)软状态也称为弱状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据听不的过程存在延时。
3.E:Eventually consistent(最终一致性)
最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性

  • 分布式最多(至少)满足CAP中的两个特性(在此模型上构建的系统将称作BASE架构),无法同时满足CAP;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值