微服务是应用程序中较小的部分,彼此独立运行,并且可以通过多种方式进行部署。无服务器微服务在无服务器体系结构内部署。
阅读本文后,您将能够:
复制文章链接
想象一下,把一个应用程序切成小块,然后作为一个较小部分的集合而不是一个整体来运行。基本上,微服务架构就是这样。应用程序的每一小块都称为“微服务”,它们各自仅执行一项服务,独立于应用程序的其他部分运行,并且在自己的环境中运行,存储自己的数据。尽管名为微小,微服务并不一定很小。它们“微小”的原因是它们仅处理一项服务,并且是较大应用程序的一部分。
微服务构建的应用程序可以比作一支美式橄榄球队,在球队中,每个球员都扮演不同的角色,但是所有球员共同组成一个球队(整个应用程序),共同实现一个目标。或者,可以将微服务视为人体中的不同系统(循环、呼吸等),并将应用程序视为整个人体。
从用户的角度来看,微服务构建的应用程序具有单个接口,并且应与设计为一个堆栈的应用程序一样运转。但是,每个微服务在后台都有自己的数据库,并与应用程序的其余部分分开运行。此外,同一应用程序中的微服务可以用不同的语言编写并使用不同的库。
微服务的结构通常与单体架构相对。单体架构是构建应用程序的经典方式。单体应用程序是单个堆栈,用户界面位于顶部,业务逻辑位于中间,数据库位于底部。通常,单体应用程序托管在特定的服务器或服务器组中。以这种方式构建应用程序有一个缺点,那就是对应用程序进行任何小的更改都意味着必须更新整个堆栈。另一个缺点是,如果应用程序的一部分损坏,则整个应用程序可能会失效。
微服务可以多种方式部署;它们可以是无服务器体系结构的一部分,可以托管在容器中,可以使用 PaaS 开发,或者,理论上还可以用于构建本地托管的应用程序。然而,当使用容器或无服务器架构在云中托管应用程序时,用微服务构建应用程序的优势可能会最为明显。
无服务器微服务部署在无服务器供应商的基础设施中,仅在应用程序需要它们时运行。微服务也可以分解成更小的函数,但具体视微服务的大小而定。要了解有关无服务器计算的工作原理的更多信息,请参阅什么是无服务器计算?
技术社区还在定义两者的区别,但是通常,微服务更大,功能比函数更多。函数是一小段代码,仅响应一个事件,执行一个操作。根据开发人员对应用程序的分割,微服务可能等同于一个函数(意味着它仅执行一个操作),也可能包含多个函数。
继续借用橄榄球的比喻,想想四分卫的所有职责:投掷传球、将球传给后卫,等等。如果说四分卫就像球队环境中的微服务(提供“四分卫”服务),那么这些较小的活动中的每一项都是一个函数。但是,微服务和函数之间的界限有时会模糊不清,就像球队中某些球员只执行一项动作(如踢球手)一样。
Cloudflare Workers 是托管在 Cloudflare 边缘网络中、应 HTTP 请求而运行的 JavaScript 代码。Workers 的行为更像函数,但具有灵活性,也可以充当微服务。Cloudflare 并不限制开发人员可以构建和部署的 Workers 的大小或类型。