微服务架构及工作原理!

news2024/11/27 5:28:37

在移动计算时代,应用程序开发人员应该能够快速部署操作并进行更改,而无需重新部署整个应用程序。结果,它导致了一种称为“微服务”的构建软件的新方法。 微服务是应用程序中独立的小部分,每个部分都完成自己的工作并通过API相互通信。

尽管这些微服务不同,但它们协同工作以完成工作。微服务正在成为现代应用程序架构的重要组成部分,所以让我们来谈谈什么是微服务架构、它们如何工作以及它们为何有用。

1.什么是微服务架构?

微服务也称为微服务架构。这是因为大型应用程序被称为“架构”的过程分解为更小、更易于管理的部分。因此,它为我们提供了独立工作和相互交谈的工具。

出现这种方法是因为单体架构存在需要修复的问题。由于单体是容纳应用程序所有软件部分的大容器,因此它们受到限制、不可靠、僵化,并且通常随着时间的推移而构建。

每个部分都独立设置微服务,但他们可以在必要时进行通信。因此,开发人员现在可以轻松、灵活且可扩展地创建非常复杂的软件应用程序。

2.微服务架构如何工作?

它专注于对大而笨重的应用程序进行分组。所有微服务都描述了应用程序的特定部分和功能,例如搜索数据和跟踪数据。此外,这些小型服务协同工作以制作一个应用程序。

客户端可以通过用户界面发送请求。此外,API 网关是为一个或多个帮助完成所要求任务的微服务而设计的。因此,很容易解决需要一组微服务的更重要、更复杂的问题。

微服务系统让服务的每个部分自行运行、发展、构建和部署。此服务和其他服务不共享任何代码或功能。相反,当使用清晰的 API 时,消息会从程序的一部分移动到另一部分。

基于它解决的问题,系统中的每项服务都会构建一套不同的技能。当开发人员提供更多代码时,一些服务会拆分成更小的服务。它为开发人员提供了很多解决问题的方法,即使他们还不知道这些问题是什么。

让我们来看看网上购物渠道是如何运作的。它可以考虑主应用程序的不同部分,如客户数据库、产品目录、结帐选项和支付界面。这些应用程序必须能够独立部署、构建和扩展。

如果您更改有关支付网关接口的一些内容,那将是最好的。然后,在确定需要更改的内容后,您可以将该应用程序添加到技术堆栈中。

由于每个服务都有自己的代码,您可能想知道它们将如何相互通信。API 调用可用于很好地完成这项工作。每个服务都有一个 API 端点,将其连接到其他堆栈应用程序。他们通过 HTTP 请求相互交谈。

他们还可以使用消息代理或寻找不同时发生的其他通信方法。此工具通过共享隧道从用户帐户发送消息,该隧道将消息分类到不同的组并将它们发送到其他服务。Service Mesh 是Kubernetes中越来越流行的一种新方法。

 重点是这些任务可以由其他地方的不同团队用不同的语言编写。应用程序开发人员可以从不同的技术设置、开发选项和编程语言中进行选择。内存处理引擎使用多种方法来提高速度和延迟。

微服务使用较旧的设计模式,如模块化、面向服务的架构(SOA) 和关注点分离。此外,他们制作的庞大系统对于标准的单体架构来说过于复杂,无法处理。

3.微服务的使用

下面列出了微服务的一些最重要的用途。

数据处理

使用微服务架构的应用程序可以一次处理更多的请求。这意味着微服务可以在更短的时间内处理更多的数据。结果,它让程序运行得更快更好。

媒体内容

Netflix 和 Amazon Prime Video 等公司每天处理数十亿个 API 请求。微服务架构将使用户能够访问大量媒体内容的 OTT 平台受益。

微服务将确保全球范围内对不同子域的所有请求都得到快速、正确的处理。

网站迁移

网站迁移意味着进行重大更改并重建其最重要的部分,例如其结构、域和用户界面。使用微服务可帮助您消除对业务造成损害的停机时间,并确保您的迁移计划按计划进行。

交易和发票

微服务非常适合处理许多支付和交易并发送账单的应用程序。如果应用程序不能接受付款,企业可能会损失很多钱。

微服务用于改进应用程序的事务功能,而无需更改任何其他内容。

