微服务和无服务器架构是云原生计算世界中的热门话题之一,虽然大多数人认为这些架构类似,但它们在软件开发中能够发挥出不同的作用。本文将概述了微服务和无服务器架构的区别以及如何相辅相成。
Focus on your application, not on the infrastructure.
无服务器架构是一个由事件和请求驱动的技术,其目标是帮助开发人员在创建资源密集的云工作环境时简化编码流程。
与大众认知相反,无服务器架构并不意味着不需要任何服务器。相反,无服务器意味着开发人员不再需要专注于服务器管理,或是基础结构的实现、维护、调试和监视[1]。而且,云服务提供商可以完全代替程序员来管理服务器分配和配置的责任。简单地说,无服务器架构是云计算的一个执行模型[1]。
事件驱动架构(Event-driven Architecture),例如无服务器架构,具有以下优点:
- 拥有极大的灵活性,允许按需来扩展或降低计算资源。
- 开发人员不必考虑基础架构维护或及时的数据同步,因为在无服务器结构中,自动化流程就能完成这些步骤。
- 云服务提供商负责管理代码数据、停机时间问题的所有基础架构、编排器等。
- 按需付费(pay-as-you-go)的机制有助于避免不必要的应用程序开发和部署费用
很多公司,例如Google,Microsoft,IBM和Amazon,已经为客户提供迁移所有本地业务操作的服务,以便在其无服务器平台上托管,像是在 AWS Lambda 和 Azure Functions。
微服务(Microservices)是一种架构模式,其中的应用程序是基于许多小型互相连接的服务[2]。这些应用程序基于单一功能原则(single responsibility principle),也就是集合以相同原因改变的类/对象,并分离那些因不同原因而改变的类/对象。同时,微服务架构的概念也包括可以独立地开发、部署和维护的松耦合服务[2]。
TARS就是一款性能强大的微服务框架,支持多种编程语言,包括C 、Golang、Java、Node.js、PHP等。通过使用TARS可以快速构建微服务系统,同时开发人员能够专注于业务逻辑,从而有效提高运营效率。
总体来说,无服务器是一个允许应用程序或组件按需加载和运行的云主机,而且能够在任何地方都可以调整到所需的任何数量。那么,无服务器和微服务是如何互相关联的呢?
由于无服务器的特性,无服务器应用程序在无状态(Stateless)组件中运行。也就是说,无服务器系统不需要在其使用之间存储任何内容。无服务器的一切都是无状态的!你将无法在一个执行函数时将文件保存到磁盘上,并希望它被储存在那里。在实践中,无服务器通常使用无状态组件作为函数、lambda或一个微服务[4]。
本文将主要讨论微服务。无服务器架构使用无状态微服务,该微服务在部署应用程序和组件共享中会优先考虑弹性,并托管在容器上[4]。一般来说,容器提供比虚拟机低的性能开销,而容器编排工具(例如Kubernetes)会使微服务部署更容易[5]。
如果与同时使用无服务器和无状态微服务相比,传统应用通常会呼叫微服务,但是通过无服务器,微服务需要被触发。
无服务器和微服务的目前最新技术实践是事件驱动的应用程序以及业务流程编排。亚马逊和微软在云中首次引入无服务时,它们的目标是事件触发的应用程序,例如物联网(IoT)应用程序。在IoT中,应用程序会偶尔运行,因此无需使用云、虚拟机或服务器来保持数据。然而,现在IoT不再是的无服务器的唯一重点。云提供商允许应用程序通过触发事件来跟踪它们的进度,然后使用这些事件来触发其他步骤或其他应用程序[5]。因此,无服务器和无状态微服务功能不再仅用于IoT事件。相反,无服务器和无状态微服务功能能够编排应用程序的工作流程。这改变了无服务器计算模型。
通过无服务器和微服务技术,应用程序和企业需要有三个基本要点来处理编排:
- 应用程序必须能够管理触发事件。
- 应用程序应具有根据这些触发器激活流程的机制。
- 应用程序应该有一种方法来定义每个触发事件后的工作流程或任务序列。此方法应在无状态事件和流程上强制加上工作流/序列。
编排和集成工具,例如Amazon Step Functions等,允许根据其他应用程序中的步骤生成的事件来定义微服务和无服务器的工作流/序列。有些工具甚至允许触发用户开发的函数和按需运作的微服务作为无服务器组件。
微服务和无服务可以用于绑定业务流程并集成业务应用程序的想法是创新的。由事件驱动的无服务器微服务可以提供满足众多业务需求的完美方案,比如降低成本和提高业务性能。
参考文献
[1] https://www.byteant.com/blog/serverless-vs-microservices-architecture-what-does-the-future-of-business-computing-look/
[2] https://tarscloud.org/feeds/5252833302625855
[3] https://www.sumologic.com/blog/microservices-vs-serverless-architecture/
[4] https://searchapparchitecture.techtarget.com/tip/Combining-serverless-and-microservices-has-its-benefits
[5] https://tarscloud.org/feeds/6300665183476313
TARS基金会是Linux基金会下的非营利性、微服务基金会,致力于建设一个强大而灵活的微服务生态系统