微服务是SOA,微服务也不是SOA

news2024/11/24 15:33:22

文章目录

      • 一、什么是SOA?
    • 什么是微服务?
      • SOA 和微服务的区别

公众号: MCNU云原生,文章首发地,欢迎微信搜索关注,更多干货,第一时间掌握!

本文源自一次面试官的提问:你觉得微服务和SOA架构有什么联系和区别?回想起来,在我一开始接触到微服务的概念的时候,我也萌生过这个疑惑。于是借着这个机会我认真思考了这个问题,有点自己的想法写下来,未必是合适的, 也希望不对之处大家给指出来。

一、什么是SOA?

SOA 出现于 20 世纪 90 年代后期,1994年,Gartner最早提出SOA。它代表了应用程序开发和集成发展的一个重要阶段。在 SOA 成为一种选择之前,将单体应用程序连接到另一个系统中的数据或功能需要复杂的点对点集成,开发人员必须为每个新的开发项目重新创建。通过 SOA 公开这些功能消除了每次都重新创建深度集成的需要。

维基百科上对于SOA的定义是这样子的:“面向服务的体系结构(英语:service-oriented architecture)并不特指一种技术,而是一种分布式运算的软件设计方法。软件的部分组件(调用者),可以透过网络上的通用协议调用另一个应用软件组件执行、运作,让调用者获得服务。”

在 SOA 软件架构中,每项服务都包含执行特定业务功能所需的代码和数据集成,这些服务模块之间相互独立,服务接口提供松散耦合,服务可以轻松被调用,由于这种松耦合和发布服务的方式,开发团队可以通过在整个企业的其他应用程序中重用组件来节省时间。

在SOA架构中一般使用企业服务总线ESB来提供模块之间的共享访问, 它是SOA架构常规实现方法中一个非常重要的组件。ESB通过使用标准网络协议(如 SOAP、XML、JSON、MQ )来开放服务以发送请求或访问数据,实现与各种系统间的协议转换、数据转换、透明的动态路由等功能,ESB的特性有:

  • 面向服务架构实现
  • 一般使用XML作为标准通信语言
  • 包含标准安全模型,用于认证、审计等功能
  • 支持服务编排
  • 包含基于标准的适配器(如J2C/JCA),用于集成传统系统
  • 包含转换服务(通常是使用XSLT),在发送应用和接收应用之间转换格式,简化数据格式和值的转换

SOA提供业务服务、企业服务、应用程序服务和基础设施服务等多种不同的服务类型,用于实现业务功能、基础功能等不同场景。每个服务由三个部分组成:

  1. 接口,它定义了服务提供者将如何执行来自服务消费者的请求。
  2. 合同,它定义了服务提供者和服务消费者应该如何交互。
  3. 实现,即服务代码。

只要以标准的规范提供的服务就能接入总线,以松耦合的方式对外提供。开发者可以通过组合 SOA 服务来创建更高级别的服务和应用程序。

从以上我们可以看出SOA作为一种架构方法,主要强调的特点有:

  • 服务之间松耦合
  • 服务编排和治理
  • 服务注册和发现
  • 服务需要可重用
  • 通过多个服务可以聚合成一个新的服务
  • 使用ESB作为消息管理实现服务之间的调用

什么是微服务?

与 SOA 一样, 微服务架构由松散耦合的、可重用的和专门的组件组成,这些组件通常彼此独立工作。微服务架构是一种面向服务的架构模式,将应用程序拆分为多个小型服务,软件由通过明确定义的API 进行通信,这些服务由各个小型独立团队负责,使应用程序更易于扩展和更快地开发、部署。

通常,Java 是开发微服务的首选编程语言,也可以使用其他编程语言,例如 Golang和Python。

"微服务"这个词是在2005年被首次提出的,当时指的是专注于单一职责的与语言无关的细粒度web服务,维基百科上对于微服务的定义是:微服务是一种软件开发技术,是SOA的一种变体。

微服务的发展很快,早就跳出一开始的狭窄的定义。它是一种真正的云原生架构方法,微服务通常在容器中运行,这使得它们在创建独立服务时更具可扩展性和可移植性。团队可以使用微服务更轻松地更新代码,为不同的组件使用不同的堆栈并独立地扩展组件,从而减少因单个功能可能面临过多负载而必须扩展整个应用程序相关的成本浪费。由于微服务之间的独立性,它的容错性更好。

总结一下,微服务强调的主要特性有:

  • 单一职责原则
  • 服务编排和治理
  • 服务注册和发现
  • 去中心化
  • 容错性设计
  • 演进式设计
  • 基础设施自动化
  • 分散治理

很明显可以看出,微服务和SOA架构强调的一些主要能力是相似的,微服务在SOA之上发展出了一些新的关注特性。

