文章目录

  • 百度概念
  • 白话概念
  • 软件架构的演进
    • 单体架构
      • 特点 :
      • 优点 :
      • 缺点 :
    • 分布式架构
      • 特点 :
      • 优点 :
      • 缺点 :
    • SOA架构
      • 特点 :
      • 优点 :
      • 缺点 :
    • 微服务架构
      • 特点 :
      • 优点 :
      • 缺点 :
  • 总结

最近在学springboot,又遇到了springcloud,什么单体,分布式,SOA,微服务等架构也都遇见了,这节咱们了解一下什么是SOA(面向服务架构)?

首先俩看一下百度的概念:

百度概念

面向服务架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

一大部分人肯定是不懂了,我们将上面的话提炼一下:

白话概念

SOA是一种面向服务的架构 ,基于分布式架构 ,它将不同业务功能按服务进行拆分 ,并通过这些服务之间定义良好 的接口和协议联系起来。

总的来说,SOA不是具体的什么技术,而是一种开发项目的思想,一种架构。

那么这种架构他是怎样衍生出来的呢,下面我们来看一下:

软件架构的演进

软件架构的发展经历了从单体架构、垂直架构、 SOA架构到微服务架构的过程。

单体架构

Web应用程序发展的早期 ,大部分web工程师将所有的功能模块打包到一起并放在一个web容器中运行 ,所有功能 模块使用同一个数据库。

下图是一个单体架构的电商系统 :

特点 :

1、所有的功能集成在一个项目工程中。
2、所有的功能打在一个war包部署到服务器。
3、通过部署应用集群和数据库集群来提高系统的性能。

优点 :

1、项目架构简单 ,前期开发成本低 ,周期短 ,小型项目的首选。
2、 开发效率高 ,模块之间交互采用本地方法调用。
3、容易部署 ,运维成本小 ,直接打包为一个完整的包 ,拷贝到web容器的某个目录下即可运行。
4、容易测试 :IDE都是为开发单个应用设计的、 容易测试——在本地就可以启动完整的系统。

缺点 :

1、全部功能集成在一个工程中 ,对于大型项目不易开发、 扩展及维护。
2、版本迭代速度逐渐变慢 ,修改一个地方就要将整个应用全部编译、 部署、 启动 ,开发及测试周期过长。
3、 无法按需伸缩 ,通过集群的方式来实现水平扩展 ,无法针对某业务按需伸缩。

分布式架构

针对单体架构的不足 ,为了适应大型项目的开发需求 ,许多公司将一个单体系统按业务垂直拆分为若干系统 ,系统 之间通过网络交互来完成用户的业务处理 ,每个系统可分布式部署 ,这种架构称为分布式架构。

特点 :

1、按业务垂直拆分成一个一个的单体系统 ,此架构也称为垂直架构。

2、系统与系统之间的存在数据冗余 ,耦合性较大 ,如上图中三个项目都存在客户信息。
3、系统之间的接口多为实现数据同步 ,如上图中三个项目要同步客户信息。

优点 :

1、通过垂直拆分 ,每个子系统变成小型系统 ,功能简单 ,前期开发成本低 ,周期短。
2、每个子系统可按需伸缩。
3、每个子系统可采用不同的技术。

缺点 :

1、子系统之间存在数据冗余、 功能冗余 ,耦合性高。
2、按需伸缩粒度不够,对同一个子系统中的不同的业务无法实现 ,比如订单管理和用户管理。

SOA架构

SOA是一种面向服务的架构 ,基于分布式架构 ,它将不同业务功能按服务进行拆分 ,并通过这些服务之间定义良好 的接口和协议联系起来。

特点 :

1、基于SOA的架构思想 ,将重复公用的功能抽取为组件 ,以服务的方式向各各系统提供服务。
2、各各系 统与服务之间采用webservice、 rpc等方式进行通信。
3、 ESB企业服务总线作为系统与服务之间通信的桥梁。

优点 :

1、将重复的功能抽取为服务 ,提高开发效率 ,提高系统的可重用性、 可维护性。
2、 可以针对不同服务的特 点按需伸缩。
3、采用ESB减少系统中的接口耦合。

缺点 :

1、系统与服务的界限模糊,会导致抽取的服务的粒度过大,系统与服务之间耦合性高。
2、 虽然使用了ESB,但是服务的接口协议不固定,种类繁多,不利于系统维护。

微服务架构

基于SOA架构的思想 ,为了满足移动互联网对大型项目及多客户端的需求 ,对服务层进行细粒度的拆分 ,所拆分的 每个服务只完成某个特定的业务功能 ,比如订单服务只实现订单相关的业务 ,用户服务实现用户管理相关的业务等 等 ,服务的粒度很小 ,所以称为微服务架构。

特点 :

1、 服务层按业务拆分为一个一个的微服务。
2、微服务的职责单一。
3、微服务之间采用RESTful、 RPC等轻量级协议传输。
4、有利于采用前后端分离架构。

优点 :

1、 服务拆分粒度更细 ,有利于资源重复利用 ,提高开发效率。
2、 可以更加精准的制定每个服务的优化方案 ,按需伸缩。
3、适用于互联网时代 ,产品迭代周期更短。

缺点 :

