⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 blog.csdn.net/weixin_42046751 「且随疾风前行_go」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

1. 什么是分布式 ?

分布式系统一定是由多个节点组成的系统。

其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。

这些连通的节点上部署了我们的节点,并且相互的操作会有协同。

分布式系统对于用户而言,他们面对的就是一个服务器,提供用户需要的服务而已,

而实际上这些服务是通过背后的众多服务器组成的一个分布式系统,因此分布式系统看起来像是一个超级计算机一样。

2. 分布式与集群的区别 ?

集群

集群是指在几个服务器上部署相同的应用程序来分担客户端的请求。

它是同一个系统部署在不同的服务器上,比如一个登陆系统部署在不同的服务器上。

好比 多个人一起做同样的事。

集群主要的使用场景是为了分担请求的压力。

但是,当压力进一步增大的时候,可能在需要存储的部分,比如mysql无法面对大量的“写压力”。

因为在mysql做成集群之后,主要的写压力还是在master的机器上,其他slave机器无法分担写压力,这时,就引出了“分布式”。

分布式

分布式是指多个系统协同合作完成一个特定任务的系统。

它是不同的系统部署在不同的服务器上,服务器之间相互调用。

好比 多个人一起做不同的事。

分布式是解决中心化管理的问题,把所有的任务叠加到一个节点处理,太慢了。

所以把一个大问题拆分为多个小问题,并分别解决,最终协同合作。

分布式的主要工作是分解任务,把职能拆解。

分布式的主要应用场景是单台机器已经无法满足这种性能的要求,必须要融合多个节点,并且节点之间的相关部分是有交互的。

相当于在写mysql的时候,每个节点存储部分数据(分库分表),这就是分布式存储的由来。

存储一些非结构化数据:静态文件、图片、pdf、小视频 ... 这些也是分布式文件系统的由来。

用生活中的例子,来说明集群和分布式及其区别:

小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。

后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师炒一样的菜,这两个厨师的关系是集群。

为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,

一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群。

最后,再深入理解一下集群和分布式及其区别:

  • 分布式:把一个大业务拆分成多个子业务,每个子业务都是一套独立的系统,子业务之间相互协作最终完成整体的大业务。
  • 集群:把处理同一个业务的系统部署多个节点 。

把一套系统拆分成不同的子系统部署在不同服务器上,这叫分布式。

把多个相同的系统部署在不同的服务器上,这叫集群。部署在不同服务器上的相同系统必然要做“负载均衡”。

集群主要是简单加机器解决问题,对于问题本身不做任何分解。

分布式处理里必然涉及任务分解与答案归并。分布式中的某个子任务节点,可以是一个集群,该集群中的任一节点都作为一个完整的任务出现。

集群和分布式都是由多个节点组成,但集群中各节点间基本不需要通信协调,而分布式中各个节点的通信协调是必不可少的。

文章目录
  1. 1. 1. 什么是分布式 ?
  2. 2. 2. 分布式与集群的区别 ?
    1. 2.0.1. 集群
    2. 2.0.2. 分布式
    3. 2.0.3. 用生活中的例子,来说明集群和分布式及其区别:
    4. 2.0.4. 最后,再深入理解一下集群和分布式及其区别: