首页>JAVA>正文

什么是微服务架构?微服务架构与SOA架构区别

时间:2018-08-06 14:03:05   来源:上海尚学堂   阅读:
同学们好,上次我们介绍过《RPC架构与原理,以及业界主流的RPC框架简介》、《经典的垂直应用框架-MVC框架介绍》。接下来,本文要讲的是微服务架构,以及微服务架构和SOA架构的区别对比。

微服务架构(MSA)是一种服务化架构风格,通过将功能分散到各个离散的服务中以实现对解决方案的解耦。

一、什么是微服务

为了最大限度复用已有的资产,保护IT资产投资,大多数异构系统并没有使用统的服务化框架进行深入改造。通过将业务接口发布成标准的Web服务(例如SOAP),利用XML序列化格式进行数据交换。部分遗留系统由于技术等原因无法改造,直接通过企业服务总线(ESB)进行异构协议的转换、 Data Mapper和消息路由,实现与其他服务的互通。不同组件服务化使用的技术和划分原则不同,SOA服务化之后的质量也良莠不齐,部分设计不合理的服务并没有体现服务化之后的价值。

SOA架构解决了应用服务化问题,随着服务化实践的不断深入,服务规模越来越大,服务治理面临的挑战也越来越多,微服务架构风格应运而生。实际上它的诞生并非偶然:
  • smiley敏捷开发强调达代开发,快速交付可用的功能;持续交付促使我们构建更快、更可靠、更频繁的软件部署和交付能力;
  • smileyCI自动化构建帮助我们简化环境的创建、编译、打包和部署;
  • smileyDevOps的流行促进小团队独立运作和交付。

受这些因素的综合影响,以及SOA服务化实施多年的经验积累,综合因素共同作用促使微服务架构诞生。

二、微服务架构的特征

微服务架构的主要特征如下
1)原子服务,专注于做一件事:与面向对象原则中的“单一职责原则”类似,功能越单一,对其他功能的依赖就越少,内聚性就越强,“高内聚、松耦合”。

2)高密度部署:重要的服务可以独立进程部署,非核心服务可以独立打包,合设到同一个进程中,服务被高密度部署。物理机部署,可以在一台服务器上部署多个服务实例进程:如果是云端部署,则可以利用LXC(例如 Docker)实现容器级部署,以降低部署成本,提升资源利用率。

3)敏捷交付:服务由小研发团队负责设计、开发、测试、部署、线上治理、灰度发布和下线,运维整个生命周期支撑,实现真正的 DevOps

4)微自治:服务足够小,功能单一,可以独立打包、部署、升级、回滚和弹性伸缩,不依赖其他服务,实现局部自治。


三、微服务架构与SOA架构的区别对比

微服务架构对比SOA两者的主要差异如下

1)服务拆分粒度:SOA首先要解决的是异构应用的服务化:微服务强调的是服务拆分尽可能小,最好是独立的原子服务。

2) 服务依赖:传统的SOA服务,由于需要重用己有的资产,存在大量的服务间依赖微服务的设计理念是服务自治、功能单一独立,避免依赖其他服务产生耦合,耦合会带来更高的复杂度。

3) 服务规模:传统SOA服务粒度比较大,多数会采用将多个服务合并打成war包的方案,因此服务实例数比较有限;微服务强调尽可能拆分,同时很多服务会独立部署,这将导致服务规模急剧膨胀,对服务治理和运维带来新的挑战。

4) 架构差异:微服务化之后,服务数量的激增会引起架构质量属性的变化,例如企业集成总线ESB(实总线)逐渐被P2P的虚拟总线替换;为了保证高性能、低时延,需要高性能的分布式服务框架保证微服务架构的实施。

5) 服务治理:传统基于 SOA GoVernance的静态治理转型为服务运行态微治理、实时生效。

6) 敏捷交付:服务由小研发团队负责微服务设计、开发、测试、部署、线上治理、灰度发布和下线,运维整个生命周期支撑,实现真正的 DevOps

四、总结

量变引起质变,这就是微服务架构和SOA服务化架构的最大差异。

我们之前讲过MVC架构,RPC架构,SOA架构(一种粗粒度、松耦合的以服务为中心的架构,接口之间通过定义明确的协议和接口进行通信)、微服务架构。是按顺序演进而来的。现在上海尚学堂java培训高级框架就重点讲微服务架构,目前也是最受欢迎,使用最多的Java高级框架。

上海尚学堂java培训整理编辑,参考文章《分布式服务框架原理与实践》
获取java学习资料或预定免费试听名额请联系客服小姐姐。


分享:0

电话咨询

客服热线服务时间

周一至周五 9:00-21:00

周六至周日 9:00-18:00

咨询电话

021-67690939
15201841284

微信扫一扫