SOA 和微服务的区别

1、标准化与自由

我想这应该是这两种架构方法最大的区别。SOA架构的方法论即便从现在来看也是非常先进的,只是当初实现SOA的规范定义过于严格,导致整体架构实现过于复杂,例如构建于SOAP之上的ESB、SDO等,都让SOA的门槛变得更高,大公司还可以撑得住,小公司基本上很难驾驭。

它有点像EJB,虽然设想非常美好,但是脱离了人民群众,一旦不能被普遍应用,那么最终只能成为少数人的实验室用品。

微服务和SOA架构最大的区别在于,微服务是更加自由的架构风格,而SOA则为了实现大一统的架构定义出了更多的标准和约束,所以微服务有各种各样的实现形式,例如springcloud、dubbo、service mesh等,即便一个RPC也可以有gRPC、dubbo等各种各样的框架实现。

微服务要发展就必须脱离SOA强约束的标准,但是微服务的很多思想又脱胎于SOA,所以我觉得说微服务是SOA的一个变种,但是新时期的微服务不是SOA(不要贴上SOA)的标签也许是更合适的。

2、数据和存储

在SOA中,多个应用程序涉及到的数据,其要求是直接在其主要数据来源进行数据获取和更改,且通常抽象出所有服务共享的单个数据存储层,减少数据维护和重复。

而微服务则一般要求每个微服务都可以独立访问它所需要的数据,甚至有独立的数据库集群,复杂性变高了,但是耦合性、弹性、扩展性变得更好了。

3、通信

在微服务架构中,每个服务都是独立开发的,有自己的通信协议,可以是同步亦可以是异步;而对于 SOA,每个服务都必须共享一个称为企业服务总线 (ESB) 的通用通信机制,通常服务间的调用是同步的,SOA 管理和协调它通过 ESB 交付的服务。然而,ESB 可能成为整个企业的单点故障,如果单个服务变慢,整个系统都会受到影响。

4、重用

在 SOA 中,服务的可重用性是架构追求的主要目标,可以基于可重用模块快速构建应用;而在微服务中,则更加强调敏捷和弹性,更倾向于通过复制和接受数据重复来重用代码,实现解耦。

5、应用场景

SOA适合庞大、复杂、异构的企业级系统;而微服务更适合快速、轻量的互联网服务,微服务也常常和Devops结合起来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/744060.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

和数链技术强化数字资产上链保护,确权打造数字数字资产重要防线

在互联网时代,版权侵权行为猖獗,短视频、摄影作品、电商产品详情页等频遭盗用、篡改、抄袭,甚至私自售卖他人的网课录屏。这些侵权行为严重扰乱市场秩序,严重危害了创作者的积极性。而知识产权案件的立案难、取证难、维权成本高、…

MyBatis实现动态SQL更新

博主记得在一个周五快下班的下午,产品找到我(为什么总感觉周五快下班就来活 😂),跟我说有几个业务列表查询需要加上时间条件过滤数据,这个条件可能会变,不保证以后不修改,这个改动涉…

Spring Boot 有哪些特点?

目录 一、自动配置 二、嵌入式 Tomcat Web 服务器 三、入门 POM 四、Actuator执行器 API 五、SpringBoot初始化器 一、自动配置 Spring Boot的自动配置是Spring Boot框架提供的一种功能,它可以根据用程序的依赖和配置信息,自动配置一些常见的功能模…

PyTorch模型容器与AlexNet构建

文章和代码已经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 pytorch教程 也可获取。 文章目录 模型容器与AlexNet构建nn.Sequetial总结 nn.ModuleListnn.ModuleDict容器总结AlexNet实现 模型容器与AlexNet构建 …

解决固态硬盘只显示一半容量的好方法,解放隐藏的存储空间!

硬盘只显示一半容量”! “几天前,我的闪迪固态硬盘出现了一些奇怪的事情,这是个500GB的硬盘,但系统没有显示全部容量,只显示了250GB。这是什么原因?我该怎么办呢?如果大家有解决过类似问题,请…

使用SpringBoot+React搭建一个Excel报表平台

摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 Excel报表平台是一款功能强大、操作简单的系统平台,可以帮助用户上传…

海量倾斜摄影模型数据web端上传发布,在线浏览、在线分享,你还不知道吗?

倾斜摄影模型突出的特点就是数据量较大,这是由其高精度、对地表全覆盖的真实影像所决定的。如何将海量倾斜摄影模型数据加载到地图中并进行在线浏览是行业用户一直关心的内容,现在通过「四维轻云」就可以实现地理空间数据的在线管理、编辑及分享。 1、倾…

青岛大学_王卓老师【数据结构与算法】Week05_04_案例引入_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享, 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础…

