漫话:如何给女朋友解释什么是分布式和集群?

article/2025/9/10 12:48:19

640

作者 | 漫小画

公号 | 漫话编程

漫小画

擅长漫话

程小员

擅长编程

某天,下班较早,我正在玩吃鸡,已经到决赛圈了,这时候,女朋友满脸求知欲的朝我走过来。

上次他们都说你给我讲的面向对象太简单了。

640

那你想怎样?为什么我一玩游戏你就过来问我问题呢?

640

我不管,你给我说说分布式和集群是啥东       东?

640

我头也不抬,直接抛出一句:

分布式(distributed)是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。

集群(cluster)是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。

说人话,这东西我听不懂。

640

好吧。走,我们先出去吃饭。边吃边聊。

640

集中式系统

我和女朋友来到一家小饭店,开始点菜:红烧鱼、糖醋排骨、酸辣土豆丝,好了就这么多了。

现在,我们和这家饭店之间的就是用户和系统的关系。我们要求他给我们做出一顿丰盛的晚餐。我们不关心他后厨的一切事情。只要它能在短时间内提供美味的菜品就好了。

上面,我们对这个饭店提出来两个要求:上菜时间短、菜品美味。除了这些,顾客可能还有其他要求,比如菜品要干净卫生、酸辣土豆丝可以多放些辣椒等。

映射到计算机系统中,用户提出的要求就是:

上菜时间短   -> 性能
干净卫生    -> 安全性
菜品多放辣椒 -> 扩展性
菜品美味    -> 可用性

上面说的这家小饭店,只有一个厨师。就是一个集中式系统。

640

一个集中式部署的电子商务应用

如果饭店内只有我们一个顾客的话,以上几条基本都可以满足的。但是,如果到了晚饭时间,突然顾客变多了,这些顾客的要求可能就没办法全都满足了。

饭店内人满为患,这家小饭店只有一个厨师的情况下,他需要保证所有菜品美味、卫生,又要保证所有菜品可以准时准备好,又要给不同用户满足定制化要求。这种挑战是及其大的。

以上,映射到计算机软件中,也是一样的。随着业务量的增长,网站的高可用、易伸缩、可扩展、安全等目标就会受到极大的挑战。

集群部署

随着饭店的生意越来越好,老板意识到只有一个厨师会存在很大问题。

首先,在客流量高峰期,一个厨师无法满足所有顾客的要求。

其次,厨师变成了一个单点,就是他不能生病,一旦他生病了,整个饭店就无法营业了。

这可愁坏了老板,一时之间不知道该如何是好了。但是,老板有个聪明的老婆,他提了一个建议。

这有什么好发愁的?再雇佣几个厨师就行了 呀。

640

诶,你这个注意很不错啊。

640

然后,为了提高饭店的待客能力。老板决定多雇佣几个厨师。

有了多个厨师了之后。店内顾客的点菜,就可以分配给后厨的多个厨师来做。

具体如何分配,这就是需要一定的策略了。可以选择分配给空闲的厨师、也可以按顺序轮流分配。

虽然,饭店有多个厨师,但是用户并不知道这些事情,他只知道自己的点菜需求,可以得到满足就可以了。他也不需要关心到底是哪位厨师给自己做的菜。除非菜品出现了质量问题时,就需要找到指定的厨师来问责了。

以上,映射到计算机软件中,也是一样的。集中式系统只有一台计算机提供服务,集群就是有多台计算机提供同样的服务。

640

一个集群部署的电子商务应用

用户的请求通过负载均衡分配给集群中的各个机器。整个系统对于用户来说就像是一台机器在提供服务一样。

分布式部署

在饭店雇佣了多个厨师之后,饭店的服务能力确实提升了很多。顾客也越来越多。

但是,最近店内经常会有顾客投诉某个菜品的味道和自己之前吃到过的不一样了。

经过店长的仔细调查,发现是由于这家店的厨师除了要负责炒菜以外,还需要负责洗菜、切菜、备菜,甚至是刷碗。

