什么是无服务器计算以及无服务器存储的工作原理是什么?
无服务器是指开发应用程序作为一组较小功能组件,然后将这些功能提交给主机服务,以实现弹性可扩展的事件驱动执行。在这方面,由服务提供商负责运行、扩展和运行整个IT堆栈,这使应用程序所有者可以更专注于业务价值而不是IT运营。
由于服务提供商按功能执行而非基础架构收费,因此无服务器运营成本完全等同于应用程序使用成本。通过无服务器,云计算费用可直接追溯到应用程序和业务用户。 无服务器并非真的没有服务器;只是这台服务器位于云端的某个地方。在幕后,可能还有虚拟机、容器、服务器和存储。还有操作系统和应用程序服务器代码,以及多层级IT管理,可能包括云编排、虚拟主机和容器管理,例如Kubernetes。服务提供商处理所有网络、可用性、性能、容量和可扩展性问题,而这是当IT企业管理自己的应用程序时通常可能需要关注的问题。 功能即服务 对于无服务器,更好的名称可能是功能即服务。在其最简单的形式,这种函数是一小段事件驱动的代码,可能用JavaScript编写,被设置为在响应某些触发器时调用,例如web表单提交点击或IoT设备事件。简单的函数可以简单地将记录插入数据库、创建日志条目、触发另一个事件、发送通知消息、转换数据或返回计算。 完整的无服务器应用程序将包含精心编排联级功能。每个功能都可以独立重复使用,并以大规模并行方式触发。一个函数的执行可以从其他函数正交扩展,从而提供极大的灵活性而不会遇到传统的瓶颈。 当精心设计的主要功能(在复杂联级实践中相互触发)大规模部署时,它不仅可以取代单个应用程序,而且还略胜一筹。
无服务器的前提之一是你的应用程序可以平滑扩展并具有完全弹性,远远超出任何预定义或预付费服务器群集或云计算机实例的限制。 当然,这仍然有点未来主义,因为应用程序不仅仅包含计算功能,还有数据需要管理、保护和存储。我们还必须考虑无服务器的存储问题,并开发有效的无服务器存储。
针对无服务器的存储 与容器中的微服务一样,无服务器功能的最初想法是短暂构建它们,因此它们不包含任何数据,并且不依赖于内部存储数据。 与长期运行的应用程序不同,无服务器功能由事件触发,执行特定操作后撤离,而不是作为长期应用程序。无服务器功能可大规模并行启动,可快速扩展以满足需求。那么无服务器数据存储在哪里? 实际上,无服务器功能的数据存储必须在计算环境外部。由于这种弹性扩展和小事件级联,传统存储卷和文件系统在大规模无服务器应用程序部署很难发挥作用并会成为明显的瓶颈。
现在,无服务器功能开发环境可以直接使用存储服务API。由于可扩展存储适合Web规模应用程序和容器化应用程序,云数据服务是理想的数据存储方式。以下是适用于无服务器的存储类型: 云数据库服务,针对多租户,具有弹性可扩展性和Web式访问,使其成为事务性存储的不错选择。 对象存储服务,例如AWS S3,具有简单get / put协议,它是很多Web规模应用程序和功能设计的理想选择。 应用程序内存缓存(例如Redis)可以满足高性能数据共享需求。 Journaling日志功能,其中数据串行写入到最后,虽然数据汇总为可读,但可以帮助保护功能设计中的流数据。 当任何数据存储用于无服务器时,必须非常注意幂等性-即操作应用多次,都不会产生额外影响。还必须注意异步事件假设和时间或竞争条件。特别是,功能设计必须注意并行数据更新和写入锁定条件。 那么究竟什么是无服务器存储? 无服务器的理想是让IT和DevOps摆脱管理和运营任何类型的服务器,包括物理服务器、虚拟服务器、容器和云实例。
这里的想法是强制IT将所有操作问题的责任交给无服务器环境提供商。而如果企业部署无服务器,最终的目的是同时摆脱运营和管理存储。 但是,IT确保数据管理、合规性和保护的工作要求将意味着企业将长期采用混合保护存储架构。那么,从长远来看呢?数据可以通过事件队列从函数传递到函数,并且,从不实际保存,依靠事件排队服务来进行数据保护。但是,在某处还是会有存储。