SOA(面向服务架构)是什么?

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


相关文章
|
Cloud Native 云计算 微服务
云原生时代:企业分布式应用架构的惊人蜕变,从SOA到微服务的大逃亡!
【8月更文挑战第8天】在云计算与容器技术推动下,企业分布式应用架构正经历从SOA到微服务再到云原生的深刻变革。SOA强调服务重用与组合,通过标准化接口实现服务解耦;微服务以细粒度划分服务,增强系统灵活性;云原生架构借助容器化与自动化技术简化部署与管理。每一步演进都为企业带来新的技术挑战与机遇。
439 6
|
边缘计算 Cloud Native
“论SOA在企业集成架构设计中的应用”必过范文,突击2024软考高项论文
SOA架构,即面向服务的架构,它将系统中的所有功能都拆分为一个个独立的服务单元。这些服务通过相互间的沟通与配合,共同完成了整体业务逻辑的运作。在SOA架构中有几个核心概念:服务提供者、服务使用者、服务注册中心、服务规范、服务合同,这些概念清晰地阐述了服务应如何被提
560 6
“论SOA在企业集成架构设计中的应用”必过范文,突击2024软考高项论文
|
Kubernetes API 微服务
「架构风格」SOA(面向服务)和微服务
**SOA与微服务对比摘要**: - **SOA**:企业级,服务粒度大,重用性强,常通过ESB通信,服务部署集中,技术栈统一。 - **微服务**:服务粒度小,单一职责,轻量级协议如REST,独立部署,技术多样性,去中心化治理。 - **区别**:服务大小、独立性、通信协议、部署方式和技术栈不同,微服务更强调敏捷和独立性。 - **示例**:Python Flask简单示例展示了服务创建,SOA服务间通过HTTP请求通信,微服务每个服务独立运行。 - **权衡**:涉及服务发现、负载均衡、容错和安全,常用技术如Docker、Kubernetes和API网关。
1321 0
|
消息中间件 安全 NoSQL
「架构」SOA(面向服务的架构)
**SOA**是构建灵活企业IT系统的架构模式,基于服务组件进行设计。它强调服务的自包含、模块化,通过服务识别、抽象、组合和交互实现业务流程。特点包括松耦合、重用性、互操作性和标准化。优点是灵活性、可维护性、可扩展性和成本效益,但也有复杂性、性能和治理问题。设计策略涉及业务能力识别、服务契约定义和服务目录建立。技术栈涵盖Java EE、.NET、SOAP、REST、服务治理工具和各种数据库、消息队列及安全标准。SOA旨在适应变化,但也需妥善管理和规划。
890 0
|
边缘计算 Cloud Native IDE
“论SOA在企业集成架构设计中的应用”写作框架,系统架构设计师
企业应用集成(Enterprise Application Integration, EAI)是每个企业都必须要面对的实际问题。面向服务的企业应用集成是一种基于面向服务体系结构(Service-OrientedArchitecture,SOA)的新型企业应用集成技术,强调将企业和组织内部的资源和业务功能暴露为服务,实现资源共享和系统之间的互操作性,并支持快速地将新的应用以服务的形式加入到已有的集成环境中,增强企业IT环境的灵活性。
487 0
|
消息中间件 Kubernetes 供应链
软件体系结构 - 架构风格(14)SOA架构风格
【4月更文挑战第21天】软件体系结构 - 架构风格(14)SOA架构风格
623 0
|
4月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
417 3