0


分布式基础--初识别分布式与CAP

1.什么是分布式

1.1 权威定义

由于分布式还在不断地更新,对于分布式还没有一个官方的定义,这里引用一个大牛的定义当做权威定义进入分布式基础的学习

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

利用物理架构形成多个自治的处理元素:多台服务器,多台电脑,每个电脑,每个服务器之间就是相互独立的。强调的特点:不共享主内存,每个服务器之间是独立的,内存也是独立的,我们不能直接访问到内存,但是因为我们有通信的需求,所以我们通过发送消息进行合作。

1.2 大白话解释,老板开店从打工人化身大老板

用一个例子:

1.2.1一个店面独立运营

老板开店:老板新开一个店铺,店铺就是一个单体,只运行在于一台机器上并且提供多种服务:对接客户,对账,进货,安保,售卖......对应到程序中就是作为一个单体服务器什么都要承担。提供http接口,核对数据库内容---对账,安保---对自己的安全负责,防止黑客攻击......(单体阶段)

1.2.2两个店面分别独当一面

老板勤劳有能力,他又开了一个店面,两个店面要做的事情是差不多的,两个店能提供类似的服务,且两个店没有对业务进行分工。这就是类似于计算机集群的方式,相当于把第一个程序完整复制到另一个服务器,两个服务器一起进行工作。这种方式的好处是对于请求的处理能力增强,在数据量大时可以分流量给另一个服务器。(集群)

1.2.3雇佣员工分工协作

老板学精了,决定不在自己单干而是去录用员工,以减少运作成本。进入分布式。把能力拆开,我们强调合作并将服务拆开来,收银,导购,保安,会计。老板的压力变小,相比较于集群,集群合作不多,各自独当一面,分布式,每个人更着重于自己的核心功能,每个角色提供的服务是有差别的。

以上就是单体,集群,分布式(核心概念就是拆),我们把一个完整的架构进行拆分部署到机器上就是分布式的部署,属于分布式的架构。

2.分布式的作用

2.1分布式的诞生

技术的诞生是为了解决问题:一开始是没有分布式的,是由单体演变到集群,在其中发现问题,演变出了分布式,分布式就是为了解决单体中的问题。

2.2 单体的问题

◆速度变慢

不仅仅是启动速度,代码量加大时下载,部署,打包,测试都会变慢。

◆熟悉项目工作量太大

有的功能不再使用不代表代码能被删掉,我们一般选择不用他的接口。如果删错了我们可能会导致其他的功能不能使用。由于不能删除代码,代码量会不断增加,熟悉项目的工作量就会增大。

◆耦合严重

不能你中有我我中有你,耦合严重不容易扩展,更不能升级,你的升级可能会导致别人调用你的功能而它的功能不能使用。

◆合并代码冲突多,依赖冲突多

在工作中时会有公共代码,公共代码你改一下,我改一下到了合并代码极其痛苦。我们不了解对方的业务含义,导致我们不便于修改。

2.3 分布式的好处

◆可用性增强

束缚小,升级组件时耦合不太严重,我们改起来很容易,可以经常对组件进行更新,对外提供服务的能力增强。会把不同的模块进行部署。对于有的服务挂了,不影响我们的主流程

◆成本低--资源利用率高

不需要买一台超级服务器来部署,只需要买多台普通的服务器,资源利用率提高,对于流量小的模块我们可以减少部署,提高资源的利用率。

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

1 项目启动速度;

传统单体框架 :慢

分布式架构 : 快

2 团队规模

传统单体框架 :相对较小

分布式架构 :相对较大

3 功能维护成本

传统单体框架 :较高,容易有冲突

分布式架构 :较低

4 代码清晰度

传统单体框架 :较差,耦合严重

分布式架构 :较好

5 可用性

传统单体框架 :一损俱损,动一发而牵全身

分布式架构 :故障范围较小

6 构架设计难度

传统单体框架 :较低

分布式架构 :需要有经验的人来设计,难度较大

4. CAP定理

4.1 CAP理论是什么

C ( Consistency , -致性) : 总能读到最新的写操作的结果
A ( Availability ,可用性) : 每个请求都要在合理的时间内给
出响应
P ( Partition tolerance ,分区容错性) : 当节点之间网络不
通,系统能够继续运行

三者亮亮兼容。

4.2 P,分区容错

可以看到节点一与节点二之间是没有箭头的。

客户端给节点一和节点二分别发送请求,两个节点之间发生网格中断的情况。p的分区容错是不可避免的,p在目前条件下是一定存在的,根据三者取二原则:AP,CP

4.3 C 一致

节点一与节点二是能保持同步的。客户端发送请求将节点一的原数据改成10,节点一同步改成10到节点二。

客户端请求读取节点二的值,如果是10,一致性得到了保障,如果是原数据代表不一致。

4.4 A 可用性 Availability

可用性
每个请求都要在合理的时间内给出响应
可能不是最新的数据

4.5 CAP 怎么选择

孰优孰略没有定论,需根据使用场景去判断。

5.集群、分布式、微服务的区别

1 集群和分布式的区别
分布式:不同的项目,部署在多个服务器上
集群:同一个项目,部署在多个服务器上

2 集群和微服务的区别

集群:分散压力
微服务:分散能力

3 微服务和分布式区别
微服务是架构设计方式 ,按业务垂直拆分
分布式是系统部署方式,拆分后分开部属,就是分布式
微服务:订单模块和用户模块分开部属
分布式:展示层和逻辑层分开部属

标签: 分布式

本文转载自: https://blog.csdn.net/weixin_57169969/article/details/126517324
版权归原作者 天海奈奈 所有, 如有侵权,请联系我们删除。

“分布式基础--初识别分布式与CAP”的评论:

还没有评论