如何给老婆解释什么是微服务?(文末有福利)

戳蓝字“CSDN云计算”关注我们哦!

程序员有了老婆之后就是累,上次好不容易给她解释了什么是Restful,这不,麻烦又来了…

一个周日的清晨,阳光洒在我的脸上,慢慢把我唤醒。我翻过身,感觉好像少了些什么东西,缓缓地睁开眼睛,“咦,老婆呢/span>

突然,我发现床上多了张纸条:

看到这封信时,我已经在回娘家的路上,原因我相信你懂的。如果你不懂,请将信翻到背面。

我一脸懵逼,将纸翻了过来:

哼,你怎么可能不知道原因,你翻过来看就是想确认我发现的是不是你那个秘密而已,那我就告诉你吧。

在你的书桌上,有一本叫 《微服务设计》 的书,我虽然是女生,但也知道“服务”是个什么勾当,没想到你放着好好的程序员不做,居然做起了“服务”,你和旧时代的老鸨有什么区别span>

书我翻了一下,想看看你的这种“微服务”是怎么个“微”法,哼,你们程序员挺精明的,看的书都加密过的为我不知道那些是代码,是你们程序员的通用语言。鬼知道里面讲了什么东西。

不管怎样,既然你选择了这条路,也就别怪我不仁不义,再见。不,再也不见。

—— 对你很失望的静香

我渐渐地缓过神来,百感交集,思绪万千,冥想了一会,拿起手机,给她发了信息:

下午四点,老地方,给你解释什么是微服务。

沃尔兹百货超市

我提前十五分钟来到了咖啡厅。临近四点,我开始望着门口,59分49秒,一个熟悉的身影走了进来,戴着墨镜,披着纱巾,是她。

“服务员,一个芝士蛋糕,两杯拿铁,谢谢”,我对服务员说。

“说吧,你有什么要解释的/span>

“嗯,首先,我向你保证,我在看的“微服务”,绝对不是你想的那种“服务””

“那是什么/span>

“这个解释起来要花点时间,我们先吃点蛋糕,待会再慢慢和你解释”

过了一会,蛋糕吃的差不多了。“看到对面那家沃尔兹百货超市了么我指着窗外面的沃尔兹超市,对老婆说。

“哇塞,这样看来,微服务让沃尔兹变得 轻巧 了许多! 哪个地方对某种服务的需求大,就在对应的地方多开几家卖那种服务的小店就好了 。”

沃尔兹 店

“看来微服务就是把一个百货店变成各个小店嘛,讲这个东西至于用那么厚一本书么老婆是个好奇心很强的女生。

“哈,微服务当然不只是这些,我们现在只是把一个百货店拆成各个小店,但是对于 如何管理这些小店 ,我们还没做好准备”

“哦面还有什么门道/span>

“当然,别忘了,沃尔兹可是有 店的。以前还是百货超市的时候,要是有顾客从 上买了一件衣服,那直接从百货超市的仓库里取出这件衣服,给顾客寄过去就好了;现在呢,每一家卖衣服的沃尔衣都有自己的仓库,顾客下单后, 工作人员要怎么知道顾客所在区域有哪几家沃尔衣哪家沃尔衣发货呢bsp;”

“哟西,还有这个问题。那 沃尔兹总店肯定知道他们在哪个地方开有什么分店吧 /span>

“没错,这时候 店工作人员会从总店那里查出,顾客收货地址所在区域有哪些家沃尔衣,接下来就是从这些沃尔衣店里,选一家,给顾客寄快递过去。”

“就选离顾客最近那一家就好啦。”

“哈,那万一东区有两家沃尔衣,一家靠近居民区,一家靠近商业区,而顾客通常写的收获地址都是写自己家呢/span>

“这样… 那靠近居民区的沃尔衣就会收到很多订单,经常要不断的进货,而靠近商业区的那家,就没什么订单了,是吧老婆睁大双眼看着我。

“对!这就是问题,所以 店工作人员会对在一个区域内的沃尔衣,进行 轮流发货 的操作,比如这一次是靠近居民区的这家发货,那下一次,就让靠近商业区的沃尔衣发货。”

“Soga!”

