什么是微服务?

复制 URL

微服务指的是一种应用架构,其中的一系列独立服务通过轻量级 API 进行通信。

请回想一下您最近一次网购时的情景。您可能使用了网站上的搜索栏来浏览商品。这个搜索功能就是一项服务。您可能还查看了推荐的相关商品,或者将某款商品添加到了线上购物车中。这两项也是服务。这些微服务共同构成了功能齐全的应用。

微服务架构是一种云原生软件构建方式,应用的每项核心功能均可独立存在。

应用的元素相互隔离,因此,开发和运维团队能够协同工作,而不会妨碍彼此。这意味着更多开发人员可以同时开发同一个应用,从而缩短开发所需的时间。

 

图片

红帽资源

传统的应用构建方法主要集中于单体式架构。在单体式架构中,应用的所有功能和服务都捆绑在一起,作为一个单元来运行。在应用内以任何方式进行增添或优化都会使其架构变得更加复杂。这使得在不拆分整个应用的前提下,优化应用中的任何单一功能都变得更加困难。此外,如果应用中的某个进程需要扩展,整个应用也必须扩展。

在微服务架构中,应用的每项核心功能均可独立运行。因此,无需将应用完全中断,开发团队就可以根据不断变化的业务需求构建和更新新的组件。

微服务架构是面向服务的架构(SOA)的一种演变。这两种方法的相似之处在于,它们都将庞大、复杂的应用细分为更易处理的较小组件。由于它们的相似性,人们经常将 SOA 和微服务架构相混淆。二者的主要区别在于范围的不同,SOA 是一种企业级架构方案,微服务则是应用开发团队的一种实施策略。

微服务可通过分散式开发显著提升团队的日常工作效率。您还可以同时开发多个微服务。这意味着更多开发人员可以同时开发同一个应用,从而缩短开发所需的时间。

加速做好面市准备

由于开发周期缩短,微服务架构有助于实现更加敏捷的部署和更新。

高度可扩展

随着某些服务的不断扩展,您可以跨多个服务器和基础架构进行部署,充分满足自身需求。

出色的弹性

只要妥当构建,这些独立的服务就不会相互影响。这意味着,某项服务出现问题后不会导致整个应用下线,这是与单体式应用模型的不同之处。

易于部署

与传统的单体式应用相比,基于微服务的应用更加模块化且小巧,因此,无需操心部署事宜。虽然对部署时的协作要求更高(服务网格层可以辅助这一过程),但获得的回报也很大。

易于访问

由于大型应用被细分为多个小型服务,因此开发人员能够更轻松地了解、更新和优化这些服务,从而缩短开发周期,尤其是在搭配使用敏捷开发方法(例如 DevOps)时。

更加开放

由于可以使用多语言 API,因此,开发人员可以根据需要实现的功能自由选用最适合的语言和技术。

微服务带来的灵活性可能会引发部署新变更的热潮,意味着新模式的诞生。在软件工程中,“模式”是指任何已知奏效的算法解决方案。“反模式”是指犯下的常见错误,本意是为了解决问题,但从长远来看可能会造成更多问题。

除了文化和流程之外,复杂性和效率问题是基于微服务的架构所面临的另外两大挑战。使用微服务架构时,提防这些常见的反模式非常重要。

  1. 扩展:在软件开发生命周期过程中扩展任何功能都可能会带来挑战,尤其是在初期。在初始设置期间,重要的是要花时间确定服务之间的依赖关系,并且注意可能破坏向后兼容性的潜在触发因子。部署时,对自动化的投入至关重要,因为微服务的复杂性会使人工部署不堪重负。
  2. 日志记录:使用分布式系统时,您需要利用集中式日志将所有相关信息集中到一处。否则,积累的日志数量将让您难以招架。
  3. 监控:您必须通过一个集中式视图来了解整个系统的情况,以便找出问题的根源。
  4. 调试:无法通过本地集成开发环境(IDE)进行远程调试,因为这种方式无法涵盖数十个或数百个服务。遗憾的是,关于应该如何进行调试,目前还没有标准答案。
  5. 连接:不妨考虑使用服务发现功能,无论是集中式还是集成式。

