返回顶部
首页 > 资讯 > 前端开发 > html >如何理解微服务
  • 669
分享到

如何理解微服务

2024-04-02 19:04:59 669人浏览 安东尼
摘要

这篇文章主要讲解了“如何理解微服务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解微服务”吧!前言当组织开始构建更复杂的应用程序时,编写单体应用程序的

这篇文章主要讲解了“如何理解微服务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解微服务”吧!

前言

当组织开始构建更复杂的应用程序时,编写单体应用程序的做法变得越来越成问题,微服务就应运而生。

传统上,应用程序是作为单体构建的,所有代码都集中在一个大的代码库中。由于没有明确区分不同功能,因此更新应用程序的一部分时,可能会无意中影响到完全不相关的功能。即使进行简单的更改,你也必须重新部署整个应用程序,如果出现问题,则所有内容都会受到影响,而不仅仅是要被更新或扩展的组件。

针对这个问题,我们可以通过将单体架构拆分成模块(半独立组件)来解决,尽管它可能比实现微服务简单得多,但它从未真正流行起来。

面向服务的体系结构(SOA)吸引了很多人,但很大程度上失败了,主要是因为它留下了许多未解决的问题,例如如何正确拆分服务。基于微服务的体系结构是一种更具说明性的SOA类型,它源于现实世界的用例,并已被众多组织成功采用。

微服务只不过是一种模块化架构,不同模块间通过网络进行通信。

什么是微服务?

微服务是小型的自治应用程序组件,它们一起构成一个应用程序。他们从SOA继承了基本的操作模型,但是以一种更具说明性的方式对其进行了扩展。微服务通常被认为是一个独立部分,由一个团队维护。

微服务为什么重要?由上文可知,要更新应用程序,我们可以独立更新和部署微服务,而不必重新部署整个应用程序。它们还允许单个微服务团队完全专注于单个业务流程,而无需了解整个应用程序。

为此,微服务具有以下属性:

  • 松耦合:每个服务都是自治的,只能松散地连接到系统的其余部分。这意味着它具有自己的生命周期,并且可以独立部署,更新,扩展和删除。

  • 高内聚性:具有相关行为的代码组合在一起。通过将所有相关行为分组在一起,工程师仅在需要更改特定行为时才在一个地方更新代码。

  • 信息隐藏:每个微服务仅共享其他服务所需的数据,并仅隐藏与其自己的流程相关的数据。数据共享可能会无意间导致耦合,因此应始终谨慎。

为了充当一个有凝聚力的应用程序,所有这些不同的自治服务都通过网络接口进行通信。这为大量通信带来了新的挑战。顺便说一下,这就是服务网格发挥作用的地方。

现在我们知道什么是微服务,让我们探究组织为什么采用微服务。

微服务的好处

无论是通过使服务与团队保持一致来解决“开发人员问题”,还是降低采用新技术的风险,或是减轻部署的复杂度和提高可伸缩性,采用微服务都会带来很多好处。让我们仔细看看:

  • 自治团队:微服务允许小型团队完全拥有服务的整个生命周期。这样可以提高责任心,代码质量和工作满意度。对于大多数大型组织而言,这种“人员分配”是采用微服务方法的主要原因之一。

  • 技术的异构性:开发人员理论上可以使用不同的语言和不同的技术来构建每个服务。这使开发人员能够为该特定服务选择最佳技术,而不是采用更为传统的标准化,一刀切的方法。

  • 降低采用新技术的风险:开发人员还可以在低风险服务中试验新技术,因为知道出了点问题,不会影响系统的其余部分。由于风险是采用新技术的最大障碍,因此这是一个巨大的优势。

  • 弹性:当组件发生故障时,它不一定会影响到系统的其他部分。但请注意,应用程序仅在其体系结构允许的范围内具有弹性。如果没有良好的代码惯例(例如跟踪,可观察性和熔断机智),那么小故障仍然可以在复杂的系统中级联。

  • 可扩展性:要扩展任何一项功能,你只需扩展该微服务,而不是扩展整个单体应用程序即可。

  • 易于部署:如果更新一行代码,只需更新和重新部署该特定的微服务,而不是重新部署整个单体应用程序。相反,回滚服务比回滚整个应用程序容易得多。Dockerkubernetes之类的工具已大大降低了部署和回滚的成本。

  • 可替换性:替换应用程序中的微服务比替换单体应用中的组件要容易得多。

微服务的最佳实践

如上所述,SOA实现之所以困难,原因之一是它们缺乏定义服务边界的指导。让我们看看微服务如何解决这个问题。

定义服务边界

每个微服务都具有围绕业务域建模的特定功能,业务域解决了特定的业务问题。例如,使用Gmail,其业务领域包括使世界各地的人们能够通过电子邮件进行通信的所有功能。

业务域由多个有限上下文组成:与同一应用行为相关的代码。Gmail具有多种功能,包括文本编辑,发送和接收,存档,搜索等,所有这些功能都可能形成这样的上下文。

但请注意,相关行为不一定与功能一一对应。

高度自治

解耦系统就是要能够独立更改系统的各个部分而不会影响系统的其他部分。

