总算有篇文章把【微服务】的来龙去脉讲透了

面向过程(函数)、面向对象、面向接口、面向组件、面向服务、面向微服务,这几个词,好多人傻傻分不清楚。让俺来回归原教旨主义,给大家析辨析辨。正好这些阶段咱都亲身经历过,没有从90年代初期开始编程的人,可能没啥切肤体会到。

一、面向过程(函数)

我们发现,一个函数的输入输出变化了,很多关联调用都要修改。所以我们提出面向过程(函数),好好的设计函数的输入输出。

二、面向对象

我们发现,不少函数其实是有一定组织关系的,但是在面向过程(函数)编程过程中,这些函数都是平行排列的,没有显性化组织。

所以我们发明面向对象,同一个对象关联的函数组织在一起,并且哪些函数是私有的,哪些是公有的,哪些是亲兄弟才能半公开调用的。

三、面向接口

我们发现有以下变化:

1、架构师这一个岗位被提出来了,专门用于框架性代码的设计。架构师和程序员是两个岗位了。架构师他们不关心具体实现,他们特别关心对象和对象之间的关系、层与层之间的关系。这样,定义和实现要求分离。

2、我们也发现,我和你不是一个项目组的,你想调用我的类,但是我不想给你这个类的源代码实现,因为我的这个类的源代码的所有权归我,我可能需要随时变化它,但我和你商定好的调用接口,我们保持稳定,我只需要给你合规的输入输出,你别管我内部代码怎么改。

因而,面向接口编程出现了。它既是类特征,又做到了定义和实现的分离。

四、面向组件

组件比对象更进一步。这里面关键的差异就是:组件是有容器的,对象和类是没有容器的。组件的生命周期是由容器来决定的,而对象,需要程序员自己管理对象的生死创建与回收。

显然,组件更让程序员省心。因为内存管理,对于大量的程序员都是个挑战。这又把编程难度拉下一个门槛。

小结:这里出现了组件容器中间件服务器

五、面向服务

服务比接口更进一步。

虽然组件编程已经具备了容器化,虽然面向接口编程已经做到了定义和具体实现的分离。

但我们还差一步,就是接口应该和开发语言无关。所谓的接口,不外乎就是参数的输入输出。但输入输出是有类型的。比如说,有的语言是面向对象的,你定义了一个输出参数是个对象的,当然这没问题。但如果调用方是不面向对象的语言,你咋办?

这就是面向接口编程当年留下的后遗症,和开发语言强相关。

如何和开发语言不强相关,这就是面向服务要解决的。

所以,面向服务在输入输出参数方面利用了结构化文本这一东西,在参数传递方面利用了文本传输协议。比如说:XML/JSON、HTTP REST/WebService。当然,怎么传数据也可以随便,可以用消息队列(同步异步皆可),也可以用TCP等等。只不过协议需要定义好怎么建立握手、怎么响应、怎么处理容错、怎么处理安全等等,这都是需要协议定义好的。

现在有企业服务总线,你想用啥输入输出表示格式都行,你想用啥传输协议都行,根据你组件的质量保证要求就OK。当然,你说你的代码简单,不需要企业服务总线,两个组件之间通过服务直接调用了,那也OK,那就不需要企业服务总线了。

小结:这里出现了企业服务总线中间件。

六、面向微服务

我们解决了接口与开发语言的无关性,我们的组件就可以由不同语言来实现,而且之间能通畅调用,通过各种近程远程协议我们还能实现跨进程跨服务器之间的调用。

当时我们这时又遇到了一个棘手问题,就是各个语言实现的组件,需要依赖的框架和库越来越多,而且这些框架和库的版本还有时候打架。你经常会发现,你用的这个框架要依赖2.3版本,另外一个东西非要依赖2.2版本(可能作者懒了不更新了)。而如果2.3和2.2之间的函数接口不一致了,而且作者也没保证平滑升级,那就不能升级统一版本。

咋办?为了防止版本打架,只能把这些组件隔离开。幸好现在出现了Docker技术,可以在一台物理机上不用安装N个笨重的虚拟机(虚拟机要操作系统一堆东西),只需要安装好Docker,组件以及组件关联的各种框架类库就被隔离开了。

小结:这里出现了Docker容器中间件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,601评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,587评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,520评论 25 707
  • 夜幕悄悄地降临,今夜的夜色却是格外的好。皎洁的月光从窗口悄悄地溜了进来,照在我的脸庞上,本已是睡意朦胧的我更加...
    聆听的路人阅读 362评论 0 0
  • 跑马溜溜的山上,一朵溜溜的云哟端端溜溜的照在,康定溜溜的城哟 倘若你看到上面的两行歌词,不自觉的唱起来 。那么恭喜...
    伴奂尔游矣阅读 839评论 5 7