分布式基础

一、 分布式基本概念介绍

分布式基础_第1张图片
在这里插入图片描述

1. 概念:

利用物理架构形成多个自治的处理元素,不共享主内存,但是通过发送消息合作

2. 分布式的作用:

实际工作中的痛点:

  1. 工程臃肿
  2. 测试上线繁琐
  3. 开发效率低

单体应用中的问题:

  1. 应用代码耦合严重,功能扩展难
  2. 新需求开发周期长,测试工作量大
  3. 新加入的开发同事需要很长时间才能熟悉需求
  4. 系统升级很困难(任何改动点都要升级整个系统)
  5. 系统性能提升艰难,不稳定

分布式的好处:

  1. 增加系统容量
  2. 加强系统可用
  3. 因为模块化,所以系统重用度更高
  4. 因为软件模块被拆分,开发和发布可以并行,变得更快
  5. 系统扩展性更高
  6. 团队协作流程也得到改善
  7. 技术升级

3、分布式和单体结构的对比

分布式基础_第2张图片
在这里插入图片描述

分布式基础_第3张图片
在这里插入图片描述

分布式基础_第4张图片
在这里插入图片描述

4、CAP定理
分布式基础_第5张图片
在这里插入图片描述

CAP定理:分布式不可能同时满足3个条件,最多三选二。

作用:出现网络问题时候的对策和解决方案

C:Consistency,一致性:读操作是否总能读到前一个写操作的结果(数据被改变后能否感知得到)
比如client给G1发消息要求写入,然后G1改完以后告诉我我改了,但是G2没有更新成功,结果不一致

分布式基础_第6张图片
在这里插入图片描述

如何让他们保持一致,见图
分布式基础_第7张图片
在这里插入图片描述

A:Availability,可用性:非故障节点应该在合理的时间内做出合理的响应(不是错误或超市的响应),但是可能不是最新的数据

比如像服务端要响应结果,返回请等待之类的回复,代表不具备可用性

P:Partion tolerance,分区容错性:当出现网络分区现象后,系统能够继续运行(网络错误),一般是无法避免的,要么是CP,要么是AP
比如我们一个服务器在中国,一个在美国,如果电缆段了导致出错,G1想发消息给G2,但是G2收不到

分布式基础_第8张图片
在这里插入图片描述

例子:

火车票:火车票不能同时卖给2个人,必须保证一致性

银行转账:这个要保持可用性(转账成功),一致性上可以延迟(时间延迟)

5、CAP怎么选:

什么时候可用性高于一致性?
有一个网站,一更新没必要所有人都同步,可以稍微延迟一点,但是要求无论何时访问网站,都能看得到

什么场合一致性高于可用性?
支付场合,可以允许暂时不可用,但是决不允许不一致

适合的才是最好的

二、集群,分布式,微服务的区别

1. 集群和分布式的区别:

分布式:一个业务拆分多个子业务,部署在不同的服务器上(模块中相互通信)

集群:同一个业务,部署在多个服务器上(一个单体服务部署到多台机器上,每个集群都是一套代码,通过负载均衡去调度。不同机器可以不通信。就像每个店各有一个厨师)

2. 集群和微服务的区别:

集群:分散压力(把压力通过复制机器的方式分散出去)

微服务:分散能力(把能力拆分)

3. 微服务和分布式的区别:

微服务是架构设计方式,按逻辑角度对架构进行拆分,是逻辑架构。把大服务拆除小服务,独立部署,服务间通过通信进行调用,每个服务独立开发测试

分布式:系统部署的方式,机器和机器间会遇到哪些通信上的问题,如何容错,考虑物理架构

先做逻辑架构,再做物理架构

你可能感兴趣的:(分布式基础)