场景

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

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

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

图示区别

什么是SOA架构

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

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

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

SOA 所解决的核心问题

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

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

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

微服务架构

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

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

微服务的特征

  • 1.通过服务实现组件化
  • 2.按业务能力来划分服务和开发团队
  • 3.去中心化
  • 4.基础设施自动化(devops、自动化部署)

SOA 和微服务架构的差别

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

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

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

彻底搞清楚!SOA和微服务的区别相关推荐

  1. SOA与微服务的区别

    1.SOA 全称:Service Oriented Architecture(面向服务架构)是一种架构设计模式,主要是以服务总线的形式对外提供服务, 可以将它理解为一个架构模型或者一种设计方法,而并不 ...

  2. soa和微服务的区别

    1.SOA架构和微服务架构的区别 首先SOA和微服务架构一个层面的东西,而对于ESB和微服务网关是一个层面的东西,一个谈到是架构风格和方法,一个谈的是实现工具或组件. 1.SOA(Service Or ...

  3. SOA 和 微服务的区别

    SOA和微服务是分布式架构的两种实现方式 集成方式不同: SOA倾向于去中心化的集成方式 运行方式不同: 每个微服务都可以单独运行在自己的进程中,互补影响 SOA依托于企业服务总线ESB 因为SOA的 ...

  4. 服务架构soa和微服务的区别

    soa服务架构 它是一种设计方法,包含多个服务,服务之间相互依赖形成一系列功能 一个服务通常以独立的形式存在于操作进程中,各个服务通过网络调用. 微服务架构 与soa服务架构类似,是在soa上做的升华 ...

  5. SOA和微服务架构的区别?

    知乎用户 289 人赞同了该回答 谢多人邀请,其实前面几位的回答已经差不多了,在这里仅谈下自己的简单总结. 微服务架构强调的第一个重点就是业务系统需要彻底的组件化和服务化,原有的单个业务系统会拆分为多 ...

  6. SOA和微服务架构的区别

    SOA和微服务架构的区别? 1 条评论 分享 默认排序按时间排序 10 个回答 203赞同 反对,不会显示你的姓名 知乎用户 大型电信行业SOA实施经验,SOA规划咨询,- 203 人赞同 谢多人邀请 ...

  7. 万字长文解析:分布式架构、SOA、微服务架构、API网关、ESB服务总线架构之间的关联及演进

    1架构演进 架构十五年:改变的是形态,不变的是目的 业务驱动架构形态变化 过去十几年,随着互联网发展以及业务的多样化,系统的架构也在不断发生变化,总体上来说大体经历了从单体应用架构-垂直应用架构-分布 ...

  8. 阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别

    内容大纲: 1.介绍Restful.SOAP.RPC.SOA以及微服务 2.重点谈谈SOA与微服务的区别 3.以及为什么要使用微服务架构 什么是Restful Restful是一种架构设计风格,提供了 ...

  9. Restful、SOAP、RPC、SOA、微服务之间的区别

    一.介绍Restful.SOAP.RPC.SOA以及微服务 1.1.什么是Restful? Restful是一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的应用程序或 ...

最新文章

  1. 都是推荐系统,广告算法和推荐算法有啥区别?
  2. connection could not be established with host smtp.exmail.qq.com
  3. qt label显示图片_qt关于qmovie类的使用
  4. pipenv ModuleNotFoundError: No module named ‘virtualenv.seed.via_app_data‘
  5. Zabbix3.0 安装Graphtree
  6. vmware中centos6.4突然无法进入图形界面解决方法
  7. 基于小波包的图像压缩及matlab实现,基于小波包的图像压缩及matlab实现精选.doc...
  8. Vue项目 全局定义日期时间方法处理
  9. springboot 整合redis_springboot自动装配原理详解
  10. 云服务器安装python_腾讯云服务器安装PYTHON3.6.3
  11. 引用之函数返回值 函数的返回值为引用类型《三》
  12. Android Studio 应用目录结构说明
  13. SSLOJ·马蹄印【DFS】
  14. 启动界面、封面图片、Splash关不掉,一直转圈,无法进入
  15. STM32固件库(Standard Peripheral Libraries )官网下载方法
  16. 【备忘】hive 调优
  17. kbhit函数(讲解)
  18. 【RW007系列综合实战3】柿饼派上怎样更新RW007固件和驱动?
  19. Excel:表格中重复项的处理
  20. 【系列】重新认识Java——基本类型和包装类

热门文章

  1. python numpy sum函数_如何使用Python中的sum函数?
  2. html中以菱形为边框,使用 border 画流程图中的决策框 (菱形框) 的代码教程
  3. oracle时间倒序查询_Oralce 复杂查询
  4. 恢复网站降权的方法!某宝花200块买的,方法竟然这么简单?
  5. 大学生HTML期末作业, JavaScript期末大作业
  6. python吴枫千寻的_边玩游戏边学Python,原来编程如此有趣
  7. 实战--王者特权白名单制作教程
  8. 数据库基本知识与关系模型
  9. oracle19c数据库用11g驱动包,OJDBC14.jar包11g最新版数据库驱动官方版
  10. python open函数编码_python中的open函数如何编码?