存储 频道

无服务器计算环境中,数据存储位于何处?

  【IT168 编译】什么是无服务器(serverless)计算?如何实现无服务器存储?Serverless是一种将应用程序开发为一组较小的功能组件,然后提交给主机服务以实现弹性伸缩的事件驱动执行的方法。服务提供商负责运行、扩展和运营底层的整个IT堆栈,从而使应用程序所有者可以更多地关注业务价值,而不是IT运维。

  因为服务提供商对每个功能进行收费,而不是对预留的基础设施收费,所以无服务器的运营成本完全符合应用程序的使用情况。在没有服务器的情况下,云计算的开销可以直接追溯到应用程序和业务用户。

  无服务器并不是没有服务器,服务器运行在云上。幕后可能有虚拟机、容器、服务器和存储设备。操作系统和应用服务器代码以及IT管理层,可能包括云编排、虚拟主机和容器管理,比如Kubernetes。服务提供商负责处理通常必须关注的所有网络、可用性、性能、容量和可伸缩性问题。

  将其看作Functions as a Service(功能即服务)

  可能更好的叫法是功能即服务,简单来说,这种功能是一小段事件驱动型代码,可能是用JavaScript编写的,它在响应某些触发器(如web表单提交单击或物联网设备事件)时被调用。有些简单的功能可以简单地将一条记录插入数据库,创建一个日志条目,触发另一个事件,发送一条通知消息,转换一段数据或返回一个计算。

  一个完整的无服务器应用程序由一系列精心编排的功能组成。每个功能都可以独立地重用,并以大规模并行的方式触发。功能的执行可以与其他功能垂直伸缩,提供了极大的灵活性,而不会遇到传统的瓶颈。

  当一个精心设计的功能主图在复杂的事件级联中彼此触发时,它不仅可以替代单一应用程序,而且性能更好。无服务器的一个前提是,您的应用程序可以平稳地伸缩,并且完全具有弹性,远远超出任何预定义的或预付的服务器群或云机器实例集的限制。

  当然,这仍然有点超前,因为应用程序不仅仅由计算功能组成。仍然有数据需要管理、保护和持久化。必须考虑为无服务器存储,并开发有效的无服务器存储。

  无服务器的存储

  与容器中的微服务一样,对于无服务器功能的最初想法是临时性地构造它们,因此它们不包含任何数据,也不依赖于在内部持久存储数据。

  与长时间运行的应用程序不同,这些功能是由事件触发的,执行特定的操作后将退役,而不是成为长时间运行的应用程序。无服务器的功能,能以大规模并行的方式启动,以此实现快速扩展来满足需求。那么,无服务器的数据存储在哪里呢?

  实际上,用于无服务器功能的数据必须存储于计算环境的外部。由于弹性伸缩和小事件级联,传统的存储卷和文件系统将面临巨大的困难,成为大规模无服务器应用程序部署中的明显瓶颈。

  今天,无服务器功能开发环境可以直接使用存储服务API。由于可伸缩存储非常适合于Web级应用程序和容器化应用程序,所以云数据服务是理想的数据持久性选择。以下是一些可以很好地为无服务器计算提供支撑的一些存储类型:

  1、云数据库服务。为多租户、弹性可伸缩性和web风格的访问而设计的云数据库服务是事务持久性的良好选择。

  2、对象存储服务。如AWS S3,具有简单的get/put协议,是许多web规模的应用程序和功能设计的理想选择。

  3、应用程序内存缓存。(如Redis)可以满足高性能数据共享需求。

  4、注册日志(Journaling logs)。数据被连续地写到最后,而在总体上是可读的,这有助于在功能设计中保护流数据。

  在使用无服务器计算环境中的任何数据存储时,必须非常小心幂等性——这种操作如果应用多次的话就不会产生额外的效果。还必须注意异步事件假设和时间或竞争条件,特别是,功能设计必须注意并行数据更新和写锁定条件。

  那么,什么是无服务器存储呢?

  无服务器的理想状态是让它(以及DevOps)摆脱对任何类型的服务器的管理和操作,包括物理服务器、虚拟服务器、容器和云实例。其理念是将IT部门在出现运营问题时需要随叫随到的部分职责移交给无服务器环境提供商。如果一家公司最终采用了无服务器的方式,那么该公司将无需对存储进行运维和管理。

  然而,IT在数据治理、合规性和保护等方面的共同需求,意味着长期混合受保护存储体系结构。从长远来看,数据只能通过事件队列从一个功能传递到另一个功能,而不能真正持久,这依赖于事件队列服务来保护数据。不过,存储空间还是有的。

  原文作者:Mike Matchett

0
相关文章