您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

微服务与 API:了解差异

时间:2022-09-24 11:29:04  来源:  作者:qaseven
" Type="normal"SectionTitle="他们中的许多人在微服务和 API 之间存在混淆。在本文中,您将对两者都有一个清晰的了解。" Type="normal"@@

 

如果您正在阅读此博客,则意味着您已经听说过以下术语: API 和微服务开发。但是很多人误解了微服务是细粒度的 Web 服务,或者 API 等同于微服务。这些都表明了基本的误解,因此我创建了这篇文章来打破这一点,并讨论微服务和 API 之间的主要 区别。如果您是其中之一,本文将帮助您了解这两个概念之间的区别。

API 和微服务都具有相同的权重。在这篇博客中,我们将分别了解 API 和微服务,它们之间的区别,以及它们在现代 Web 应用程序中的组合方式。

 

首先,让我们通过一个例子来了解什么是微服务

 

微服务是一种 软件架构 ,它将应用程序的特性和功能划分为单独的、更小的组件,称为服务。当这种方法开发应用程序时,它被称为微服务架构。

微服务由于其流畅的开发过程而成为当今的趋势。微服务架构使开发、集成和维护应用程序变得容易。最初,开发人员应该逐步构建应用程序;之后,他们可以单独处理每个元素。此过程使添加、修复或改进功能变得容易,而不会危及整个应用程序。微服务架构对大型企业最有用。

 

微服务 示例

 

众所周知,亚马逊是一个大型的在线购物中心,并且易于使用。但在 2000 年代初期,亚马逊很难提供无摩擦的服务。正如亚马逊的高级产品经理所描述的那样,亚马逊零售网站是一个庞大的架构巨石。由于所有服务在内部都是紧密连接的,因此开发人员很难修复、验证或改进功能。

使用这种 单体架构,亚马逊无法满足其不断增长的客户群的扩展需求。亚马逊将其单体架构分解为小的独立服务组件,以消除这些挑战。

亚马逊开发人员团队分析了整个应用程序的代码,并提取了提供类似服务的单元代码。他们将这些单元耦合到一个 Web 服务界面中,并为每个部分开发了一个服务,例如产品页面上的购买按钮、税收计算器、结帐按钮等。

现在,亚马逊将每个独立服务的所有权分配给了开发团队,这样团队就可以深入研究问题并修复它,而不会妨碍整个应用程序。

通过实施微服务架构,亚马逊可以获得全球增长最快公司的称号——2022 年 7 月 19 日市值达到 1.203 吨。

如果应用程序被分解为多个部分,那么这些单独的部分必须非常需要有效地进行通信;因此,微服务与 API 相关联。

 

现在,让我们看看 API 是什么以及它们的用途

 

应用 程序编程接口 (API) 是任何应用程序不可拆卸的部分。在 API 的帮助下,一个应用程序可以与其他应用程序交互。通俗地说,API 是一组协议,可确保两个不同的应用程序发送、接收和修改彼此的数据。

API 在现代应用程序开发中是必不可少的。它有助于在功能和结构上可能不同的两个不同应用程序之间进行通信。API 可帮助开发人员 访问应用程序的内部数据 或其功能,而无需了解整个应用程序的源代码。借助 API 的这一特性,应用程序、网页和其他软件可以进行通信和协同工作。

 

API 的使用

 

许多 API 很容易用于改进软件或应用程序的功能 - 称为公共 API。随着微服务架构的普及,私有 API 的创建增加。在这种情况下,API 可作为单个微服务相互交互的轻量级解决方案。让我们用一个实际的例子来理解。

API 的示例有很多,但我们将采用其中之一。假设您正在计划一次世界巡回演唱会并想预订旅行计划。您访问了一个不错的网站,但是您没有该特定网站的帐户,但它为您提供了一个 google id 选项来登录。多么方便!

由于 Google 与当前的旅游网站是不同的公司,因此 API 可以实现旅游网站和 Google 之间的交互。首先,旅游网站使用 Google 的登录 API 来请求您的联系信息。接下来,Google API 确认请求,对其进行验证,从其用户数据库中获取信息,并将其发送回网站。最后,网站使用您的联系信息来完成签名过程。

这就是 API 帮助不同软件一起通信的方式。我相信这个 API 示例将有助于理解其功能的基础知识。

 

类型 API(公共、合作伙伴、私有和复合)

 

API 被广泛接受并用于基于 Web 的应用程序中。有四种 API 类型:公共、合作伙伴、私有和复合。在规划 API 设计、实现和使用时,了解这四种类型的差异非常重要。

 

公共 API

 

拥有公共 API 的企业可以为外部开发人员、合作伙伴和企业提供对其应用程序和数据的免费和开放访问。这使这些合作伙伴能够构建新的应用程序并使用数据来使业务受益。公共 API 是一种开源软件开发接口 (SDI),它打开资源供外部开发人员、企业和组织使用。

 

私有 API

 

内部 API 通常用于连接企业内的系统和数据。这些 API 通常仅供内部使用,数据不应公开访问或与第三方开发人员共享。与公共 API 相比,这些 API 具有多项优势,包括更高级别的隐私、更少暴露于外部组织、更好的控制和更少的数据法规。

 

合作伙伴 API

 

合作伙伴 API 是一种以专用 API 的形式为其业务合作伙伴提供对组织数据的高级访问权限的方法。这些合作伙伴 API 仅适用于特定选择和授权的外部开发人员或 API 消费者,并通过正式的介绍过程建立。合作伙伴 API 的目的是促进企业对企业的活动。例如,企业希望有选择地与外部 CRM 公司共享客户数据。在这种情况下,合作伙伴 API 可以将内部 API 与合作伙伴的门户连接起来,从而创建一个安全透明的通道。

 

