什么是无服务器微服务?|无服务器微服务介绍

微服务是应用程序中较小的部分,彼此独立运行,并且可以通过多种方式进行部署。无服务器微服务在无服务器体系结构内部署。

学习目标

阅读本文后,您将能够:

  • 定义无服务器微服务
  • 了解无服务器微服务的工作方式
  • 区分微服务、容器和函数

复制文章链接

什么是微服务?

想象一下,把一个应用程序切成小块,然后作为一个较小部分的集合而不是一个整体来运行。基本上,微服务架构就是这样。应用程序的每一小块都称为“微服务”,它们各自仅执行一项服务,独立于应用程序的其他部分运行,并且在自己的环境中运行,存储自己的数据。尽管名为微小,微服务并不一定很小。它们“微小”的原因是它们仅处理一项服务,并且是较大应用程序的一部分。

微服务构建的应用程序可以比作一支美式橄榄球队,在球队中,每个球员都扮演不同的角色,但是所有球员共同组成一个球队(整个应用程序),共同实现一个目标。或者,可以将微服务视为人体中的不同系统(循环、呼吸等),并将应用程序视为整个人体。

从用户的角度来看,微服务构建的应用程序具有单个接口,并且应与设计为一个堆栈的应用程序一样运转。但是,每个微服务在后台都有自己的数据库,并与应用程序的其余部分分开运行。此外,同一应用程序中的微服务可以用不同的语言编写并使用不同的库。

单体架构与微服务架构

微服务的结构通常与单体架构相对。单体架构是构建应用程序的经典方式。单体应用程序是单个堆栈,用户界面位于顶部,业务逻辑位于中间,数据库位于底部。通常,单体应用程序托管在特定的服务器或服务器组中。以这种方式构建应用程序有一个缺点,那就是对应用程序进行任何小的更改都意味着必须更新整个堆栈。另一个缺点是,如果应用程序的一部分损坏,则整个应用程序可能会失效。

微服务的优势

  • 恢复能力:由于应用程序经过分割,因此应用程序的一部分损坏或崩溃不一定会影响应用程序的其余部分
  • 可选择扩展性:无需扩展整个应用程序,可以仅扩展使用量很大的微服务
  • 易于添加或更新功能:可以一次推出或更新一个功能,而不必更新整个应用程序堆栈
  • 对开发人员而言的灵活性:可以用不同的语言编写,并且每个微服务都有自己的库

微服务可以作为无服务器架构的一部分吗?

微服务可以多种方式部署;它们可以是无服务器体系结构的一部分,可以托管在容器中,可以使用 PaaS 开发,或者,理论上还可以用于构建本地托管的应用程序。然而,当使用容器或无服务器架构在云中托管应用程序时,用微服务构建应用程序的优势可能会最为明显。

什么是无服务器微服务?无服务器微服务架构如何工作?

无服务器微服务部署在无服务器供应商的基础设施中,仅在应用程序需要它们时运行。微服务也可以分解成更小的函数,但具体视微服务的大小而定。要了解有关无服务器计算的工作原理的更多信息,请参阅什么是无服务器计算?

微服务和无服务器函数之间有什么区别?

技术社区还在定义两者的区别,但是通常,微服务更大,功能比函数更多。函数是一小段代码,仅响应一个事件,执行一个操作。根据开发人员对应用程序的分割,微服务可能等同于一个函数(意味着它仅执行一个操作),也可能包含多个函数。

继续借用橄榄球的比喻,想想四分卫的所有职责:投掷传球、将球传给后卫,等等。如果说四分卫就像球队环境中的微服务(提供“四分卫”服务),那么这些较小的活动中的每一项都是一个函数。但是,微服务和函数之间的界限有时会模糊不清,就像球队中某些球员只执行一项动作(如踢球手)一样。

Cloudflare Workers 是微服务吗?

Cloudflare Workers 是托管在 Cloudflare 边缘网络中、应 HTTP 请求而运行的 JavaScript 代码。Workers 的行为更像函数,但具有灵活性,也可以充当微服务。Cloudflare 并不限制开发人员可以构建和部署的 Workers 的大小或类型。