前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何给老婆解释什么是 Master-Slave

如何给老婆解释什么是 Master-Slave

作者头像
Java3y
发布2019-06-10 15:44:12
7510
发布2019-06-10 15:44:12
举报
文章被收录于专栏:Java3yJava3y

本文公众号来源:柳树的絮叨叨 作者:靠发型吃饭的柳树 这个作者我在知乎关注很久啦,之前看他的Spring系列、给老婆解释什么是RESTful,十分有趣!这篇文章是他新发表的,我看了觉得非常不错,给大家分享一下! (我之前的文章”给女朋友讲解xxx“的也是借鉴他的风格 haha)

一天,阳光明媚,天朗气清,正是春游的好日子。

我在家中躺着看权游,老婆在一旁,翻阅着书架上的书。

和往常一样,她在看到一本技术书时,阅读速度骤降下来,我知道她又要对我进行灵魂拷问了。

小命不保

“嘿,发现了一个现象。”,老婆说,手中拿着的书,是《高性能Mysql》。

“嗯哼。”,我故作镇定。

“你们每本技术书,讲到最后,都要讲一个叫 Master-Slave 的东西。”

“你是说主从?”

“主从是个啥子?”

“主从,emmm,就是... 呃,怎么跟你说呢,这是很简单的概念嘛 ... ”

"什么,很简单的概念,你意思是说,这么简单的东西我都不懂咯?"

“呃... ”,我感觉我要跪,仿佛挂在悬崖边上,靠臂力支撑着 ......

自我救赎

我不想今晚跪搓衣板、洗碗、洗衣服,我的权游还没看完。

“是这样的,很多东西嘛,一般人都不懂,但只要懂了,就会觉得很简单,比如说去日本旅游,怎么办签证、怎么坐电车、怎么和日本人沟通,没了解之前,都觉得很难,但一旦做成了,就很简单。”,我在悬崖边缘挣扎。

“嗯哼,是这个道理~”

貌似已经靠着臂力和背阔肌,把自己拉上去了,暂时安全了。

“还记得咱们上次坐高铁去长沙,在深圳北那排队取票吗?”

“记得呀~ ”

“嗯,咱们去取票,售票处那里,有很多个窗口吧,而且有的窗口上写着,只限取票,不能买票。”

“嗯嗯,是有这样的。”

“好,现在我们把这个高铁站售票窗口的模型简化一下,我们假设,一开始,只有一个窗口,既负责售票,又负责取票,你觉得会有什么问题?”

“那会很烦吧,像咱们这种在网上买票,到了那再取票的,估计得取好久。只有一个窗口,全部人都挤在一块了。”

“没错,这是只有一个窗口带来的第一个问题:拥挤。”

“还有别的问题?”

“是的,你想想看,假设负责这个窗口的员工尿急,想去上厕所,或者这个窗口的电脑坏掉了,用不了,怎么办?”

“噢,那这时候就一张票也卖不了,一张票也取不了。”

“嗯嗯,这个叫SPOF,Single Point of Failure,意识是系统里一个节点的故障,导致整个系统都不可用。”

“Soga,长见识了。”

“嗯哼,那么,这时候,假设你是高铁站的站长,你会怎么做?”

“呃,我得请更多的员工,开多几个窗口。”

“没错,我们再加多几个窗口,现在就不怕有哪个窗口,因为员工尿急或者电脑坏掉而不能提供服务了,如果无法服务,让排队的乘客去其他窗口就好了。”

“666,那这样就既解决了SPOF,又解决了拥挤问题啦~ ”

“哈,你都会用软件术语来描述生活问题了。SPOF是肯定解决了,但是拥挤嘛,还可以再继续优化的~”

“咋优化?”

“你看,现在各个窗口,都是既可以买票,又可以取票的,但是常识告诉我们,人均买票花费的时间,要远大于人均取票的时间。

“啊,对,要是这条队,前面一百个人都是买票的,但是我一个取票的过来了,排到队尾,那就得奔溃... ”

"是的,所以我们可以优化下,让其中两个窗口,既可以买票又可以取票,或者干脆就只让它们可以买票,这些,我们叫做Master,然后再按需要加多几个窗口,这几个窗口,只能取票。因为他们是为了给 Master 们减轻负担,所以我们叫它们 Slave,这个用软件的术语来描述,就是读写分离"

“Wow!原来 Master-Slave 是这样个意思~ ”

其实,很多软件设计的想法,都可以在生活中找到影子,软件设计也是一门“仿生学”。比如刚开业的小店,可能员工都不多,但是一旦生意上去了,就会招更多的小弟过来,因为一旦顾客想点菜或者买单时,找不到服务员,是很影响心情和体验的。软件也是这样,只放一台机器在那,一旦这台机器忙不过来,就会表现为网页发来的请求,响应很慢,同样影响访客的体验和心情,访客点个按钮,半天没响应,那他们可能就把这个网站拉黑了。”

“Wow,可以可以,很6嘛~ ”

我仿佛已经从悬崖边上撑了起来,迎着早晨的阳光,大步往回走 ......

非程序员请就此止步,程序员请继续往前走……

对程序员的话

这篇文章用了售票窗口来类比机器,解释什么是 Master-Slave,什么是SPOF,什么是读写分离。

要说这两者最大的不同,那就是售票窗口并不是数据源。

即我们查询数据时,不会直接从售票窗口查询,而是售票窗口里的服务员,用电脑再去查数据。

而机器呢,很多机器本身就是数据源,比如Mysql,请求过来后,它们直接从自己身上拉数据,返回出去。这样就要求不同机器上的数据,必须要一致,不能客户从机器A查询,得到结果是“aa”,从机器B查询,得到结果却是“bb”,所以就需要当数据写入 Master 时,把数据同步给 Slave,这就是「主从复制」。

「主从复制」期间,Slave的数据会和Master不一致,这是「主从延迟」。

由于「主从延迟」的存在,当Master宕机时,你要优先保证「数据强一致性」还是「服务可用性」,这就是「主从切换」时要考虑的问题了。

如果你看了这篇文章,还想深入了解 「主从复制」、「主从延迟」和「主从切换」是怎么回事 ,可以看我之前写的:Mysql Replication 简明教程

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java3y 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 小命不保
  • 自我救赎
  • 对程序员的话
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档