支撑无服务器计算,传统存储方案已经行不通了
什么是无服务器存储/无服务器数据库?它与其他的存储/数据库服务有什么不同?这篇文章将介绍无服务器存储服务应具有的基本属性,并通过无服务器计算中的一些用例,举例说明不同的无服务器存储和无服务器数据库之间的区别。最后,我们将继续讨论尚未出现的无服务器存储服务,并展望这一领域的未来。
无服务器(Serverless )就是没有服务器?
来源 - http://www.commitstrip.com/en/2017/04/26/servers-there-are-no-servers-here/
"无服务器"这个用词其实并不合适。无服务器并不是说不再需要服务器,而是采用了使技术抽象化、远离用户的概念,让用户不需要再担心服务器,其他人(云提供商)将帮助用户完成相关的工作。
无服务器计算
如今,无服务器是一个非常流行的词汇。尽管"无服务器"这个术语已经存在了一段时间,但它变得如此流行词的主要原因是2014年AWS Lambda的推出。随着2015年7月亚马逊API网关的推出,无服务器得到进一步普及。一般来说,无服务器(或者说无服务器计算)指的是服务器端逻辑由开发人员编写,在无状态计算容器中运行的应用程序--这些容器是事件触发的,短暂的(可能只持续一次调用),并由第三方全面管理。这也称为功能即服务(FaaS)。
无服务器计算的无状态性以及存储的需求
无服务器计算或FaaS的一个特性是,它是无状态的。因此,在一般设计中不可能出现在相同功能的两次执行之间保持状态。这就是无服务器存储引入的原因,如果需要在两个FaaS功能执行之间保持状态,则应将其存储在外部存储服务中。
传统存储的问题
传统存储解决方案被设计于在单个地理位置的一组固定服务器上持续运行,要正确使用这些存储解决方案,开发人员需要了解很多有关配置的详细信息。在最坏的情况下,高可用性和性能的优劣取决于开发人员对数据库内部的了解。开发人员需要弄清楚且配置好区域、空间、卷、内存、计算容量和软件版本等内容。开发团队必须花费数小时的时间考虑容量规划、配置、分片、备份、性能调整和监控。当你需要花80%的时间来设置和操作数据库,而且只是为了支持无服务器功能时,这就有点不合适了。虽然无服务器计算为计算层增加了弹性,但当存储层无法提供与之相当的弹性时,你可能就无法完全发挥其优势。
真正的无服务器存储
理想情况下,真正无服务器的存储应具有以下属性:
· 无需配置
· 真正有弹性(无需运营人员干预的纵向扩展)
· 按需付费
使用无服务器存储时,开发人员不必担心任何基础架构细节,如节点大小,内存或存储大小等。与AWS Lambda按单个功能调用进行收费的方式相同,无服务器存储中的资源消耗应根据不同工作负载使用的计算和存储量来衡量。这是无服务器数据库的本质,用户永远不会为闲置容量付费,存储使用情况反映了功能调用和工作负载。
使用传统存储产品,过度资源配置是准备应对流量高峰的唯一策略,无服务器存储的弹性可防止可能带来浪费的过度配置。由于无服务器存储能够在没有用户干预的情况下进行弹性扩展,因此开发人员无需进行容量规划即可启动,并且应用程序始终具有足够的容量。此外,按需付费定价模式将确保没有闲置资源增加用户的成本,无服务器存储的成本只随着使用而扩展,你永远不会为未使用的容量付钱。
无服务器存储可选项
如今,有多种无服务器存储类别,通常会有多个云供应商提供或多或少的相同服务。在本节中,我们将介绍这些不同的无服务器存储类别,以及每个类别的示例和它们的一些用例。
无服务器对象存储
对象存储是一种无层次结构的数据存储方法,通常用于云中。与其他数据存储方法不同,基于对象的存储不使用目录树。离散的数据单元(对象)存在于存储池中的同一级别。每个对象都有一个唯一的标识名称,应用程序使用该名称来检索它。此外,每个对象可能都有的用于检索的元数据。无服务器对象存储的一些常见示例是Amazon S3,Google云存储,Azure存储和IBM云存储。在无服务器计算环境中使用无服务器对象存储的一个常见示例是缩略图生成。
1、移动应用程序将图像上传到对象库。
2、无服务器对象存储在上传映像后触发更改事件,从而执行无服务器功能。
3、无服务器功能基于上传的图像创建缩略图。
4、在将缩略图上传到无服务器存储之后,无服务器功能向移动应用程序发送推送通知。
5、移动应用程序下载缩略图并相应地更新用户界面。
无服务器关系型数据库
无服务器关系数据库的一个例子是2017年最后一个季度推出的Amazon Aurora Serverless,它有两个分别与MySQL和PostgreSQL兼容的不同版本,但它也与MariaDB,Oracle等其他已知系统兼容。Amazon Aurora Serverless是一种按需自动扩展数据库服务,数据库将根据应用程序的需要自动启动、关闭以及扩展容量。它使用户能够在云中运行其数据库,而无需实际管理任何数据库实例。对于不常见、间歇性或不可预测的工作负载,它是一种简单、经济高效的选择,因此非常适用于无服务器计算。
无服务器NoSQL数据库
无服务器Key-value和文档存储
目前有多个不同类型的无服务器NoSQL数据库,最常见的是Key-value存储和文档存储。Key-value数据库是一种数据存储范例,用于存储、检索和管理关联数组,这种数据结构现在通常被称为辞典或哈希表。辞典包含一组对象或记录,这些对象或记录又包含许多不同的字段,每个字段都包含数据。这些对象通过使用唯一标识记录的Key被存储和检索,并用于快速查找数据库中的数据。面向文档的数据库或文档存储是用于存储、检索和管理面向文档的信息的存储,也称为半结构化数据。举几个例子:Amazon DynamoDB,Google Cloud Datastore和IBM Cloudant NoSQL DB。此前,亚马逊宣布推出了DynamoDB on-demand,它为按需付费模式的DynamoDB提供按需读/写容量选项。这种无服务器Key-value和文档存储有各种用途,其中一个简单的用例是使用无服务器功能处理"联系我们"(Contact Us)表单。
无服务器时间序列数据库
时间序列数据库(TSDB)是一种优化用于处理时间序列数据的软件系统,时间序列数据是按时间(日期时间或日期时间范围)索引的数字数组。时间序列数据具有特定的特征,例如通常以时间顺序形式到达,数据是只追加(Append-only)的,并且查询总是在一个时间间隔内。虽然关系数据库可以存储这些数据,但在处理这些数据时效率很低,因为它们缺乏优化,例如按时间间隔存储和检索数据。无服务器时间序列数据库的一个例子是最近公布的Amazon Timestream,它是一个专用的时间序列数据库,可以按时间间隔有效地存储和处理记录。
来源-https://aws.amazon.com/timestream/
无服务器图数据库
很简单,图数据库(Graph Database)的设计,将数据之间的关系视为与数据本身同等重要,它在保存数据时不会将其限制为预定义的模型。相反,数据就像绘制出来一样被存储--显示每个实体如何与其他实体连接或相关。FaunaDB是一个无服务器图数据库,它是一个通用的、事务性的、时态的、地理上分布的、强一致的和关系型的数据库。FaunaDB还支持文档存储和时间序列数据库功能。
展望未来,还缺乏什么?
无服务器内存数据存储/缓存
无服务器存储中尚未提供的存储类型之一是内存数据存储。我们目前用于缓存的选项之一是在API Gateway进行缓存。Amazon DynamoDB具有单位数毫秒延迟,如果用户需要稍微减少延迟,那么即使尚未完全实现无服务器,也可以使用DynamoDB加速器(DAX)。此外,AWS ElastiCache提供Redis和Memcached,但尚未将它们作为完全托管服务提供。另外,Google App Engine提供Memcache作为内存缓存服务,但是只能在App Engine本身中访问。
结论
随着IT行业中无服务器计算的增长和高度适应,无服务器存储正在快速增长。我们希望这些服务能够得到不断的优化和进步,从而帮助开发人员实现真正的无服务器应用程序开发。
原文来源:Medium 作者:Rajind Ruparathna
原文链接:https://medium.com/@rajindruparathna/what-makes-a-storage-service-truly-serverless-93987826039e