源自:https://mp.weixin.qq.com/s/mwn2X0G9UgUDz1sgGgL1mA
一、集群
同一个业务,部署在多个服务器上(不同的服务器运行相同的代码,干同一件事)
好处:
1、存在多个服务器运行,分担了压力
2、若一台机器暂时无法使用,可以使用另一台
如:
两台服务器同时运行同一个系统 –> 淘宝
二、分布式
一个业务分拆成多个子业务,部署在不同的服务器上(不同的服务器,运行不同的代码,为了同一个目的)
好处:
1、模块之间独立,偏于扩展,复用性高
2、高吞吐量,某个任务若需一个机器运行10小时,则将任务用10台机器的分布式(将任务拆分成10个小任务),可能2小时就跑完
如:
淘宝的功能拆分,模块之间独立,在使用的时候将这些独立的模块组合起来就是一个系统
三、集群/分布式的区别
1、集群和分布式并不冲突,可以有分布式集群
如:
现在3y的公司规模变大了,有5个小伙子写Java,4个小伙子写前端,2个小伙子做测试,1个小伙子做DBA。
-
Java,前端,测试,DBA的关系看作是分布式的
-
5个Java看作是集群的(前端,测试同理)…
四、SOA
1、业务系统分解为多个组件,让每个组件都独立提供离散,自治,可复用的服务能力,通过服务的组合和编排来实现上层的业务流程
2、作用:简化维护,降低整体风险,伸缩灵活
五、微服务
1、架构设计概念,各服务间隔离(分布式隔离),自治(分布式依赖整体组合),其它特性(单一职责,边界,异步通信,独立部署)是分布式概念的,严格执行SOA到微服务架构的过程
2、作用:各服务可独立应用,组合服务也可系统应用
六、CAP理论
从上面可以知道,分布式 简单理解就是,一个业务分拆成多个子业务,部署在不同的服务器上。则,一般来说,一个子业务我们称为节点
1、CAP
1)C(Consistency,数据一致性),所有节点拥有数据的最新版本
2)A(Avaliability,可用性),数据具备搞可用性
3)P(Partition-tolerance,分区容错性),容忍网络出现分区,分区之间网络不可达
举例:
下面是3个节点,且是集群,三个节点能够相互通信:
因为一些故障,使得节点之间不连通,整个网络就分成了几块区域
现在出现了网络分区后,此时有一个请求过来了,想要注册一个账户。
此时,节点1与节点3是不可通信的,则:
1)若允许当前用户注册一个账户,此时注册的记录数据只会在节点一和节点二或者节点二和节点三同步,因节点一和节点三的记录是无法同步的。这种情况下,是选择了可用性(availability),抛弃了数据一致性(consistency)
2)若不允许注册(需等待节点一和节点三恢复通信),则节点一和节点三一旦恢复通信,就可以保证节点拥有的数据是最新版本。这种情况下,是抛弃了可用性(availability),选择了数据一致性(consistency)
2、CPA理论
一般分布式系统,P:分区容错性(partition-tolerance)是必需的,是客观存在。CAP是无法兼顾的,在CAP理论中,C所表示的一致性是强一致性(每个节点的数据都是最新版本),其实一致性还有其他级别的:
-
弱一致性:弱一致性是相对于强一致性而言,它不保证总能得到最新的值;
-
最终一致性(eventual consistency):放宽对时间的要求,在被调完成操作响应后的某个时间点,被调多个节点的数据最终达成一致
可用性的值域可以定义成0到100%的连续区间。
所以,CAP理论定义的其实是在容忍网络分区的条件下,“强一致性”和“极致可用性”无法同时达到。
原文链接:https://www.cnblogs.com/shuozhang/p/16366451.html