美文网首页Beautiful Java程序猿生存指南
如何给老婆解释什么是 Master-Slave

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

作者: 柳树之 | 来源:发表于2019-06-03 11:53 被阅读14次

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

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

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

小命不保

“嘿,发现了一个现象。”,老婆说,手中拿着的书,是《高性能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 简明教程

相关文章

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

    一天,阳光明媚,天朗气清,正是春游的好日子。 我在家中躺着看权游,老婆在一旁,翻阅着书架上的书。 和往常一样,她在...

  • 如何给老婆解释什么是RPC

    一个阳光明媚的早晨,老婆又在翻看我订阅的技术杂志。 “老公,什么是RPC呀,为什么你们程序员那么多黑话!”,老婆还...

  • 如何给老婆解释什么是Restful

    老婆经常喜欢翻看我订阅的技术杂志,她总能从她的视角提出很多有趣的问题。 一个悠闲的周日下午,她午觉醒来,又习惯性的...

  • 如何给老婆解释什么是微服务

    程序员有了老婆之后就是累,上次好不容易给她解释了什么是Restful,这不,麻烦又来了... 一个周日的清晨,阳光...

  • 给测试小姐姐讲RPC——注册中心

    看了柳大神的《如可给老婆解释什么是rpc》和《如何实现一个简单的RPC》之后,我按这个思路给我们的测试小姐姐解释了...

  • 如何给女朋友解释什么是并发和并行

    原文出处如何给女朋友解释什么是并发和并行 漫话:如何给女朋友解释什么是并发和并行 原创: 漫话编程 [漫话编程](...

  • 如何给幼儿解释【什么是规则】?

    规则是保护自己或别人不受伤害的。 根据孩子的理解水平,可以将“保护”换成不让、防止,“不受伤害”换成感到痛苦、利益...

  • 我是如何给我老婆解释REST的<译>

    最近在网上看到一篇文章(原文),写的是作者如何给完全没有技术基础的老婆大人解释什么叫REST的。看完文章,我觉得老...

  • 如何实现一个简单的RPC

    在如何给老婆解释什么是RPC中,我们讨论了RPC的实现思路。那么这一次,就让我们通过代码来实现一个简单的RPC吧!...

  • 如何向老婆解释HashMap

    ====看视频最好带耳机==== 晚上在家看视频学习中,开了外放,刚好在讲HashMap,老婆在旁边问道:“Has...

网友评论

    本文标题:如何给老婆解释什么是 Master-Slave

    本文链接:https://www.haomeiwen.com/subject/kvfcxctx.html