场景:

如果我们打开支付宝首页,去看我们的余额,它会展示你的总资产,昨日收益、累计收益等信息。假如这个页面所展示的信息,都来自各个不同的系统/应用,我们通过各个接口把这些数据展示出来。如果我们现在要在前端页面展示这几项数据的话,我们应该怎么去展示呢?

在这种情况下,我们不可能让客户端与6个不同的应用/系统都一一去通信来去完成数据的展示。而是6个应用/系统之间进行彼此通信来完成调用,最后客户端只需要调用一个接口来获取数据即可,而不是与每一个应用/系统进行通信。我们的架构可能是如下的样子:

一个电商系统,比如淘宝,我们在首页会展示很多数据信息,例如:首页信息、商品信息、个人信息、推送信息等等很多。如果首页展示的数据来自100个不同的应用/系统,那么通过如上架构,我们在后端便会出现几百个乃至上千个通信的交互,那么后端的结构就会变得非常的庞大和复杂。所以在这样的架构下,我们需要对上面结构作出一些调整 ,所以我们就引入了SOA架构

0.图示区别

1.什么是SOA架构

SOA(全称:Service Oriented Architecture),中文意思为 “面向服务的架构”,你可以将它理解为一个架构模型或者一种设计方法,而并不是服务解决方案。其中包含多个服务, 服务之间通过相互依赖或者通过通信机制,来完成相互通信的,最终提供一系列的功能。一个服务通常以独立的形式存在与操作系统进程中。各个服务之间通过网络调用 。

跟 SOA 相提并论的还有一个 ESB(企业服务总线),简单来说ESB就是一根管道,用来连接各个服务节点。为了集成不同系统,不同协议的服务,ESB 可以简单理解为:它做了消息的转化解释和路由工作,让不同的服务互联互通;


我们将各个应用之间彼此的通信全部去掉,在中间引入一个ESB企业总线,各个服务之间,只需要和ESB进行通信,这个时候,各个应用之间的交互就会变得更加的清晰,业务架构/逻辑等,也会变得很清楚。原本杂乱没有规划的系统,梳理成了一个有规划可治理的系统,在这个过程中,最大的变化,就是引入了ESB企业总线。

SOA 所解决的核心问题 
       1. 系统集成:站在系统的角度,解决企业系统间的通信问 题,把原先散乱、无规划的系统间的网状结构,梳理成规整、可治理的系统间星形结构,这一步往往需要引入 一些产品,比如 ESB、以及技术规范、服务管理规范;这一步解决的核心问题是【有序】

2. 系统的服务化:站在功能的角度,把业务逻辑抽象成可复用、可组装的服务,通过服务的编排实现业务的快速再生。目的:把原先固有的业务功能转变为通用的业务服务,实现业务逻辑的快速复用;这一步解决的核心问题是【复用】

3. 业务的服务化:站在企业的角度,把企业职能抽象成可复用、可组装的服务;把原先职能化的企业架构转变为服务化的企业架构,进一步提升企业的对外服务能力;前面两步都是从技术层面来解决系统调用、系统功能复用的问题。第三步,则是以业务驱动把一个 业务单元封装成一项服务。这一步解决的核心问题是 【高效】

2.微服务架构

微服务架构其实和SOA架构类似,微服务是在SOA上做的升华。微服务架构重点强调的一个是"业务需要彻底的组件化和服务化",原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这样的小应用和其他各个应用之间,相互去协作通信,来完成一个交互和集成,这就是微服务架构。

组件化:组件表示一个可以独立更换和升级的单元,就以PC机为例,PC中的 CPU、内存、显卡、硬盘一样,独立更换升级而不影响其他单元。如果我们把PC作为组件以服务的方式构建,那么这台PC只需要维护主板和一些必要的外部设备。CPU、内存、硬盘都是以组件方式提供服务,PC需要调用CPU做计算处理,只需要知道CPU这个组件的地址即可。

     微服务的特征

1. 通过服务实现组件化

2. 按业务能力来划分服务和开发团队

3. 去中心化

4. 基础设施自动化(devops、自动化部署)

3.SOA 和微服务架构的差别

1. 微服务去中心化,去掉ESB企业总线。微服务不再强调传统SOA架构里面比较重的ESB企业服务总线,同时SOA的思想进入到单个业务系统内部实现真正的组件化

2. Docker容器技术的出现,为微服务提供了更便利的条件,比如更小的部署单元,每个服务可以通过类似Node或者Spring Boot等技术跑在自己的进程中。

3. SOA注重的是系统集成方面,而微服务关注的是完全分离


博主已经新开 Spring Cloud + Spring Cloud Alibaba 模块,欢迎大家来学习。

地址:Spring Cloud + Spring Cloud Alibaba Nacos/Sentinel/Seata 模块  2020.08.01