“用计算机术语来说,就是 LoadBalancing ,负载均衡”

“呵呵,少扯这些术语,我只知道New Balance”

“哈哈,怎么样,微服务不是你想象的那样吧,当然,在经济学领域,要考虑的因素还有很多,现实生活中的沃尔兹依然是一个大百货超市,自然是有它的道理的。微服务的应用主要是在更为纯粹的计算机领域,也就是你看到的那些代码”

“得了,看到那些头就大,走,带我去娘家拿行李”

“……”

对程序员的话

用了大白话,给老婆讲明白了微服务的来龙去脉,当然,我还是有些话想说的,还是怕老婆听完一脸懵逼,没给她说:

1、讲微服务,就不得不从 单体应用 (Monolithic )讲起。

所谓单体应用,就像一开始的沃尔兹百货超市一样,把所有业务的代码都放在一起。这对于小型项目来说自然是很合适的,可是项目一旦大了起来,业务一多,这个单体也就 膨胀 了,膨胀后的单体应用主要有以下两个缺点:

牵一发而动全身 。我改了一个业务的一行代码,需要重启整个单体应用,这显然不不合理的。就像珠宝店装修时影响了旁边的电器店,电器店着火时殃及珠宝店一样。

只能水平扩展,不能纵向扩展 。对于单体应用,如果发现某一业务的请求量非常大,那么是无法单独扩展该业务的,只能拷贝整个单体应用,再部署一套环境,来实现集群。

正因为单体应用有着这些缺陷,才有了微服务。微服务和单体应用的区别,可以用Martin Fowler的这张图来解释:

微服务系统的衍生组件还有很多,比如对各个服务进行的配置管理的分布式配置中心、各个服务之间进行消息通讯的消息总线和消息驱动机制(上图中的Message Queue)等,这里就不一一列举了。这篇文章只是想用一种比较有趣的方式,让大家对微服务有一个初步的了解。就像学设计模式,如果直接去看四人帮的《设计模式——可复用面向对象软件的基础》,也许很多人学到一半就学不下去了,而如果先去看《Head First设计模式》,再去看前面那本书,也许就会发现轻松很多。

大家如果想对微服务有进一步的理解,我这边首推Martin Fowler的 Microservices – a definition of this new architecturalterm ,微服务这个词也是在这篇文章里被首次提出,可以说是微服务的一手资料了。阅读这篇著作,你可以:

看到微服务是如何影响软件开发的 组织结构 的,其实也就是康威定律;

看到Martin Fowler总结的设计微服务系统的几个原则;

从这篇著作底下的参考文献,看到一些助推了微服务架构的 原始论文 。

架构这种东西,和设计模式非常相像,两者都是针对某一类问题的解决方案。和设计模式一样,每种架构都有其优点,当然也会有缺点。只有弄清楚为什么要用这种架构,不用会怎样,用了又会怎样,知其然知其所以然,才能对架构进行灵活运用,在实际项目中发挥架构的优势。

哈哈,最后的最后,福利来了,填写以下调查问卷,并积极留言,将有机会获得由微服务架构大神Chris Richardson所著的《微服务架构设计模式》图书一本!

下面是调查问卷,请大家踊跃填写,并积极留言:


参考文献:

Microservices -a definition of this new architectural term

《微服务设计》

《Spring Cloud微服务实战》

Previous

Java趣谈——如何构建一个高效且可伸缩的缓存

福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!

推荐阅读:

  • IEEE 回应禁止华为系审稿人;WiFi联盟、蓝牙联盟已恢复华为成员资格;中国计算机学会:暂时中止与IEEE通信学会合作……

  • ARM 发布新一代 CPU 和 GPU,实现 20% 性能提升!

  • 前端开发 20 年变迁史

  • 北漂杭漂的程序员,是如何买到第一套房子r>

  • “爱装X”开源组织:“教科书级”AI知识树究竟长什么样h2>

  • 500行Python代码打造刷脸考勤系统

  • 权游播完了, 你在骂烂尾, 有人却悄悄解锁了新操作……

640_fmt=png真香,朕在看了!文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树服务 格(istio)ServiceMesh介绍8763 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年5月11日
下一篇 2019年5月11日

相关推荐