第二章:在html中使用javascript

1、在html页面中插入js的主要方法就是使用<script>元素 2、html4.01为<script>定义了以下6个属性&#xff1a;【language已经废弃&#xff0c;其他5个属性都是可选的】 async 表示应该立即下载脚本&#xff0c;但不应该妨碍页面中的其他操作&#xff0c;比如下载…

.NET Core 数据库DB First自动生成,Sqlite,sql server,Mysql

文章目录 前言数据库ORM代码自动添加前期准备安装Nuget Sql serverMysqlSqlite查询结果 前言 .NET Core是C# .NET 未来发展的必然趋势&#xff0c;C# 要像Java一样跨平台运行。这里解决一个.NET core 会遇到的问题&#xff0c;如何添加ORM框架。 ORM是数据库对象映射关系模型…

Anaconda的安装和配置

对于自学Python的小伙伴来说&#xff0c;在刚开始&#xff0c;我们就得要安装Python以及python的库&#xff0c;但是我们可以通过安装Anaconda很好地解决这一难题&#xff0c;给我们初学者节省很多令人头疼的环境安装问题&#xff0c;今天我就为大家分享下Anaconda的介绍&#…

什么是加密领域的 Web 3.0?

随着科技的不断进步和互联网的发展&#xff0c;我们正逐渐迈入数字经济时代。在这个时代中&#xff0c;加密领域的Web 3.0成为了一个备受关注的话题。从区块链技术到加密货币&#xff0c;从去中心化应用程序到智能合约&#xff0c;这些新兴技术正在改变着我们对互联网的认知。本…

仓库24代拣货标签——功能特点

1. 通过无线方式快速刷新屏幕&#xff1b; 2. 移动式功能用法&#xff08;自动切换基站进行通信&#xff09;&#xff1b; 3. 电量低于 50%的情况下&#xff0c;提供外接供电&#xff0c;可以对电池进行充电&#xff0c;充电时会亮红灯&#xff0c;充满后亮绿灯&#xff08;如果…

Vue3挂载全局方法及组件中如何使用

文章目录 前言一、在mian.ts&#xff08;mian.js&#xff09;中配置全局变量1、如何封装 二、如何调用1.template中调用2.在script标签中如何拿到 前言 在Vue3项目中&#xff0c;需要频繁使用某一个方法。配置到全局感觉会方便很多。 例如&#xff1a;因为很多页面都需要对时…

openEuler 22.03 LTS登录AWS Marketplace

openEuler 22.03 LTS镜像正式登录AWS Marketplace&#xff0c;目前在亚太及欧洲15个Region开放使用&#xff0c;后续将开放更多版本和区域&#xff0c;openEuler 22.03 LTS AMI(Amazon Machine Images)由openEuler社区提供支持。 点击查看具体使用指导&#xff1a;https://www…

软件高效自动化部署:华为云部署服务CodeArts Deploy

随着互联网、数字化的发展&#xff0c;公司机构与各类企业往往需要进行大量频繁的软件部署&#xff0c;部署设备类型多样&#xff0c;如&#xff1a;本地机器、云上裸金属服务器、云上虚拟机与容器等。 面对多种部署模式、分布式复杂运行环境&#xff0c;该如何用最短时间、高…

华为战略方法论:BLM模型之战略意图(限制版)

目录 前言 案例 BLM模型 专栏列表 CSDN学院 个人简介 前言 对于任何一家企业来说&#xff0c;即便你没有清晰的战略规划。 一般也都是会有战略意图的。 战略意图具体是指你主观想要达成什么样的期望或者是状态。 换句话说&#xff0c;如果没有这种期望&#xff0c;你…

记录--盘点前端实现文件下载的几种方式

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前端涉及到的文件下载还是很多应用场景的&#xff0c;那么前端文件下载有多少种方式呢&#xff1f;每种方式有什么优缺点呢&#xff1f;下面就来一一介绍。 1. 使用 a 标签下载 通过a标签的download属…

STM32 Proteus仿真空气质量检测环境监测苯PM2.5 MQ135温度湿度 -0068

STM32 Proteus仿真空气质量检测环境监测苯PM2.5 MQ135温度湿度 -0068 Proteus仿真小实验&#xff1a; STM32 Proteus仿真空气质量检测环境监测苯PM2.5 MQ135温度湿度 -0068 功能&#xff1a; 硬件组成&#xff1a;STM32F103R6单片机 LCD1602显示器DHT11温度湿度多个按键蜂鸣…

简要介绍 | 通信感知一体化:探索信息与通信技术的新边界

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对通信感知一体化技术进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 通信感知一体化&#xff1a;探索信息与通信技术的新边界 通信感知一体化&#xff08;ISAC&#xff09;&#xff1a;从入门到…