1、==开发的复杂性增加 ==,因为一个业务流程需要多个微服务通过网络交互来完成。
2、微服务过多 ,服务治理成本高 ,不利于系统维护。

总结

现在对SOA理解些了吗?

SOA是一种面向服务的架构,基于分布式架构 ,它将不同业务功能按服务进行拆分 ,并通过这些服务之间定义良好 的接口和协议联系起来。

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

SOA(面向服务架构)是什么?相关推荐

  1. 【转载】SOA面向服务架构简述

    在分布式系统中表现层和业务逻辑层 并不处于同一物理部署,所以我们必须存在分布式服务,以契约方式发布于网络中,我们的关注点在于服务,面向服务编程,这种通过组合业务逻辑暴露可用服务的架构叫做面向服务架构( ...

  2. SOA面向服务架构简述

    在上篇中我们简单谈了下架构设计中服务层的简单理解,在这里我们将继续服务层的架构,在本节我们将重点在于分布式服务.在分布式系统中表现层和业务逻辑层 并不处于同一物理部署,所以我们必须存在分布式服务,以契 ...

  3. SOA面向服务架构:服务、服务实例、ARXML、服务接口调用、各参与方以及协议选择

    1. 什么是服务 传统的汽车EE架构是基于信号的,使用can.lin等总线.随着车载以太网的普及和发展,面向服务架构越来越流行 服务由一组服务接口组成,代表了某个功能,比如蓝牙音乐服务 它有三种类型的 ...

  4. 漫谈SOA(面向服务架构)

    面向服务架构的思想在整个软件的架构中已经不是什么新鲜的东西.我简单的认为服务化是模块化的延伸,所以服务化有着和模块化类似的优点和缺点.这里不再讨论这些服务定义服务与服务之间的通信协议(像WSDL等等) ...

  5. 【电信业务】【原则与规范】SOA 面向服务架构

    面向服务的体系结构(service-oriented architecture,SOA) 从软件的基本原理定义: 是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和 ...

  6. SOA面向服务架构——SOA的概念

    SOA的概念是Gartner 在1996年提出来的,并于2002年12月进一步提出SOA是"现代应用开发领域最重要的课题". 一.SOA的定义 SOA分为广义的SOA和狭义的SOA ...

  7. 2.SOA面向服务架构

    摘要 2019年1月,我参与了某通讯公司的分布式大容量终端平台项目,我在项目中担任系统架构设计师,主要负责设计系统架构和技术选型.该平台为通信设备商.终端商.运营商建立了一个调度管理上万台真实终端的统 ...

  8. SOA面向服务架构:通信逻辑与SOME/IP消息格式

    针对某soa工具的总结,可以初步了解soa通信的逻辑,但并不表示所有项目的soa通信方式都是这样的.毕竟soa只是一种广泛的通信架构,并没有标准和统一的规范,比如,有的项目采用tcp,而有的项目使用的 ...

  9. SOA面向服务架构打包部署

    2019独角兽企业重金招聘Python工程师标准>>> 今天在公司打包部署SOA架构的项目.但是一直出现打包错误问题.现在记录下来 1.项目结构错误 原先的项目结构是: parent ...

  10. 论面向服务架构(SOA)设计及其应用

    论面向服务架构(SOA)设计及其应用 马旺旺 (石家庄铁道大学,河北省石家庄市,050000) 摘 要: SOA分层架构的核心思想是运用 SOA 理论将现有的信息系统分解成多个独立的粗粒度 Web 服 ...

最新文章

  1. 计算机应用房地产,房地产板块弱市吸金 逾30亿撤离计算机应用板块
  2. CVPR 2020 | 元学习人脸识别框架详解
  3. jvm类加载、初始化
  4. Java HashMap原理及内部存储结构
  5. 阻止计算机访问注册表,电脑怎么样防止注册表被强行的篡改,保护电脑安全
  6. unity透明通道加颜色_Unity-雪地效果的实现
  7. 面试中该如何介绍项目?
  8. 微型计算机硬件认识和拆装,微型计算机系统硬件组成及外设认识.doc
  9. PHP拼接SQL语句批量更新多个字段
  10. 单片机交通灯实训c语言编程,单片机交通灯程序(C语言).docx
  11. win7下开启梦幻桌面
  12. java ee框架开发技术与设计教程_Java EE框架开发技术与设计教程
  13. 无根树任意根深度加强版
  14. 您未被授权查看该页 错误 401.3
  15. GetType obsolete
  16. Visual Paradigm简单教程(1):绘制状态机图
  17. 常见英文语法错误案例分享
  18. 最新Spring Boot实战项目(权限后台管理系统)详解
  19. android11obb,exagear安卓11数据包obb合集版
  20. Maven 常用镜像站地址

热门文章

  1. si4463突破最大包64字节发送
  2. IDEA 2017破解方法
  3. PDF预览、图片预览插件
  4. JAVA程序员成长之路的总结
  5. 如何找到高清照片,4K高清风景照片,建议收藏!
  6. SpringIOC对象管理
  7. 程序员有必要读研吗?
  8. [附源码]SSM计算机毕业设计某城市参军和退役军人信息管理系统JAVA
  9. 如何写好科研论文 | 讨论
  10. 中职学校计算机运用基础试题,中职计算机基础试题(计算机一级)