这就使得厨师没办法专注于炒菜了,他会被很多其他的琐事而牵绊,导致无法专心炒菜,影响了菜品的质量。

而且,由于最近店内的顾客也越来越多,几个厨师还是忙不过来。

这时候,老板就要想办法继续提升饭店的服务能力。他想着要继续雇佣几个厨师。

还是饭店老板那个聪明的老婆,又给他出了一个更好的主意。

雇佣一个厨师多费钱啊,你用雇佣一
个厨师 的钱,

雇佣几个洗菜工、配菜师不就行了么。

640

诶,你这个注意很不错啊

640

这就是一种分布式的思想。

通过把一件大的事情,拆分成多个小事情,分别交给不同的人来做。

这样术业有专攻,洗菜的可以把菜洗的更干净、厨师也可以专注炒菜,把菜炒的更加美味。

饭店从多个厨师的配置,变成了多个洗菜工+配菜师+厨师的配置。这家饭店的服务能力大大提升。再也没有顾客投诉菜品问题了。

对于顾客来说,他们还是不知道后厨的这些变化的,他甚至不知道自己点的菜是多个人配合的结果。

以上,映射到计算机软件中,也是一样的。除了通过集群部署的方式提升系统能理外,还可以通过分布式部署的方式。

640

一个分布式部署的电子商务应用

把一个大的系统拆分成多个子系统,每个子系统负责自己专注的事情,然后通过网络进行通信和协调,对用户来说,就像访问的是同一台机器一样。

   哇,太棒了

640

你听懂了对吧,什么都难不住我的。

640

什么啊,我想说,这红烧鱼太好吃了

640

额、、、

640

随着饭店的发展,慢慢的从只有一个厨师演变成有多个厨师,进而演变成有洗菜工、配菜师、厨师等多个职位。

这个网站架构发展也类似。网站初期,只需要搭建一个集中式的单体应用就可以了,如果业务量有很大增长,先考虑增加机器,通过集群部署提升能力。接着,就可以考虑分布式了。

转自「漫话编程」,搜索「mhcoding」关注

640


http://chatgpt.dhexx.cn/article/OvjUkQsR.shtml

相关文章

什么是分布式集群?

首先来说一下集群的概念,集群是指将多台服务器集中起来一起进行同一种服务。相比一台服务器,集群的优势在于将负载均衡到每台服务器上,可以承载更高的访问量。 分布式又是什么呢,分布式指的是将工作进行业务拆分,然后…

什么是分布式,分布式和集群的区别又是什么?这一篇让你彻底明白!

1. 什么是分布式 ? 分布式系统一定是由多个节点组成的系统。 其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。 这些连通的节点上部署了我们的节点,并且相互的操作会有协同。 分布式系统对于用户而言&a…

什么是集群?什么是分布式?集群与分布式的区别,集群和分布式的关系。

什么是集群 假如你开发了一个程序供大家使用,当然会把开发好的程序放到应用服务器中,刚开始用户量不大,用户访问的正常,服务器压力小。 但是随着用户量的增大,一台服务器不足以支撑系统的正常运行。 于是你决定把程…

python 除法符号_python的除法运算符是什么

python的除法运算符是什么?python中除法运算符有两类,一种是浮点除法运算符,另一种是整除除法运算符。 1. / 浮点除法,就算分子分母都是int类型,也返回float类型,比如我们用4/2,返回2.0 2. // …

c语言和Python整除符号,互联网常识:python除法运算符有哪些

python除法运算符:1、“/”运算符,按照常规数学除法计算的方式直接得出结果即可;2、“//”运算符,取整除,返回商的整数部分(向下取整);3、“%”运算符,返回除法的余数。 本教程操作环境&#xf…

python的除法_python中的除法

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 截断表示截断小数分,取整数部分的意思。 实际应用中,精确除法比截断除法更频繁,所以有的书上,精确除法也叫普通除法(也就是常用除法) 也有人把精确除法叫浮…

python 整除及余数_python除法余数

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 常量常量就是不变的变量,在python中,通常用大写的变量名表示常量,这一点和java想相同:ali_address=ali_address=www.alibaba.com4.除法python中和除法...- …

