微服务、SOA 和 API 之间的区别

在软件开发中,组织的投资方式发生了重大转变,部署了面向架构的方法。这一切都始于 SOA,然后转变为我们称之为微服务的东西。添加到其中的是另一个概念,指定为 API。

在过去的几年里,SOA 和微服务仍然是讨论的话题。随着时间的推移,组织感到需要转变其工作流程并为其软件系统采用微服务。

首先,我们分别定义它们并找出差异所在。

您可能还喜欢: 微服务与 SOA:有什么区别?
微服务、SOA、API

不同的应用程序架构。
API 或应用程序编程接口
API 或应用程序编程接口是开发人员用于启动客户端和服务器之间通信的轻量级协议。API 的目的就是增加透明度,同时允许多个产品或服务相互交互。

最新的 DZone 参考卡

NoSQL 迁移要点


通过在 API 的帮助下添加不同的应用程序,可以轻松升级现有基础设施。当组织需要迁移到云或将其现有应用程序转移到云时,API 可以扩展支持。鉴于 API 的易用性,它可以帮助企业与 IT 团队协作,以便与云原生应用程序集成。这就是微服务概念出现的地方。

大多数云驱动的操作都基于微服务,并且它们使用 API 来连接到微服务。

根据 WSO2,API 现在占互联网流量的 25%。

当开发人员寻求将组织生态系统与云驱动的应用程序连接起来时,API 是最方便的方法之一。

API 的显着特征
概述确定两方连接方式的协议。
允许开发人员通过集成第三方服务来提高开发应用程序的生产力。
允许微服务与其他服务进行通信。
在当今的互联世界中,信息通过 API 共享给外部和内部团队,安全性是首要问题。API 提供对安全标准和安全需求的遵守。
SOA 或面向服务的架构
SOA 是一种面向企业的架构形式。它被视为软件开发的一种形式,其中应用程序的不同模块借助特定于网络的通信协议向另一个模块提供服务。现在,通信可以是任何内容,从传递单个参数到请求一条信息或协作多个服务。

SOA 主要强调由每个组件在独立环境中执行的单独功能的开发。它可以是验证付款或允许第三方登录等任何内容。

SOA架构图

SOA 架构元素
显然,面向服务的架构并不是模块化应用程序,而是连接或组合不同的服务来构建应用程序。简单来说,面向服务的架构更多的是提供服务,而不考虑事实和方式。

您也可以将它们视为微服务的简化版本。它们是松散耦合的,并使用企业总线消息传递协议来启动两个服务之间的通信。

根据 Gartner 的数据:

“SOA 减少了冗余并提高了可用性、可维护性和价值。这产生了更易于使用和维护的可互操作的模块化系统。SOA 创建更简单、更快的系统,从而提高敏捷性并降低总体拥有成本 (TCO)。”
随着时间的推移,精心设计的 SOA 会提高敏捷性。

SOA 的显着特征
SOA 是整体应用程序的粗粒度形式。
SOA 使用 IP 网络与不同的服务进行通信和连接。
SOA 支持多种消息协议,例如 AMQP、MSMQ 和 SOAP。
微服务
微服务作为一个通用术语,是一种软件开发方法,专注于开发模块或较小的应用程序块。稍后,这些可以在任何应用程序中独立部署,并在 API 的帮助下进行通信。与面向服务的架构(使用企业级消息传递协议,特别是 IP)不同,微服务诱导 API 与不同的模块连接。

马丁·福勒名言

换句话说,微服务允许开发人员创建更小的服务,然后将每个服务组合起来作为单个应用程序紧密地工作。将整个应用程序开发为一个独立的概念显得非常繁琐,而微服务减轻了开发人员的任务,使他们能够独立地处理单独的模块,然后集成所有服务以形成应用程序。

每个模块或构建的服务都能够运行自己的进程。这些服务可以与使用轻量级协议(称为 API)的任何其他服务集成。正是这些 API 使两个微服务能够相互通信。

例如,假设您有一个医疗保健门户,并且想要添加一个身份验证页面。您可以做的是创建一个专门用于身份验证的独特应用程序,然后使用任何类型的通信协议将其集成到现有基础设施中。

微服务架构图

微服务架构
微服务的显着特征
微服务消除了集中治理的概念。
允许开发人员构建可以独立运行的较小模块。
允许团队分别处理不同的服务,然后根据需要重新组合它们。
微服务是颗粒化的 SOA。
微服务通常部署在容器中。
当我们将这三者放在一起考虑时,我们知道 API 是开发人员用来启动两个服务或应用程序之间的通信的协议或标准。