容器和 Kubernetes
Kubernetes 可在不影响其余技术堆栈的情况下更新应用中的单个组件,因此非常适合用于实现微服务应用的自动化管理、扩展和部署。

API
应用编程接口(API)是应用中负责与其他应用通信的部分。在微服务架构的基础架构中,API 发挥着至关重要的作用,它可使微服务中的不同服务共享信息并作为一个整体来运行。

事件流
微服务中发生的任何事情都可被定义为事件。例如,顾客在自己的线上购物车中添加或删除商品时。

多个事件形成事件流,反映出系统行为的不断变化。通过监控事件,企业可以得出有关数据和用户行为的实用结论。事件流处理允许立即采取行动,可以实时直接作用于运行的工作负载。企业可以将事件流应用于从防欺诈分析到机器维护等方方面面。

无服务器计算
无服务器计算是一种云原生开发模型,开发人员负责构建和运行应用,云提供商则负责置备、维护和扩展服务器基础架构。开发人员只需将代码打包到容器中即可进行部署。应用是从底层基础架构中抽象而来,因此无服务器可以帮助企业加快创新。

红帽的开源解决方案可帮助您将单体式应用细分为多个微服务,对其加以管理和编排,并处理它们所生成的数据。

红帽 OpenShift
红帽® OpenShift® 是一个基于 Kubernetes 的平台,可提供一种统一方式来连接、管理和观测基于微服务的应用,以此支持微服务。它支持容器化应用、传统应用、云原生应用以及重构为微服务的应用。OpenShift 与红帽应用服务集成,可与 Git 和 Jenkins 等现有自动化工具配合使用。它还整合了企业级 Linux 操作系统,进而提高整个集群的安全性。

无论您是优化传统应用、迁移到云还是构建基于微服务的全新解决方案,红帽 OpenShift 都能跨基础架构为这些应用提供更安全、更稳定的平台。

 

红帽运行时

红帽运行时是用于微服务的一套预构建、容器化运行时基础。它支持在设计微服务架构时使用的一系列广泛的语言和框架,如 Quarkus、Spring Boot、MicroProfile 和 Node.js。此外,红帽运行时还包括可实现快速数据访问的支持服务(借助红帽数据网格),以及可用于保护微服务 API 的服务(借助红帽单点登录)。

 

红帽集成

红帽集成是一套全面的集成和消息传递技术,旨在跨混合基础架构连接应用和数据。它是一种敏捷、分布式、容器化且以 API 为中心的解决方案。它可提供服务组合与编排、应用连接与数据转换、实时消息流与 API 管理——所有这些功能都能结合云原生平台和工具链,从而支持全方位的现代应用开发。

开发人员可以利用拖放式服务和内置集成模式等工具来构建微服务,而业务用户则可以使用基于 Web 的工具来开发可集成不同微服务的 API。

为什么选择红帽的 API 管理产品?

中心

红帽官方博客

获取有关我们的客户、合作伙伴和社区生态系统的最新信息。

所有红帽产品试用

我们的免费试用可让您亲身体验红帽的产品功能,为获得认证做好准备,或评估某个产品是否适合您的企业。

扩展阅读

什么是 Kubernetes Java 客户端?

Kubernetes Java 客户端是一个支持使用 Java 编程语言与 Kubernetes 进行接口的客户端库。

AWS 上的 K8s:自助式应用平台与托管式应用平台比较

一文了解 AWS 上 K8s 的功能与优势。使用 AWS 上的 Kubernetes,您可以在开发时灵活地自行配置和管理部署,大规模运行应用,添加新功能, 无缝迁移应用, 随时随地运行。

什么是托管控制平面?

使较小的节点能够运行控制平面,从而降低集群的成本,助力实现真正的混合云,

容器 相关资源

相关文章