服务间彼此了解越少,它们就越自治。更大的自主权带来更大的弹性。理想情况下,如果一项服务崩溃,则其他服务仍将能够提供该应用程序的降级版本。

虽然解耦系统是最终目标,但并非总是能够实现100%解耦。

网络通讯

微服务通过其应用程序编程接口(api)在网络上进行通信。要发送和接收消息,他们必须就网络通信规则达成一致。你可能熟悉Http,还有更多这样的协议。

根据网络通讯的方式,可以将它们大致分为同步或异步通信。

• 同步模式:客户端请求需要服务端即时响应,甚至可能由于等待而阻塞。

• 异步模式:客户端请求不会阻塞进程,服务端的响应可以是非即时的

同步有点像座机。建立连接并交换信息,并且在连接时无法接听其他电话。此类通信通常与请求/响应消息一起使用,其中一个服务发送请求并等待另一服务响应。等待时,两个服务都被阻止。可以想象,这仅在连接速度很快的情况下才可行。

异步通信更像电子邮件。你向某人发送电子邮件,通常可以继续其他工作。收到回复后,你将再次参与。这就是异步通信的本质:服务发送一条消息,并继续执行它的所有操作,直到收到响应为止。当网络不可靠或物理距离较远时,通常使用这种通信方式。它通常与发布-订阅(或pub-sub)模式一起使用,在该模式中,一项服务将发布事件,而订阅该事件的人将得到通知。

采用那种网络通讯方式,要根据实际的业务场景而定。

什么时候应该使用微服务?

开发和维护微服务比处理单体应用要耗费大量精力。我们已经看到微服务具有许多强大的优势,但这是否总是最好的方法?不,开发者应该首选单体,除非他们有令人信服的理由不得不这样做。

根据经验,小型团队的小型应用程序最好采用单体架构,而由多个团队同时开发维护的大型应用程序最好采用微服务方法。组织应该从单体应用程序开始,当在需要伸缩性,性能或弹性优势时,可以将其细分为微服务。何时需要拆分,将在很大程度上取决于你的用例。没有灵丹妙药,你必须在仔细考虑后做出决定。

你可以尽早做的是保持一个干净且模块化良好的代码库。当你开始运行和扩展应用程序时,这将使构建和扩展变得更容易,并且当你将单体应用细分为微服务时,它将减少你的成本和工作量。

结合容器和Kubernetes

如何理解微服务

如上图所述,每个微服务都放置在一个容器中,这是一种新颖的包装机制,其概念类似于超轻量级虚拟机(VM),有助于将微服务分隔开(请注意,尽管容器在概念上类似于VM,但它们并未提供相同的隔离性或安全性保证)。尽管微服务早于容器,但容器使微服务更加简单和更具成本效益。

Kubernetes管理你的容器化服务,以确保它们具有足够的资源并且可以正常运行。它充当容器的某种数据中心操作系统

简而言之,微服务包含业务逻辑,该代码提供业务价值。容器帮助打包微服务,以便它们与系统的其余部分分离。容器和Kubernetes简化了微服务的打包和管理,并且是微服务如此流行的原因之一。

结论

尽管微服务提供了比单体架构更大的灵活性并提供了令人难以置信的强大功能,但这些好处是以牺牲复杂性为代价的。组织必须仔细考虑采用微服务方法是否适合他们。

在微服务中,你越来越会听到很多有关容器和Kubernetes的信息。这是因为它们是重要的技术创新,可为微服务提供巨大价值。如今,大多数使用微服务的组织都会采用容器和Kubernetes来管理它。

感谢各位的阅读,以上就是“如何理解微服务”的内容了,经过本文的学习后,相信大家对如何理解微服务这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何理解微服务