兰迪·赫夫纳名言

主要区别 — SOA 与微服务
SOA 是服务驱动的,重点是最大限度地提高服务的可重用性。相反,微服务遵循分散式方法,其中整个应用程序在单独的组件中解耦,每个组件都可以在独立环境中单独使用。
SOA 利用企业总线消息传递协议来促进两个干预方之间的通信,而微服务则领先一步,使用 API 在两个组件之间进行通信。
SOA 旨在增强应用程序的可重用性,遵循尽可能多的共享方法。虽然微服务也可以重用,但它促进了解耦组件来构建不同的应用程序,遵循尽可能少的共享方法。
对于 SOA,应用程序中的任何更改或修改都需要更新整个整体。但对于部署微服务的组织来说,新功能需要新的服务集成。
SOA 使用多种消息传递协议,而微服务更倾向于安全方面,因此嵌入 API、https 等轻量级协议。
共享相同数据存储的服务容易遭受数据泄露。另一方面,微服务为每个应用程序部署独立的数据库,保持所存储信息的完整性。此外,这还有助于提高性能和规模。
SOA 提倡共享多个组件,这会导致数据依赖性的产生。微服务将每个组件耦合成一个独立的单元。这加快或提高了使用微服务构建的系统的速度。当然,这对于投资 SOA 的组织来说是一个很大的缺点。反过来,微服务具有更好的上市时间优势。
微服务是更小的组件,每个组件都旨在实现单一目的。SOA 的规模更大,并且涉及的组件满足多种功能。微服务是更小的组件,使其更易于维护。

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

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

相关文章

【红外双目有监督】CATS系列数据集探索加载器

论文: CATS: A Color and Thermal Stereo Benchmark https://www. flir.com/oem/adas/adas-dataset-form/.Flir thermal dataset 数据集规格 内容 总共 26,442 个 完全注释的帧,以及 15 个不同对象类别的520,000 个 边界框注释。 图片 9,711 张热图像和…

Lazysysadmin靶机

信息收集 主机发现 nmap -sn 192.168.88.0/24 //-sn:制作主机发现,不做端口扫描;扫描结果包含本机IP 端口扫描 nmap --min-rate 10000 -p- 192.168.88.136 扫描端口详细信息 端口扫描发现,该主机的22、80、139、445、3306、…

软件开源快速开发框架:降本增效,助力流程化办公!

随着时代的进步和社会的发展,应用软件开源快速开发框架的优势特点,可以让不少客户朋友顺利实现流程化办公,朝着数字化方向迈进。流辰信息是专业研发低代码技术平台的服务商,一直在低代码平台领域深耕细作,努力钻研&…

合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组…

【spring data jpa】数据的增删改查(CRUD)

一、添加依赖 在pom文件中添加spring data jpa依赖 <dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId><version>3.1.4</version> </dependency> <dependency><gr…

如何使用 arrayList.removeAll(Collection<?> c)?

引言 对于 Collection 集合及其实现类都有 removeAll(Collection<?> c)。 对于ArrayList 的实例对象&#xff0c;在数据比较多的情况下&#xff0c;方法 removeAll() 的传参 c 的类型是 HashSet会比是 ArrayList 的情况快的多。 原因 我们来细看一下ArrayList类的re…

perf性能分析

安装 apt install linux-tools-common linux-tools-generic 可能安装在/usr/bin/perf&#xff0c;如果版本不对&#xff0c;可以看看 /usr/lib/linux-tools/[version]/ 下有没有perf&#xff0c;如果有的话替换一下就可以 使用 perf record -g -p pid # 记录数据&#x…

C++桶排序算法的应用:存在重复元素 III

题目 给你一个整数数组 nums 和两个整数 indexDiff 和 valueDiff 。 找出满足下述条件的下标对 (i, j)&#xff1a; i ! j, abs(i - j) < indexDiff abs(nums[i] - nums[j]) < valueDiff 如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例…

城市广告牌安全传感器特点有哪些?

城市广告牌安全传感器特点有哪些&#xff1f; 在现代快节奏的都市生活中&#xff0c;城市的广告牌成为不可或缺的一部分&#xff0c;以各种形式和大小存在于城市的街头巷尾&#xff0c;商业中心和交通要道。广告牌是城市生命线组成的一部分。但是由于天气因素、材料老化、不当维…

