#整理了一些博文作为分布式相关理论的学习笔记,同时加上了一些个人的理解,尊重原创者,文章属性就设为转载吧,参考博文的链接已附在最后。
分布式
- 概要,与集群的区别
- 分布式系统的设计
-
CAP 和 BASE 理论
分布式和集群的概念
分布式: 不同的业务模块部署在不同的服务器上或者同一个业务拆分为多个子业务,部署在不同的服务器上,解决高并发问题 。
集群: 同一个业务,部署在多个服务器上,提高系统可用性 。
分布式和集群的区别与联系
1)分布式是指多个系统协同合作完成一个特定任务的系统。
分布式是解决中心化管理的问题,把所有的任务叠加到一个节点处理,太慢了。
所以把一个大的问题拆分为多个小的问题,并分别解决,最终协同合作。分布式的主要工作是分解任务,将职能拆解。
2) 集群主要的使用场景是为了分担请求的压力,也就是在几个服务器上部署相同的应用程序,来分担客户端请求。
当压力进一步增大的时候,可能在需要存储的部分,mysql 无法面对很多的写压力。因为在 mysql 做成集群之后,主要的写压力还是在 master 的机器上面,其他 slave 机器无法分担写压力,从而这个时候,也就引出来分布式。
分布式的主要应用场景是单台机器已经无法满足这种性能的要求,必须要融合多个节点,并且节点之间是相关之间有交互的。相当于在写 mysql 的时候,每个节点存储部分数据,也就是分布式存储的由来。存储一些非结构化数据:静态文件、图片、pdf、小视频 … 这些也就是分布式文件系统的由来。
3)集群主要是简单加机器解决问题,对于问题本身不做任何分解;
而分布式处理里必然包含任务分解与答案归并。分布式中的某个子任务节点,可能由一个集群来代替;集群中任一节点,都是做一个完整的任务。
集群和分布式都是由多个节点组成,但是集群之间的通信协调基本不需要;而分布式各个节点的通信协调必不可少。
集群是个物理形态,一般是物理集中、统一管理的,而分布式是个工作方式。
将一套系统拆分成不同子系统部署在不同服务器上(这叫分布式);
然后部署多个相同的子系统在不同的服务器上(这叫集群)。