4.微服务中使用的工具

如果您有范围广泛的工具来帮助建筑师完成基本的建筑任务,那将会有所帮助。以下是其中一些工具的列表。

01.操作系统(OS)

制作应用程序需要知道的最重要的事情之一就是它的运行方式。Linus 是一种操作系统 (OS),它为用户和开发人员提供了很大的自由度。它可以独立运行程序代码,并为大型和小型应用程序提供多种安全、存储和网络选项。

02. 编程语言

借助微服务架构,您可以针对各种应用服务专注于不同的编程语言。用于制作应用程序的工具和编程语言取决于微服务类型。

03. 管理 API 和测试它们的工具

使用微服务架构,应用程序的不同部分必须能够相互通信。应用程序编程接口用于执行此操作。为使 API 正常工作,需要对其进行管理、测试并时刻关注。

因此,在使用微服务架构制作应用程序时,用于管理 API 和测试它们的工具是必不可少的。

04. 工具包

在微服务架构中,工具包是用于开发应用程序的工具。开发人员可以从许多不同的工具包中进行选择,每个工具包都做不同的事情。Fabric8 和 Seneca 是微服务工具包的两个例子。

05. 消息工具

它让微服务相互之间以及与世界其他地方进行对话。Apache Kafka 和 Rabbit MQ 是消息传递工具,被不同的小型服务用作系统的一部分。

06. 为事情制定计划

微服务架构框架使构建应用程序变得容易。他们通常有一个代码库和工具来设置和启动应用程序。

07. 跟踪事物的工具

设置并运行微服务应用程序后,您需要对其进行监控以确保一切按计划进行。监控工具可帮助开发人员密切关注应用程序的工作方式,以便他们可以在错误和其他问题发生之前发现它们。

08. 编排工具

容器是微服务运行所需的一组代码、可执行文件、库和文件。系统可以使用具有微服务架构的容器编排来管理和优化容器。

09. 不需要服务器的工具

无服务器工具通过消除对服务器的需求,为应用程序中的不同微服务提供了更多的自由和移动性。它使弄清楚如何划分和组织应用程序任务变得更加容易。

5.微服务的例子

最好的科技公司使用微服务来简化他们的架构、加速开发、提高应用程序的响应速度并使更新更容易。

以下是市场领导者如何使用它们来改善现实世界中的业务的三个微服务示例。

让我们深入研究微服务架构的示例。

》》亚马逊

亚马逊致力于许多小事情,比如让人们下订单、登录、列出愿望清单和支付费用。每件作品都是一个完成一项工作的小型企业应用程序。

不同的业务技能用于构建微服务。每个服务都对其数据及其组织方式负责。

一个小组必须一起工作来完成一项简单的任务,微服务才能工作。亚马逊 CEO 杰夫·贝佐斯 (Jeff Bezos) 设计了“双披萨规则”来确定微服务团队的规模。两个披萨团队在亚马逊运行微服务。

团队人数不能超过两个比萨饼所能养活的人数。亚马逊正在微服务的帮助下构建和运行一个灵活的系统。

》》网飞

2007 年,Netflix 开始让人们在线租借电影。扩展和服务中断只用了一年时间就变成了大问题。2008 年,Netflix 连续三天没有向客户发送 DVD。

当他们切换到一个分散的云系统并使用 Amazon Web Services 作为他们的云提供商时,就发生了这种情况。

2009 年之后,Netflix 改变了其应用程序的构建方式,从单体架构转变为微服务架构。该过程于 2012 年完成。通过切换到微服务架构,Netflix 可以解决其扩展问题并使其服务可供全球更多人使用。

2015 年,Netflix 的 API 网关链接到云端托管的 500 多个微服务,每天处理 20 亿个 API 请求。这使得流媒体更便宜,从而帮助 Netflix 赚了更多钱。

》》优步

优步取消了其一体式结构,因为它减缓了公司的增长,就像亚马逊和 Netflix 一样。拼车平台存在无法开发和发布新功能、无法快速修复错误以及连接其快速增长的全球业务等问题。

它达到了应用程序架构如此复杂的地步,以至于即使是很小的更改和更新也需要具有丰富经验的开发人员。