MySQL [基础]] 学习笔记

MySQL 学习 文章目录 MySQL 学习1. 数据库三层结构2. 数据在数据库中的存储方式3. SQL 语句分类3.1 备份恢复数据库的表 4. Mysql 常用数据类型(列类型)4.1 数值型(整数)的基本使用4.2 数值型(bit)的使用4.3 数值型(小数)的基本使用4.4 字符串的基本使用(面试题)4.5 字符串使用…

【JUC】JMM

文章目录 1. 概述2. 三大特性2.1 可见性2.2 原子性2.3 有序性 3. 多线程对变量的读写过程4. 先行发生原则(happens-before) 1. 概述 CPU的运行并不是直接操作内存而是先把内存里边的数据读到缓存&#xff0c;而内存的读和写操作的时候就会造成不一致的问题 JVM规范中试图定义…

【软件测试】Requests库中处理cookie的几种方式

前言 发送请求时经常需要利用请求头中的cookie字段来做用户访问状态的保持&#xff0c;关于的cookie的处理常见有下面一些处理方式&#xff0c;这里做个小小的总结 1.直接在请求中传递cookies参数 import requestshost http://119.91.144.93:82 api r/ecshop/user.php url…

机器人命令表设计

演算命令 CLEAR 将数据 1 上被指定的编号以后的变数的内容&#xff0c;以及数据 2 上仅被指定的个数都清除至 0。 INC 在被指定的变数内容上加上 1。 DEC 在被指定的变数内容上减掉 1。 SET 在数据 1 上设定数据 2。 ADD 将数据 1 和数据 2 相加&#xff0c;得出的结果保存在数…

DataPath实现渐变效果

Android的vector矢量图很好用&#xff0c;可以画出保证清晰度的任意图形。但是Android Nougat之前的VectorDrawable不支持渐变色&#xff0c;如果要使用渐变色就要使用png图片或者自定义GradientDrawable。这么明显的不足&#xff0c;肯定是要修补上呀&#xff0c;API 24中的Ve…

Apache Spark 中的 RDD是什么

目录 RDD容错性 RDD进行迭代计算 RDD是Resilient Distributed Dataset的缩写&#xff0c;是Apache Spark中的一个关键概念。RDD是一种分布式的内存抽象&#xff0c;用于将数据划分为不同的片段以进行并行计算。RDD是一个只读的数据集&#xff0c;可以分布在集群的不同节点上&…

五、RocketMQ发送顺序消息

顺序消息的应用场景 在有序事件处理、撮合交易、数据实时增量同步等场景下&#xff0c;异构系统间需要维持强一致的状态同步&#xff0c;上游的事件变更需要按照顺序传递到下游进行处理。 例如需要保证一个订单的生成、付款和发货&#xff0c;这三件事情是被顺序执行的。 如…

软件工程第六周

软件体系结构概述 体系结构&#xff1a;一种思想&#xff0c;而框架就是思想的实现&#xff0c;设计模式就是根据某一特殊问题实现的框架。 体系结构&#xff1a;体系结构是软件系统的高级结构。它定义了系统的主要组成部分&#xff0c;以及这些部分之间的关系和交互方式。 框…

springboot自动配置原理面试题(自用)

springboot自动装配主要是基于注解编程和约定大于配置的思想设计 核心步骤&#xff1a; 1 组件必须包含configuration并声明为bean注解返回注入到IOC容器中 2 第三方jar包&#xff0c;根据/meta-inf/目录下增加spring.factories文件加载配置文件中的内容 3 springboot获取到…

NSSCTF做题(9)

[GDOUCTF 2023]<ez_ze> 看见输入框而且有提示说是ssti注入 输入{{7*7}} 试试&#xff0c;发现报错 输入{%%}发现了是jinja2模板 找到关键函数 Python SSTI利用jinja过滤器进行Bypass ph0ebuss Blog 原理见这篇文章&#xff0c;这里直接给出payload {%set ninedict(aaa…

3.1 SQL概述

思维导图&#xff1a; 前言&#xff1a; 前言笔记&#xff1a;第3章 关系数据库标准语言SQL - **SQL的定义**&#xff1a; - 关系数据库的标准和通用语言。 - 功能强大&#xff0c;不仅限于查询。 - 功能覆盖&#xff1a;数据库模式创建、数据插入/修改、数据库安全性与…