Python 计算之除法

文章目录 1. 除法 /2. 四舍五入round()3. 浮点数取整int()4. 地板除 //5. 向上取整math.ceil()6. 取小数和整数部分math.modf() 1. 除法 / a,b 95,20 c a/b print(a,a,b,b,c,c)运行结果: a 95 b 20 c 4.752. 四舍五入round() round()的第2个位置参数表示取小数…

微信小程序框架(思维导图)

这是小编整理的一份关于微信小程序框架的思维导图,建议大家电脑点击图片查看哦!

微信小程序框架分析思维导图

微信小程序框架分析思维导图

微信小程序表单框架01

简易表单wxml界面代码与界面效果 文本框样式: 点击多列选择器,代码与效果如下: 多列选择器js代码:

新建微信小程序项目

文章目录 app.jsonapp.wxsspages/index/index.wxmlpages/index/index.wxss相关链接 使用微信开发者工具新建微信小程序项目:mydemo,不使用云开发,不使用模板,自动生成如下文件: app.jsapp.wxssapp.jsonpages index in…

搭建微信小程序vue框架步骤

搭建微信小程序vue框架步骤 1.下载node.js 下载地址:https://nodejs.org/en/download/ 查看node、npm版本,确保环境正确 node --version npm --version2.安装vue脚手架工具vue-cli npm install -g vue/cli-init3.初始化结构 vue init mpvue/mpvue-qu…

微信小程序自定义组件

目录 一.自定义组件 1.创建自定义组件 2.声明组件 3.使用组件 二.Tabs样式优化 三.标题激活选中 四.父向子组件传递数据 五.子向父传递数据 六.自定义组件-slot 七.自定义组件的其他属性 一.自定义组件 1.创建自定义组件 类似页面,一个自定义组件由json ,wxm…

微信小程序npm引用ui框架

第一步:创建新的小程序,winR 输入cmd命令,进入小程序所在文件夹 第二步:在小程序根目录下输入 npm init 进行初始化 成功之后,会多一个package.json的文件 第三步: 接着执行两行命令 1、npm install --pr…

从0到一开发微信小程序(3)—小程序框架配置

文章目录 其他相关文章1、小程序框架1.1、全局配置1.1.1、Pages1.1.1.1、entryPagePath1.1.1.2、生成页面方式 1.1.2、window1.1.3、tabBar与属性1.1.4、常用其他配置1.1.4.1、sitemapLocation1.1.4.2、style1.1.4.3、networkTimeout1.1.4.4、debug1.1.4.5、functionalPages1.1…

微信小程序云开发教程-微信小程序框架的介绍

同学们大家好,我是小伊同学,今天我们来学习微信小程序框架。 微信小程序实质上是一款基于web技术的应用程序,他和我们平常所接触到的前端网页是大同小异的。相同点在于他们使用的开发语言,代码结构以及代码的运行机制是一样。但是…

uni-app框架、微信小程序项目

一、微信小程序项目发布 1.确定项目中没有bug,不能是demo; ​ 2.查看项目包大小; ​ 3.填写小程序基本信息,比如名称 头像 介绍 服务类目 ​ 4.注意配置域名白名单(微信公众平台----->开发----->开发管理----->服务器域名---->…

【微信小程序 | 实战开发】常用小程序框架介绍

写在前面: 你是否想要掌握人工智能的最新技术和应用?你是否想要成为未来社会的创新者和领导者?你是否想要和全球的优秀导师和同学一起学习和交流?如果你的答案是肯定的,那么欢迎来到床长人工智能教程网站,这里是你实现梦想的起点! 个人名片: 🐼作者简介:一名大二在校…

微信小程序云开发框架

概述 一直做后端服务器开发,最近看了一篇文章介绍小程序的云开发模式,觉得挺有意思,就尝试了一下,由本文做个记录。 因为不是专业的小程序开发人员,也没有做过网页开发,所以论述中出现错误难以避免&#…