优步解决了将其“单一”应用程序分解为在云中运行的“微服务”而导致的问题。不久之后,为业务任务创建了单独的微服务,例如旅行和它在管理乘客方面引起的问题。这些服务可以在 API 网关的帮助下相互通信。

使用这种微服务架构,优步解决了一些技术问题。这就是为什么:

  • 开发团队负责某些服务,这有助于使开发项目更好、更快、更容易运行。
  • 团队将注意力放在需要扩展的服务上。随着需求成倍增加,它使向应用程序添加更多用户变得容易。
  • Uber 应用程序可以更好地处理错误,并且某些服务可以在不影响应用程序其余部分的情况下进行更新。

6.微服务的特点

以下是您应该了解的微服务最重要的特性:

01.分成不同的部分

这是微服务的一个重要特征,因为该软件由微服务架构中的许多小服务组成。每个服务都可以单独构建、部署和更新,而不会影响应用程序的其余部分。

您可以更改一些服务以使其更大,而不是关闭应用程序并重新启动它。

02. 稳健且抗故障

微服务架构还有另一个功能,可以降低应用程序崩溃的可能性。每个服务都可能会失败,这会使事情停止工作。

在微服务环境中,许多不同且独特的服务相互通信以运行操作,因此在某些时候失败是不可避免的。

但是,如果基于微服务的应用程序设置正确,则不起作用的功能应该能够将流量重新路由到远离自身的位置,以便其连接的服务可以继续运行。您还可以通过密切关注微服务并在它们出现故障时尽快将它们恢复在线来快速降低中断风险。

03. 简单的路由流程

微服务是常用的部分,既可以处理数据,也可以处理逻辑。“哑线”连接这些部分并将信息从一个部分发送到另一个部分。

一些企业应用程序开发与这种简单的路由方法完全相反。例如,企业服务总线使用复杂的系统来路由消息、设置工作流和应用业务规则。

另一方面,微服务接受请求、处理它们,并将正确的响应发送回发出请求的组件。

04. 去中心化运营

微服务使用范围广泛的平台和技术。因此,从中央位置运行微服务架构的传统方式效果不佳。

通过去中心化治理,微服务可以更好地工作,因为世界各地的开发人员都在为解决运营问题制作有价值的工具。您甚至可以将这些工具提供给遇到相同问题的其他开发人员。

同样,微服务架构有利于分散数据管理,因为每个微服务应用程序都管理其数据库。另一方面,单体系统倾向于从单个逻辑数据库运行所有应用程序。

05. 为现代企业打造

微服务架构的开发是为了满足 21 世纪数字业务的需求。在传统的单体架构中,团队共同构建用户界面、技术层、数据库和服务器端逻辑等内容。

微服务是由来自不同领域的人一起工作制成的。每个团队负责制作满足其所从事服务需求的产品。消息总线是这些服务发送和接收信息的方式。

7.使用微服务的优势

开发人员和工程师可以从微服务架构中获益,这是他们无法从整体架构中获益的方式。以下是使用微服务的一些突出优势。

敏捷

微服务用于更容易修复错误和添加新功能。您可以在不重新组织整个应用程序的情况下更新服务,如果出现问题,您可以回滚更新。在许多较旧的应用程序中,发现一个部分的错误可能会停止将应用程序投放市场的整个过程。在添加、测试和公布错误修复时,新功能将被搁置。

小而专注的团队

微服务应该足够小,以便单个团队可以构建、测试和使用它。较小的群体可以比较大的群体移动得更快。大型团队通常效率较低,因为他们彼此交谈需要更长的时间,运行它们需要更多的工作,而且他们不能快速行动。

更少的开发工作

为了使程序更好地运行,较小的团队可以同时处理程序的不同部分。它使查找最受欢迎的服务、在不影响应用程序其余部分的情况下发展它们以及改进应用程序变得更加容易。

小型代码库

单件应用程序的代码依赖性往往会随着时间的推移而变得混乱。代码必须在许多地方更改才能添加新功能。

微服务架构减少了依赖项的数量,因为它不共享数据和代码。它使添加新功能更容易。

多项技术

在“技术栈”的帮助下,团队可以找出最适合他们服务的技术。

误隔离

