龙空技术网

当下最火爆Java技术——微服务

AI魔法师易天行 150

前言:

此时姐妹们对“微服务java”都比较关切,兄弟们都想要学习一些“微服务java”的相关文章。那么小编在网上搜集了一些有关“微服务java””的相关内容,希望看官们能喜欢,我们一起来了解一下吧!

微服务是近几年非常火热的架构设计理念,很多的人认为是Martin Flower提出了微服务概念,但是实际上微服务概念的很早以前就有了,并非Martin Flower提出来的,Martin Flower只是将微服务进行了详细的阐述。不可否认Martin Flower的功劳,在微服务的成就上有着不可磨灭的功劳。

由于微服务的理念中也包含了“服务”的概念,而 SOA 中也有“服务”的概念,我们自然而言地会提出疑问:微服务与 SOA 是什么关系,有什么区别,为何有了 SOA 还要提微服务?这几个问题是理解微服务的关键,否则如果只是跟风拿来就用,既不会用,也用不好,用了不但没有效果,反而还可能有副作用。

微服务与SOA的关系

微服务是SOA的实现方式

如下图所示,这种观点认为SOA是一种架构理念,而微服务是SOA理念的一种具体实现方法。例如,“微服务就是使用HTTP RESTful协议来实现ESB的SOA”,“使用SOA来构建单个系统就是微服务”“微服务就是更细粒度的SOA”。

SOA和Mcroservice的关系

微服务是去掉ESB后的SOA

如下图所示,这种观点认为传统SOA架构最广为人诟病的就是庞大、复杂、低效的ESB,因此将ESB去掉,改为轻量级的HTTP实现,就是微服务。

SOA和Mcroservice、ESB的关系

微服务是一种和SOA相似,但本质上不同的架构理念

如下图所示,这种观点认为微服务和SOA只是有点类似,但本质上是不同的架构设计理念。相似点在于下图中交叉的地方,就是两者都关注“服务”,都是通过服务的拆分来解决可扩展性问题。本质上不同的地方在于几个核心理念的差异:是否有ESB、服务的粒度、架构设计的目标等。

几者之间的关系

经过上面的分析和比较,感觉微服务本质上就是一种比SOA要优秀很多的架构模式,那是否意味着我们都应该把架构重构为微服务呢?

其实并不是,SOA和微服务是两种不同理念的架构模式,并不存在孰优孰劣,而只是应用场景不同而已。我们介绍SOA时候提到其产生历史背景是因为企业的 IT 服务系统庞大而又复杂,改造成本很高,但业务上又要求其互通,因此才会提出SOA这种解决方案。

如果我们将微服务的架构模式生搬硬套到企业级 IT 服务系统中,这些IT服务系统的改造成本可能远远超出实施SOA的成本。

标签: #微服务java