复合 API

 

创建一个兼顾简单性和性能的 API 非常重要。创建一个同时实现这两个目标的 API 有时可能很困难。但是,将两个或多个 API 组合在一起成为复合 API。复合 API 通常是有益的,因为拥有涵盖流程的两个或多个方面的单个 API 通常会更好,因为它可以降低复杂性并提高性能。

 

API 类别

 

API 是远程软件交互的终极方法。您可以使用它们来构建跨设备和平台无缝运行的令人惊叹的产品和服务。但是,如果您希望您的 API 成功,则需要精心设计它们。今天,有四种 API 协议或架构类别:REST、RPC、WebSocket 和 SOAP。你应该使用其中之一。

 

微服务和 API 的区别

 

在分别了解了微服务和 API 之后,让我们检查一些使它们能够相互区分的差异化因素。

微服务蜜蜂微服务是一种将大型孤岛组件分解为较小组件的方法。 API 是一种编程接口,可帮助两个或多个软件相互通信。 创建微服务很容易,并且对开发人员来说花费的时间更少。 与微服务相比,创建和维护 API 有点困难。 开发人员可以使用微服务为各个特性和功能创建不同的模块。 而 API 帮助这些单独的模块毫无困难地相互通信。 无法直接访问第三方微服务。 借助第三方 API,可以轻松访问他们的服务。 微服务通常旨在解决组织中的大而复杂的问题。 API 提供了一个可重用的接口,一个或多个应用程序可以轻松地进行通信。 在微服务中,使用其他应用程序的特性和功能是不可能的。 开发人员可以通过其 API 使用任何第三方应用程序的特性和功能。 一个微服务只有一个 API。 一个 API 可以调用不同的微服务。

 

 

 

长话短说,微服务和 API 是截然不同的概念。它们不是等价的,在 Web 应用程序中扮演着完全不同的角色。微服务架构有助于在更敏捷的框架中构建应用程序,而 API 提供连接、扩展和集成软件的基本功能。在 API 的帮助下,开发人员可以与 Web 应用程序进行交互。



Tags:微服务   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  Search: 微服务  点击:(5)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  Search: 微服务  点击:(115)  评论:(0)  加入收藏
九条微服务最佳实践,你学会了哪条?
微服务之间连贯一致的代码库对于可维护性至关重要。保持代码成熟度相似,可确保系统统一演进,防止服务间出现性能、安全性和功能差异。在开发微服务时,我们需要遵循哪些最佳实践...【详细内容】
2024-01-05  Search: 微服务  点击:(99)  评论:(0)  加入收藏
Go微服务入门到容器化实践
Go微服务入门到容器化实践Go 是一门高效、现代化、快速增长的编程语言,非常适合构建 Web 应用程序。而 Docker 是一种轻量级的容器化技术,能够使得您的应用程序在任何地方运行...【详细内容】
2024-01-01  Search: 微服务  点击:(64)  评论:(0)  加入收藏
微服务全做错了!谷歌提出新方法,成本直接降为1/9!
2023,微服务“水逆”之年。长期以来,不管大厂还是小厂,微服务都被认为是云原生服务应用程序架构的事实标准,然而2023,不止那位37signals的DHH决心下云,放弃微服务,就连亚马逊和谷歌...【详细内容】
2023-12-29  Search: 微服务  点击:(121)  评论:(0)  加入收藏
微服务架构中的数据一致性
在微服务中,一个逻辑上原子操作可以经常跨越多个微服务。即使是单片系统也可能使用多个数据库或消息传递解决方案。使用多个独立的数据存储解决方案,如果其中一个分布式流程参...【详细内容】
2023-12-27  Search: 微服务  点击:(144)  评论:(0)  加入收藏
监控 Spring Cloud 微服务的实践方案
一、简介Spring Cloud是一个基于Spring Boot实现的微服务框架,它提供了丰富的微服务功能,如分布式配置、服务注册与发现、服务熔断、负载均衡等。为了更好地管理和监控这样复...【详细内容】
2023-12-19  Search: 微服务  点击:(145)  评论:(0)  加入收藏
聊聊微服务链路服务
微服务架构图片如果有用户反馈某个页面很慢,我们知道这个页面的请求调用链是 A -----> C -----> B -----> D(图片有误),怎么来定位是由哪个服务引起的问题呢? 更进一步,如果...【详细内容】
2023-12-15  Search: 微服务  点击:(127)  评论:(0)  加入收藏
选择适合微服务的编程语言,让你的工作事半功倍!
讨论编程语言就像是一场政治辩论。每个开发者都会过分捍卫他/她所使用的编程语言。然而,编程语言应该被看作是它们真正是的东西,即一种工作工具。每种编程语言都有特定的目的...【详细内容】
2023-12-14  Search: 微服务  点击:(178)  评论:(0)  加入收藏
Eureka: 微服务架构中不可或缺的服务治理工具
Eureka是Netflix开源的一款用于服务治理的工具,它是NetflixOSS(OpenSourceSoftware)项目的一部分,主要用于实现微服务架构中的服务注册与发现。在当今庞大而复杂的微服务系统中,E...【详细内容】
2023-12-14  Search: 微服务  点击:(194)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(10)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(12)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(6)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(36)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(19)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(115)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(118)  评论:(0)  加入收藏
站内最新
站内热门
站内头条