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


相关文章
|
3月前
|
Cloud Native 云计算 微服务
云原生时代:企业分布式应用架构的惊人蜕变,从SOA到微服务的大逃亡!
【8月更文挑战第8天】在云计算与容器技术推动下,企业分布式应用架构正经历从SOA到微服务再到云原生的深刻变革。SOA强调服务重用与组合,通过标准化接口实现服务解耦;微服务以细粒度划分服务,增强系统灵活性;云原生架构借助容器化与自动化技术简化部署与管理。每一步演进都为企业带来新的技术挑战与机遇。
123 6
|
5月前
|
边缘计算 Cloud Native
“论SOA在企业集成架构设计中的应用”必过范文,突击2024软考高项论文
SOA架构,即面向服务的架构,它将系统中的所有功能都拆分为一个个独立的服务单元。这些服务通过相互间的沟通与配合,共同完成了整体业务逻辑的运作。在SOA架构中有几个核心概念:服务提供者、服务使用者、服务注册中心、服务规范、服务合同,这些概念清晰地阐述了服务应如何被提
230 6
“论SOA在企业集成架构设计中的应用”必过范文,突击2024软考高项论文
|
4月前
|
消息中间件 安全 NoSQL
「架构」SOA(面向服务的架构)
**SOA**是构建灵活企业IT系统的架构模式,基于服务组件进行设计。它强调服务的自包含、模块化,通过服务识别、抽象、组合和交互实现业务流程。特点包括松耦合、重用性、互操作性和标准化。优点是灵活性、可维护性、可扩展性和成本效益,但也有复杂性、性能和治理问题。设计策略涉及业务能力识别、服务契约定义和服务目录建立。技术栈涵盖Java EE、.NET、SOAP、REST、服务治理工具和各种数据库、消息队列及安全标准。SOA旨在适应变化,但也需妥善管理和规划。
175 0
|
4月前
|
Kubernetes API 微服务
「架构风格」SOA(面向服务)和微服务
**SOA与微服务对比摘要**: - **SOA**:企业级,服务粒度大,重用性强,常通过ESB通信,服务部署集中,技术栈统一。 - **微服务**:服务粒度小,单一职责,轻量级协议如REST,独立部署,技术多样性,去中心化治理。 - **区别**:服务大小、独立性、通信协议、部署方式和技术栈不同,微服务更强调敏捷和独立性。 - **示例**:Python Flask简单示例展示了服务创建,SOA服务间通过HTTP请求通信,微服务每个服务独立运行。 - **权衡**:涉及服务发现、负载均衡、容错和安全,常用技术如Docker、Kubernetes和API网关。
407 0
|
5月前
|
边缘计算 Cloud Native IDE
“论SOA在企业集成架构设计中的应用”写作框架,系统架构设计师
企业应用集成(Enterprise Application Integration, EAI)是每个企业都必须要面对的实际问题。面向服务的企业应用集成是一种基于面向服务体系结构(Service-OrientedArchitecture,SOA)的新型企业应用集成技术,强调将企业和组织内部的资源和业务功能暴露为服务,实现资源共享和系统之间的互操作性,并支持快速地将新的应用以服务的形式加入到已有的集成环境中,增强企业IT环境的灵活性。
117 0
|
6月前
|
消息中间件 Kubernetes 供应链
软件体系结构 - 架构风格(14)SOA架构风格
【4月更文挑战第21天】软件体系结构 - 架构风格(14)SOA架构风格
159 0
|
5天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
3天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
4天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
14 1
服务架构的演进:从单体到微服务的探索之旅
|
3天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
20 5