“微服务”近几年尤其火热,各大厂都在进行微服务化改造和微服务建设,想享受微服务化带来的好处以便对自己的系统进行改造。分布式实验室特约记者李鹏采访了广州轻阅科技系统架构师陈珙,就微服务与SOA的区别与联系、企业引入微服务会带来的问题以及解决方案和陈珙自己的工作经验进行了交流。
李鹏:谈到微服务都不可避免的会提到SOA,请问微服务与SOA有区别与联系?分别适用于什么场景?
陈珙:果然一谈到微服务,SOA也绝对不会避而不谈。首先,对于这个问题我也曾经思考与总结过的,我的看法跟大多数人百度、Google到的那种看法并不一样,下面我将从两者的发展史、两者的出发点与核心思想进行阐述。
SOA与微服务的关系,我从多个方面的资料梳理后,总结出有这样两种看法:
-
微服务是SOA的最佳实践 (出自维基百科)—— 微服务是SOA的演进版,粒度更细,基础设施去中心化。
-
微服务拒绝SOA的标签 (出 Martin Fowler 的《Microservices》原文)——微服务与SOA,是两个完全不同的架构风格,只不过刚好长得像。
首先是发展史,这里我整理了微服务发展的小历史。
时间 |
事件 |
2005年 |
Peter教授在Web Servces Edge大会提出了“Micro-Web-Services” |
2007年 |
JuvalLöwy在他的著作与演讲建议用服务构建系统,并意识到细粒度因此扩展了WCF。 |
2011年 |
一个软件架构工作组在威尼斯附近举行的软件架构师研讨会上使用了”Microservice”来代表这种架构模式 |
2012年 |
Jame Lewis针对微服务概念在某大会发表了演讲 |
2014年 |
Jame Lewis和Martin Fowler合写了关于微服务的一篇学术性文章 |
从上文我们可以总结出三个核心关键点:
-
微服务的起源最早追溯到2005年;
-
微服务不是由 Martin Fowler 他本人创造的;
-
那篇举世闻名2014年写的《Microservices》原文是由 Jame Lewis 和 Martin Fowler 他们两人共同合作编写的。
虽然说微服务架构并非 Martin Fowler 所创造的,但是称《Microservices》这篇文章是推动微服务的崛起的缘由,一点都不为过,而 Jame Lewis 和 Martin Fowler 两位对微服务的盛行起到了非常关键的作用。
我相信不少同行讨论微服务都会拿维基百科的定义作为标准(维基百科仍然写着微服务是SOA的一种变种),不得不承认,微服务当时的出现就是作为一种轻量化的解决方案,用来解决SOA的一些诟病的,但是随着微服务的这些年的发展与蜕变,渐渐的脱离了SOA的标签,成为了一种独立的架构风格。
因此在2014年 Jame Lewis 和 Martin Fowler 合作编写的《Microservices》其中一段写着微服务倡导者拒绝SOA的标签。因此我认为维基百科的定义已经过时了。