本文链接: https://lsjlt.com/news/83453.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解微服务
    这篇文章主要讲解了“如何理解微服务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解微服务”吧!前言当组织开始构建更复杂的应用程序时,编写单体应用程序的...
    99+
    2024-04-02
  • 如何理解微服务与DevOps
    本篇内容介绍了“如何理解微服务与DevOps”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!微服务与DevO...
    99+
    2024-04-02
  • 如何理解微服务架构
    因为Martin Fowler和Chris Richardson两位大神的布道,及NetFlix和Amazon公司的实践,国内对于微服务的一些基础问题理解基本一致,但受限于自身单体应用的限制,过度到微服务架构,又要各想办法,具体问...
    99+
    2023-06-05
  • 如何理解Spring Cloud微服务架构
    这篇文章主要讲解了“如何理解Spring Cloud微服务架构”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解Spring Cloud微服务架构”吧!...
    99+
    2024-04-02
  • 大神告诉你如何理解微服务框架
    因为Martin Fowler和Chris Richardson两位大神的布道,及NetFlix和Amazon公司的实践,国内对于微服务的一些基础问题理解基本一致,但受限于自身单体应用的限制,过度到微服务架构,又要各想办法,具体问...
    99+
    2023-06-03
  • 如何理解Spring Cloud和Docker的微服务架构
    如何理解Spring Cloud和Docker的微服务架构,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  Spring Cloud和Docker的微服务架构  功能服务 ...
    99+
    2023-06-04
  • 如何玩转微服务
    如何玩转微服务,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在微服务流行之前,SOA(Service Oriented Architecture)被广泛熟知与采...
    99+
    2023-06-02
  • 微服务架构如何解决应用状态的管理问题?
    随着应用的不断发展和扩展,应用状态管理问题也变得越来越复杂和困难。传统的单一应用架构难以应对多个模块和组件的管理问题,而微服务架构则为解决这些问题提供了有效的解决方案。微服务架构是一种基于一些小型服务的架构,这些服务都可以独立运行并进行相互...
    99+
    2023-05-18
    微服务架构 应用状态 管理问题
  • 深入理解DevOps+微服务框架
    单体架构 单体架构是什么 在搞懂DevOps和微服务之前,需要先搞懂什么是单体应用/单体架构。简单来说,就跟在校的一些小项目一样,项目的Demo写好了,找一台服务器安装环境,然后把j...
    99+
    2024-04-02
  • 怎么理解Java微服务框架
    本篇内容主要讲解“怎么理解Java微服务框架”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Java微服务框架”吧!  1、微服务哪些框架  1)Dubbo,是阿里巴巴服务化治理的核心框架...
    99+
    2023-06-02
  • 微服务架构中如何进行服务的版本管理?
    随着现代化软件架构的发展,微服务架构已成为了许多企业选择的开发方式。它具有高可扩展性、高弹性和高可靠性等优点,因此越来越多的企业开始采用微服务架构来构建他们的应用程序。那么在微服务架构中,如何进行服务的版本管理呢?在本文中,我们将完成如下三...
    99+
    2023-05-16
    微服务架构 服务版本管理 API Gateway
  • 微服务架构中如何处理服务的生命周期和管理?
    随着互联网和移动互联网的快速发展,软件开发变得越来越复杂,而微服务架构已成为当今软件开发的主流趋势之一。微服务架构是一种将大型应用程序划分为多个小型服务的方法。每个服务都具有特定的业务功能,并且可以独立地进行开发、测试和部署。在这种架构中,...
    99+
    2023-05-17
    微服务 生命周期 管理。
  • 微服务架构中如何处理服务的故障处理和恢复?
    随着互联网和云计算技术的飞速发展,越来越多的企业开始采用微服务架构来构建分布式系统,以实现更高的可伸缩性、可扩展性和可靠性。但是,微服务架构中服务的故障处理和恢复也是一个重大挑战,因为微服务架构中的服务是高度分布式和松散耦合的。因此,了解微...
    99+
    2023-05-17
    恢复 微服务架构 故障处理
  • 阿里架构师:带你快速理解微服务架构,理解微服务架构的核心
    什么是微服务首先微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应用,来理解什么是微服务。传统的WEB应用核心分为业务逻辑、适配器以及API或通过UI访问的WEB界面。业务逻辑定义业务流程、业务规则以及领域...
    99+
    2023-06-04
  • 微服务架构中如何处理服务的服务挂起和超时?
    随着信息技术的快速发展,越来越多的应用程序转向微服务架构。微服务架构有许多好处,包括容易扩展、灵活性高、可观测性好等等。然而,在微服务架构中处理服务挂起和超时仍然是一个复杂而又重要的问题。每个微服务可能会有上百个服务调用,每个服务调用都可能...
    99+
    2023-05-16
    微服务 服务挂起 超时处理。
  • 如何理解JavaScript 事件循环中的微任务Microtask
    如何理解JavaScript 事件循环中的微任务Microtask,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。微任务(Microtask)P...
    99+
    2024-04-02
  • 微服务架构中如何处理服务的追踪和诊断?
    随着云计算以及容器技术的不断普及,微服务架构作为一种新型的软件架构方式也引起了广泛的关注。相比传统的单体应用架构,微服务架构具有更好的可拓展性和可维护性,并且能够更好地适应快速变化的需求。然而,随着微服务数量的增多和复杂度的增加,问题的排查...
    99+
    2023-05-17
    微服务 服务追踪 服务诊断
  • 微服务架构中如何处理服务的多版本问题?
    随着互联网技术的快速发展,微服务架构的应用越来越广泛。微服务架构具有高灵活性、高可扩展性和高可靠性等优点,使得其在企业级应用中得到了广泛应用。但是,随着服务的不断迭代升级,服务的版本也在不断地增多。因此,如何在微服务架构中处理服务的多版本问...
    99+
    2023-05-16
    微服务架构 多版本问题 服务处理
  • 微服务架构中如何进行服务的部署和管理?
    随着云计算、容器技术和DevOps的快速发展,微服务架构正变得越来越流行。与传统的单块应用相比,微服务架构可以将应用程序划分为小型且自治的服务,以便更好地达到可伸缩性和灵活性。在同步开发、测试和发布服务等任务时,部署和管理服务是极为重要的,...
    99+
    2023-05-17
    微服务架构 服务部署 服务管理
  • 微信无法连接到服务器如何解决
    本文小编为大家详细介绍“微信无法连接到服务器如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信无法连接到服务器如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。方法...
    99+
    2023-02-15
    服务器
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作