如果微服务出现故障,只要其他微服务在它之前处理错误,整个应用程序就不会受到影响。例如,您可以使用断路器模式或设计您的解决方案。因此,微服务使用异步消息传递配置相互通信。

可扩展性

服务可以独立增长,因此您可以为需要它们的子系统提供更多资源,而无需为整个应用程序提供更多资源。您可以使用 Service Fabric 或 Kubernetes 等编排器在单个主机上运行更多服务。

数据隔离

模式更改现在更容易进行,因为它们只影响一个微服务。如果单体应用程序的不同部分显示相同的信息,则可能很难更新架构。这使得更改架构存在风险。

灵活性

由于每个服务独立工作,每个微服务可以使用不同的编程语言。但是最好尽可能不要使用一种以上的现代编程语言。

更快的部署

大多数开发人员不仅更容易理解微服务,而且设置它们所需的时间也更少。如果你只改变整体结构代码中的一件事,它就会改变一切。您可以使用微服务,因此无需更改其他服务的工作方式。

独立部署

在应用程序中,每个微服务都必须是一个完整的堆栈。它为微服务提供了随时增长的自由。微服务很小,因此开发团队可以处理单个微服务,修复任何错误,然后重新部署它,而无需重新部署整个应用程序。

因为微服务架构是灵活的,你不需要国会通过法律来添加或更改一行代码或者添加或删除功能。该软件承诺通过使业务结构更加稳定和分离问题来改善业务结构。

8.结论

借助微服务架构,开发人员可以解决过去单件解决方案难以解决的几个重大问题。但是太多的开发和太多的时间花在保护上本身就是问题。

因此,微服务架构需要一个可观察性平台。借助可观察性,工程师和开发人员可以获得微服务的灵活性和可重构性。

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

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

相关文章

Dubbo学习笔记

目录 简介 Dubbo高可用 集群容错 服务治理 Dubbo线程IO模型 源码层面 Java SPI 的问题 源码解析 简介 Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。 Dubbo提供了…

主流总线通信和系统接口技术

一、关于现场控制总线 现场总线是自动控制领域的计算机局域网,应用在生产现场,在微机测控设备之间实现双向、串行、多节点数字通信,是一种开放式、数字化、多点通信的底层控制网络。 现场总线具有较高的测控能力指数 得益于仪表的微机化&am…

C++实现闭散列/开放定址法

前言 哈希冲突是无法避免的,只能尽可能的减少冲突的可能性,通常我们可以设计适合的哈希函数。但是,哈希冲突还是会发生,那我们如何解决呢? 我们可以使用闭散列/开放定址法的方法,解决哈希冲突 文章目录 前…

世界超高清大会发布重大技术成果:博冠自主创新推动8K摄像机攻关

一、世界超高清大会背景介绍: 近日,由工业和信息化部、国家广播电视总局、中央广播电视总台、广东省人民政府主办的2023世界超高清视频产业发展大会在广州越秀国际会议展览中心盛大召开。自2018年创办以来,大会已成功举办四届,成…

第08讲:搭建 SkyWalking 源码环境,开启征途

搭建 SkyWalking 源码环境 下载 SkyWalking 源码 执行 git clone 命令从 GitHub下载 SkyWalking 源码,如下所示 : git clone gitgithub.com:apache/skywalking.git 切换分支 等待 clone 完成之后,我们通过命令行窗口进入 SkyWalking 源码根…

SSM 三大框架原理、核心技术,运行流程讲解

作者:arrows 来源:https://www.cnblogs.com/arrows/p/10537733.html 一、Spring部分 1、 Spring的运行流程 第一步:加载配置文件ApplicationContext ac new ClassPathXmlApplicationContext(“beans.xml”); ,ApplicationContext接口,它由…

存储卡目录变成未知文件?这些技巧能让你恢复数据!

当存储卡的目录变成未知文件时,我们无法直接访问存储卡中的数据。但是,这并不意味着这些数据永远无法恢复。以下是几种可能恢复存储卡数据的方法: 使用数据恢复软件。从互联网上下载并安装专业的数据恢复软件这些软件可以扫描存储卡&#xf…

分布式接口幂等性设计实现

