本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等
微服务是近几年非常火热的架构设计理念,大部分人认为是 Martin Fowler 提出了微服务概念,但事实上微服务概念的历史要早得多,也不是 Martin Fowler 创造出来的,Martin只是将微服务进行了系统的阐述。不过不能否认 Martin 在推动微服务起到的作用,微服务能火,Martin 功不可没。
微服务的定义相信你早已耳熟能详,参考维基百科,我就来简单梳理一下微服务的历史吧
- 2005 年:Dr. Peter Rodgers 在 Web Services Edge 大会上提出了“Micro-Web-Services”的概念。
- 2011 年:一个软件架构工作组使用了“microservice”一词来描述一种架构模式。
- 2012 年:同样是这个架构工作组,正式确定用“microservice”来代表这种架构。
- 2012 年:ThoughtWorks 的 James Lewis 针对微服务概念在 QCon San Francisco2012 发表了演讲。
- 2014 年:James Lewis 和 Martin Fowler 合写了关于微服务的一篇学术性的文章,详细阐述了微服务。
由于微服务的理念中也包含了“服务”的概念,而 SOA 中也有“服务”的概念,我们自然而然地会提出疑问:微服务与 SOA 有什么关系?有什么区别?为何有了 SOA 还要提微服务?这几个问题是理解微服务的关键,否则如果只是跟风拿来就用,既不会用,也用不好,用了不但没有效果,反而还可能有副作用。
本文就来深入理解微服务,到底是银弹还是焦油坑。
微服务与SOA的关系
对于了解过 SOA 的人来说,第一次看到微服务这个概念肯定会有所疑惑:为何有了 SOA还要提微服务呢?等到简单看完微服务的介绍后,可能很多人更困惑了:这不就是 SOA吗?
关于 SOA 和微服务的关系和区别,大概分为下面几个典型的观点。
微服务是 SOA 的实现方式
如下图所示,这种观点认为 SOA 是一种架构理念,而微服务是 SOA 理念的一种具体实现方法。例如,“微服务就是使用 HTTP RESTful 协议来实现 ESB 的 SOA”“使用 SOA 来构建单个系统就是微服务”和“微服务就是更细粒度的 SOA”。