漫话:如何给女朋友解释什么是分布式和集群?
作者 | 漫小画
公号 | 漫话编程
漫小画
擅长漫话
程小员
擅长编程
某天,下班较早,我正在玩吃鸡,已经到决赛圈了,这时候,女朋友满脸求知欲的朝我走过来。
上次他们都说你给我讲的面向对象太简单了。
![](/assets/blank.gif)
那你想怎样?为什么我一玩游戏你就过来问我问题呢?
![](/assets/blank.gif)
我不管,你给我说说分布式和集群是啥东 东?
![](/assets/blank.gif)
我头也不抬,直接抛出一句:
分布式(distributed)是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。
集群(cluster)是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。
说人话,这东西我听不懂。
![](/assets/blank.gif)
好吧。走,我们先出去吃饭。边吃边聊。
![](/assets/blank.gif)
集中式系统
我和女朋友来到一家小饭店,开始点菜:红烧鱼、糖醋排骨、酸辣土豆丝,好了就这么多了。
现在,我们和这家饭店之间的就是用户和系统的关系。我们要求他给我们做出一顿丰盛的晚餐。我们不关心他后厨的一切事情。只要它能在短时间内提供美味的菜品就好了。
上面,我们对这个饭店提出来两个要求:上菜时间短、菜品美味。除了这些,顾客可能还有其他要求,比如菜品要干净卫生、酸辣土豆丝可以多放些辣椒等。
映射到计算机系统中,用户提出的要求就是:
上菜时间短 -> 性能
干净卫生 -> 安全性
菜品多放辣椒 -> 扩展性
菜品美味 -> 可用性
上面说的这家小饭店,只有一个厨师。就是一个集中式系统。
一个集中式部署的电子商务应用
如果饭店内只有我们一个顾客的话,以上几条基本都可以满足的。但是,如果到了晚饭时间,突然顾客变多了,这些顾客的要求可能就没办法全都满足了。
饭店内人满为患,这家小饭店只有一个厨师的情况下,他需要保证所有菜品美味、卫生,又要保证所有菜品可以准时准备好,又要给不同用户满足定制化要求。这种挑战是及其大的。
以上,映射到计算机软件中,也是一样的。随着业务量的增长,网站的高可用、易伸缩、可扩展、安全等目标就会受到极大的挑战。
集群部署
随着饭店的生意越来越好,老板意识到只有一个厨师会存在很大问题。
首先,在客流量高峰期,一个厨师无法满足所有顾客的要求。
其次,厨师变成了一个单点,就是他不能生病,一旦他生病了,整个饭店就无法营业了。
这可愁坏了老板,一时之间不知道该如何是好了。但是,老板有个聪明的老婆,他提了一个建议。
这有什么好发愁的?再雇佣几个厨师就行了 呀。
![](/assets/blank.gif)
诶,你这个注意很不错啊。
![](/assets/blank.gif)
然后,为了提高饭店的待客能力。老板决定多雇佣几个厨师。
有了多个厨师了之后。店内顾客的点菜,就可以分配给后厨的多个厨师来做。
具体如何分配,这就是需要一定的策略了。可以选择分配给空闲的厨师、也可以按顺序轮流分配。
虽然,饭店有多个厨师,但是用户并不知道这些事情,他只知道自己的点菜需求,可以得到满足就可以了。他也不需要关心到底是哪位厨师给自己做的菜。除非菜品出现了质量问题时,就需要找到指定的厨师来问责了。
以上,映射到计算机软件中,也是一样的。集中式系统只有一台计算机提供服务,集群就是有多台计算机提供同样的服务。
一个集群部署的电子商务应用
用户的请求通过负载均衡分配给集群中的各个机器。整个系统对于用户来说就像是一台机器在提供服务一样。
分布式部署
在饭店雇佣了多个厨师之后,饭店的服务能力确实提升了很多。顾客也越来越多。
但是,最近店内经常会有顾客投诉某个菜品的味道和自己之前吃到过的不一样了。
经过店长的仔细调查,发现是由于这家店的厨师除了要负责炒菜以外,还需要负责洗菜、切菜、备菜,甚至是刷碗。
这就使得厨师没办法专注于炒菜了,他会被很多其他的琐事而牵绊,导致无法专心炒菜,影响了菜品的质量。
而且,由于最近店内的顾客也越来越多,几个厨师还是忙不过来。
这时候,老板就要想办法继续提升饭店的服务能力。他想着要继续雇佣几个厨师。
还是饭店老板那个聪明的老婆,又给他出了一个更好的主意。
雇佣几个洗菜工、配菜师不就行了么。
![](/assets/blank.gif)
诶,你这个注意很不错啊
![](/assets/blank.gif)
这就是一种分布式的思想。
通过把一件大的事情,拆分成多个小事情,分别交给不同的人来做。
这样术业有专攻,洗菜的可以把菜洗的更干净、厨师也可以专注炒菜,把菜炒的更加美味。
饭店从多个厨师的配置,变成了多个洗菜工+配菜师+厨师的配置。这家饭店的服务能力大大提升。再也没有顾客投诉菜品问题了。
对于顾客来说,他们还是不知道后厨的这些变化的,他甚至不知道自己点的菜是多个人配合的结果。
以上,映射到计算机软件中,也是一样的。除了通过集群部署的方式提升系统能理外,还可以通过分布式部署的方式。
一个分布式部署的电子商务应用
把一个大的系统拆分成多个子系统,每个子系统负责自己专注的事情,然后通过网络进行通信和协调,对用户来说,就像访问的是同一台机器一样。
哇,太棒了
![](/assets/blank.gif)
你听懂了对吧,什么都难不住我的。
![](/assets/blank.gif)
什么啊,我想说,这红烧鱼太好吃了
![](/assets/blank.gif)
额、、、
随着饭店的发展,慢慢的从只有一个厨师演变成有多个厨师,进而演变成有洗菜工、配菜师、厨师等多个职位。
这个网站架构发展也类似。网站初期,只需要搭建一个集中式的单体应用就可以了,如果业务量有很大增长,先考虑增加机器,通过集群部署提升能力。接着,就可以考虑分布式了。
转自「漫话编程」,搜索「mhcoding」关注
漫话:如何给女朋友解释什么是分布式和集群?相关推荐
- 什么是分布式和集群?
漫小画 擅长漫话 程小员 擅长编程 某天,下班较早,我正在玩吃鸡,已经到决赛圈了,这时候,女朋友满脸求知欲的朝我走过来. 上次他们都说你给我讲的面向对象太简单了. 那你想怎样?为什么我一玩游戏你就过来 ...
- 分布式 WebSocket 集群解决方案
作者 | weixin_34194702 来源 | blog.csdn.net/weixin_34194702/article/details/88701309 问题起因 最近做项目时遇到了需要多用户 ...
- 保障IDC安全:分布式HIDS集群架构设计
背景 近年来,互联网上安全事件频发,企业信息安全越来越受到重视,而IDC服务器安全又是纵深防御体系中的重要一环.保障IDC安全,常用的是基于主机型入侵检测系统Host-based Intrusion ...
- 集群服务器分布式iis_集群,分布式,微服务,SOA概念
概念: 分布式:一个业务分拆多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 1:分布式是指将不同的业务分布在不同的地方.而集群指的是将几台服务器集中在一起,实现同一业务. 分布 ...
- 分布式精华问答 | 秒懂分布式与集群的区别
布式的处理方式越来越受到业界的青睐--计算机系统正在经历一场前所未有的从集中式向分布式架构的变革.今天,我们就来看看关于分布式的精华问答吧! 1 Q:什么是分布式系统? A:要理解分布式系统,主要需要 ...
- 分布式精华问答 | 分布式与集群的区别是什么?
什么是分布式计算?所谓分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果 ...
- 在 Kubernetes 上快速测试 Citus 分布式 PostgreSQL 集群(分布式表,共置,引用表,列存储)...
准备工作 这里假设,你已经在 k8s 上部署好了基于 Citus 扩展的分布式 PostgreSQL 集群. 查看 Citus 集群(kubectl get po -n citus),1 个 Coor ...
- Nginx分布式与集群概述
分布式与集群概述 Nginx 本章知识点 架构知识点 三 分布式与集群概述 3.1 概述 3.2 服务器克隆 四 Nignx使用 4.1 Nginx简介 4.2 正向代理和反向代理 4.3 nginx ...
- 分布式与集群的区别是什么?
分布式与集群的区别是什么? 关注者 1,561 被浏览 449,153 关注问题写回答 邀请回答 1 条评论 分享 举报 53 个回答 默认排序 大闲人柴毛毛 渴求Java开发!内推蚂蚁 ...
最新文章
- LHC大神问的矩阵转置问题
- 当深度学习遇上图: 图神经网络的兴起 | 赠书
- 十、springboot注解式AOP(@Aspect)统一日志管理
- 正则表达式中的小括号用法
- 对List集合中的元素进行排序
- ZKWeb网页框架1.3正式发布
- Linux 下的驱动开发最简单例子
- 分布式SQL引擎是如何炼成的 —— 运行时探秘(上)
- iOS Swift 绘制PDF,超长字符串分页绘制
- 智能车学习(十四)——K60单片机GPIO学习
- 在LINUX下面建立GPRS无线MODEM拨号
- Ubuntu下安装新版QQ
- 学习@浅墨_毛星云的【OpenCV入门教程】之四
- 消息称暴雪代理谈判进入第二阶段,与四家中国代理商谈判
- 统一推送平台搭建与优化
- linux下cp -b,Linux下cp的命令解释
- 09-赵志勇机器学习-k-means
- Oracle 锁相关查询脚本
- AirPods 无法连接到iPhone、iPad或Mac的解决办法
- js判断当前手机的操作系统