面对分布式架构和微服务复杂的系统架构和网络超时服务器异常等带来的系统稳定性问题,分布式接口的幂等性设计显得尤为重要。本文简要介绍了几种分布式接口幂等性设计实现,包括Token去重机制、乐观锁机制、数据库主键和状态机实现等,以加深理解…

面板安全增强,网站支持反向代理设置,1Panel开源面板v1.2.0发布

2023年5月15日,现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.2.0版本。 在这一版本中,1Panel着重增强了安全方面的功能,包括安全入口访问、面板SSL设置、网站密码访问等,同时网站新增支持反向代理设置,并带…

JVM学习(三)

1. JAVA 四中引用类型 1.1. 强引用 在 Java 中最常见的就是强引用, 把一个对象赋给一个引用变量,这个引用变量就是一个强引 用。当一个对象被强引用变量引用时 ,它处于可达状态,它是不可能被垃圾回收机制回收的,即…

Java阶段二Day21

Java阶段二Day21 文章目录 Java阶段二Day21整合Lombok基础组件1 Lombok简介2 安装和配置 Lombok3 Lombok 注解及其用法3.1 Getter 和 Setter3.2 ToString3.3 AllArgsConstructor 和 NoArgsConstructor3.4 Data 4. 总结5 微博项目优化 Knife4j1 Knife4j的优点2 Knife4j快速上手2…

使用Docker构建的MySQL主从架构:高可用性数据库解决方案

前言 MySQL主从架构,我们已经在vmware虚拟机上实践过了,接下来我们一起探讨在docker中如何使用MySQL主从架构。 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,阿里云社…

《论文阅读》基于提示的知识生成解决对话情感推理难题

《论文阅读》基于提示的知识生成解决对话情感推理难题 前言摘要作者新观点问题定义模型框架Global ModelLocal ModelPrompt Based Knowledge Generation分类器实验结果问题前言 你是否也对于理解论文存在困惑? 你是否也像我之前搜索论文解读,得到只是中文翻译的解读后感到失…

openEuler 成功适配 LeapFive InFive Poros 开发板

近日,openEuler RISC-V 23.03 创新版本在跃昉科技的 Poros 开发板上成功运行。 openEuler 在 Poros 上适配成功,XFCE 桌面启动正常,文件系统、终端模拟器和输入法等相关 GUI 应用也运行流畅,Chromium 浏览器和 LibreOffice 等应用…

【Pm4py第三讲】关于Output

本节用于介绍pm4py中的输出函数,包括日志输出、模型输出、面向对象日志输出等。 1.函数概述 本次主要介绍Pm4py中一些常见的输入函数,总览如下表: 函数名说明write_bpmn()用于写入bpmn模型write_dfg()用于写入dfg模型write_pnml() 用于写入p…

面试之高手回答

1.int与Integer的区别 int与Integer的区别有很多,我简单罗列三个方面 第一个作为成员变量来说Integer的初始值是null,int的初始值是0; 第二个Integer存储在堆内存,int类型是在直接存储在栈空间; 第三个integer是个对象…

项目管理6大避坑技巧

1、拒绝错位战略目标 明确目标方向 做项目,首先需要明确项目目标。项目中有很多目标都很重要,但只有一两个目标是最重要的。在任何时刻,我们主要精力都应该集中在一到两个最重要的目标上。 一般最重要的目标具有以下特点:能够给组…

CSS--空间转换及动画

01-空间转换 空间转换简介 空间:是从坐标轴角度定义的 X 、Y 和 Z 三条坐标轴构成了一个立体空间,Z 轴位置与视线方向相同。空间转换也叫 3D转换属性:transform 平移 transform: translate3d(x, y, z); transform: translateX(); transfor…

能源硕士为何受热捧?社科院与杜兰大学能源管理硕士项目为你解惑

能源行业可谓是全球最具发展前景的行业之一,能源管理硕士更是近几年被争相推荐的“大热门”。广泛的就业选择、较高且稳定的收入,是该专业的特点之一,毕业后可选择在政府相关机构、能源监管部门、全国节能减排领域的各类研究机构工作&#xf…

Linux学习 Day3

目录 1. 时间相关的指令 2. cal指令 3. find指令:(灰常重要) -name 4. grep指令 5. zip/unzip指令 6. tar指令(重要):打包/解包,不打开它,直接看内容 7. bc指令 8. uname –…