SOA架构和微服务架构的区别相关推荐

  1. 分布式与微服务——Iaas,Paas和Saas、单体应用和缺点、微服务概念、传统 分布式 SOA 架构与微服务架构的区别、微服务实战、什么是RPC、CAP定理和BASE理论、唯一ID生成、实现分布式

    文章目录 1-什么是Iaas,Paas和Saas 一 IaaS基础设施服务 二 paas平台即服务 三saas软件即服务 四 总结 2-单体应用和缺点 一 单体应用 二 单体应用的缺陷 3-微服务概念 ...

  2. SOA架构和微服务架构的区别(转载)

    文章目录 1.SOA架构和微服务架构的区别 2.ESB和微服务API网关 1.ESB(企业服务总线) 2.API网关: 3.SOA架构特点: 4.微服务架构特点: 1.通过服务实现组件化 2.按业务能 ...

  3. 系统架构的演变过程(单体应用架构、垂直应用架构、分布式SOA架构、微服务架构)

    文章目录 系统架构演变 单体应用架构 垂直应用架构 分布式SOA架构 什么是SOA 微服务架构 分布式SOA架构和微服务架构对比 系统架构演变 随着互联网的发展,网站应用的规模不断扩大,常规的应用架构 ...

  4. SOA架构和微服务架构之间的关系

    写在前面: 你好,欢迎你的阅读! 我热爱技术,热爱分享,热爱生活, 我始终相信:技术是开源的,知识是共享的! 博客里面的内容大部分均为原创,是自己日常的学习记录和总结,便于自己在后面的时间里回顾,当然 ...

  5. SOA架构和微服务架构的区别是什么

    本文来说下SOA架构和微服务架构的区别是什么 文章目录 SOA架构和微服务架构的区别 ESB和微服务API网关 SOA架构特点 微服务架构特点 本文小结 SOA架构和微服务架构的区别 首先SOA和微服 ...

  6. 单体应用、SOA架构、微服务架构的对比

    目录 前言: 单体架构 SOA架构 微服务架构 前言: 随着近年来云技术的发展,越来越多的用户选择使用云技术来代替传统的IT基础设施.在云技术发展的早期,业界的关注点集中在虚拟化.分布式.存储等laa ...

  7. 单体架构-->SOA架构-->微服务架构

    上诉架构图采用了分层架构,按照调用顺序,从上到下为表示层.业务层.数据访问(DAO)层.DB层.表示层负责用户体验,业务层负责业务逻辑,包括电影.订单和用户三个模块.数据访问层负责DB层的数据存取,实 ...

  8. 微服务架构 之 互联网项目架构演变过程 (单点架构,模块化架构,分布式架构,soa架构,微服务架构)

    一.什么是单点系统(传统架构)? 1.传统的SSH,SSM 架构,分为三层架构 web控制层.业务逻辑层.数据库访问层. 2. 传统架构也就是单点应用,就是大家在刚开始初学JavaEE技术的时候SSH ...

  9. 单体应用架构和微服务架构的区别

    一.单体应用架构概念 一个归档包(可以是JAR.WAR.EAR或其它归档格式)包含所有功能的应用程序,通常称为单体应用.       而架构单体应用的方法论,就是单体应用架构. 二.单体架构示意图 三 ...

  10. 【架构】分布式服务架构与微服务架构

    文章目录 0)服务相关架构的演变 *关于面向对象.面向组件.面向服务 1)面向服务架构(SOA) 1.1 什么是面向服务架构(SOA)? 1.2 为什么需要SOA? 1.3 SOA 的特征 1.4 S ...

最新文章

  1. 中国互联网+固体饮料行业商业模式创新与投资机会深度研究报告
  2. go 捕获数据库新增数据_更改数据捕获的经验教训
  3. 中科大 计算机网络16 P2P应用
  4. Java架构-JavaSE(一)之类与对象
  5. JavaWeb项目架构之Kafka分布式日志队列
  6. 中国传统节日端午节网页HTML代码 学生网页课程设计期末作业下载 春节大学生网页设计制作成品下载 DW春节节日网页作业代码下载
  7. 华为认证HCDA免费公开课课表及其交流群公告
  8. Deepin-WPS更新字体
  9. bu zhi dao yao zen me zuo
  10. html5点赞计数功能,点赞功能
  11. 美式口语发音技巧:《影子跟读》
  12. 罗技无线鼠标响应缓慢
  13. Luogu P3354 [IOI2005]Riv河流 题解———再加一维!再加一维!
  14. Pj Immediate Decodability
  15. 网规第二版:第8章 网络规划与设计论文学习笔记(含历年真题)(完结)
  16. 数据库_SQL基本内容整理
  17. 新闻资讯门户类网站源码 织梦dedecms内核
  18. 打破Batch Size的玄学!batch size 的设置范围,不必那么拘谨!
  19. 在Windows命令行工具cmd中使用gcc命令实现编译
  20. 2022-3-29 Leetcode 06.整数转换

热门文章

  1. 骁龙855到底有多贵?小米高管:骁龙845的一倍多,710的三倍
  2. 新手小白亚马逊注册最全教程在此
  3. linux scp迁移服务器
  4. 删除计算机安装的应用程序正确的操作是,如何把安装的电脑程序快速正确地卸载?...
  5. jquery和yui的比较
  6. Windows 10安装Docker以及配置镜像加速
  7. 轴线图层设置_做好的CAD,轴线图层的线型怎么修改?
  8. java和微软不得不说的故事
  9. Java 语言实现水仙花数
  10. storage与cookie的相同点和区别