麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
905
2023-05-22
简析AWS ***的几大基本功能
什么是AWS ***?
总的说来,***是一种键-值(key-value)和文档型数据库,基本可以达到毫秒级的响应时间。作为持久数据库,它具有内置的安全性、备份与还原等功能。
关键术语:
•表(Table):可以容纳几乎无限数量表项的集合,可带有二级索引。
•二级索引(Secondary Index):使用不同的主键和排序键来复制表项。
•主键(Primary Key):是一种特殊形式的属性,可用于参考表项,类似于表项的ID。
•排序键(Sort Key):是另一种特殊形式的属性,可用于组织不同排序的表项。
•表项(Item):作为AWS ***中最基本的单元,它是JSON形式的结构化数据属性。
•属性(Attribute):是一个键-值对,其中包含着有关数据表中某个表项的信息性数据点(data-point)。
•流(Streams):是针对数据表执行状态改变(state-changing)操作的恒定流。
•查询(Query):检索特定表项(或表项集)的操作。
•扫描(Scan):用于扫描整张表或表的某部分的操作。
•过滤器(Filter):完成查询或扫描后,将结果返回给请求者之前,所应用的规则。
如何存储数据?
键-值存储是一张按比例扩展(scaled-up)的分布式哈希表。该表中的表项可以通过键-值对的属性来唯一标识。该属性对可用于GET、SET、UPDATE和DELETE等操作。该属性通常有两种类型:主键(类似表项的ID)和排序键(可用于对表项进行排序)。
众所周知,哈希表的优点是:无论表的大小,它总是可靠、一致且快速的。而缺点是:一次只能检索一条记录。对此,***可采取宽列(wide-column)存储的形式,即:每一行在任何时候都会具有任意数量的列。这种B树(B-tree)的数据结构与二级索引不但提供了查找表项的选项,而且允许用户进行范围查询。同时,它们可用于通过不同的主键和排序键,来参考和排序表项。此外,由于***是一个schemaless数据库,因此其中的表项可以具有不同的属性集。
如何实现自动扩展?
无服务器计算的最大好处之一是:开发人员可以在时间和预算上采用自动化的方法,以确保容量不会受限。***可以通过自动扩展,来应对需求的激增,避免出现限流或响应速度骤降,进而合理地利用资源。
通过使用AWS应用自动扩展(Application Auto Scaling),***允许用户对数据表采取自定义的扩展策略,按需增加读取和写入的容量。通常,此类策略包括了:指定最小和最大预购置的容量单位,以及目标利用率(如:已消耗的预购置吞吐量百分比)。目标利用率通过与目标跟踪算法结合,确保无论工作负载如何变化,吞吐量都能够与设定的目标相匹配。
功能与使用场景
除了数据库的基本功能,***还拥有包括:备份和恢复、全局存储、***加速器(DAX)、***流、以及数据传输在内的其他功能。而作为AWS的顶级服务之一,***每天都可以处理10tr以上的请求,并且可以支持每秒超过2000万个请求的峰值。因此,它适用于任何规模的要求提供低延迟数据访问的应用。
由于非常适用于HTTP与AWS IAM的应用场景,因此***数据库不但能够始终受到保护,并且无需复杂的网络配置(如:网络分区),便可快速地对请求进行身份验证,并安全地完成各项初始化步骤。
由于使用场景十分广泛,因此***有着丰富的用户案例。从Lyft和Airbnb之类的成长型公司,到Capital One和Nike等历史悠久的企业,都在其架构中使用到了***。
计费
***通过如下两种容量模式,来对目标数据表的读取和写入操作进行计费。
•按需
此模式意味着无需预先指定读、写吞吐量,按需进行扩展。因此,如果您的数据表或流量存在着不可预测性,那么这是一种不错的选择。
•预购置
通过预购置容量,您可以指定每秒所需的读写次数。自动扩展功能在此可以根据指定的利用率,通过自动化调整,以保证高性能和对预算的管理。
当然,这两种模式的成本也会根据实际的使用量产生巨大的差异,因此我们需要事先做好相应的估算。
具体而言,对于按需模式,***会按照每百万个单位进行收费;而对于预购置模式,***则按每小时的单位量来进行收费。
值得一提的是:作为预购置模式下的附加项,预存容量(Reserved Capacity)不但可以节省成本,而且能够通过支付一次性前期费用,来保障在预存容量期限内,按小时支付最低吞吐量级别的开销。不过,任何未使用的容量都不会顺延到次月。
读写请求计费
在写入的方面,***将每个写入请求计作一个单位(最多为1 KB),而将每个事务性写入算作两个写入请求单位。在读取方面,***将每个高度一致的读取请求计作一个单位(最多为4 KB),将每个事务性读取算作两个读取请求单位,而将每个最终一致的读取只算作一半的读取请求单位。
AWS Free Tier
在AWS Free Tier中,***能够提供如下“福利”。当然,它们的每一项都是按月、按区域、按账户来计费的。
•25个WCU和25个RCU的预购置容量。
•25 GB的数据存储空间,之后按每GB、每月收取费用。
•25个rWCU可用于在两个AWS区域中部署全局表。
•250万个源自***流的流式读取请求。
•1 GB的数据输出(前12个月为15 GB),可横跨AWS的各项服务进行汇总。
如何在***表上节省成本?
“按需”模式虽然灵活自主,但其成本却高达“预购置”模式的七倍。相反,使用预购置模式势必让开发人员承担更多估算容量的任务,并且可能会在可扩展性上有所欠缺。下面是有关如何为应用选择正确的模式,以及优化数据表的三点建议:
1.自动化扩展功能不但需要进行基准测试,而且很难适应需求的快速变化。因此,用户需要在尽可能接近系统的分布式情况下运行测试,以确保自动化扩展能够满足真正的业务需求。
2.对于按需读取密集型数据表的需求,DAX是一种基于使用率的经济型选择。一个小型DAX实例(如:t2.medium)的成本,与“按需”模式下超过200M的读取操作基本相同。也就是说,只有在高吞吐量的情况下,“按需”模式才会体现出节省的优势。
3.对于那些写入密集型的工作负载,SQS是管理高吞吐量、以及不可测流量峰值的理想选择。各种消息会通过***写入数据的Lambda函数进行轮询。数据库通过限流来更好地分配容量,进而充分地利用“预购置”容量模式的优势。
如何设置AWS ***
总的说来,设置***并不难。下面,我们将展示如何使用AWS Free Tier中的各种参数和功能。
创建NoSQL表
1.在***控制台上单击“创建表”。
2.自定义表的名称。
3.将主键或分区键(Partition Key)作用于跨分区的分布数据上,以实现可扩展性。据此,您可以将一系列数值均匀地分布到不同的访问模式中。
4.由于排序键只能对上述数据进行排序,因此您需要对表进行数据挖掘。
5.要启用“自动扩展”功能,则需取消勾选“默认设置”框,以便自动创建一个名为***AutoScaleRole的AWS IAM角色,来管理自动化扩展过程。
6.最后,请将界面滑到底部,并单击“创建”。
新增数据
1.在“表项”选项卡中,单击“创建表项”。
*** 流
***流可以在数据发生变更的时间点,捕获表的更改,进而将这些更改存储到日志中,并保存24小时。
我们可以将已更改表项的主键属性,作为流式记录实时写入,以确保更改的时序性。此外,我们也可以通过配置,让它能够捕获诸如更改前、后的状态等其他数据。这些流式记录可以被其他应用程序所使用,例如:
•汇总来自多个操作的指标,比如:在特定时间段内一次性记录某个社交平台的“点赞”数量。
•在客户将数据添加到***表时,会触发一封电子邮件,以确认输入数据的正确性。
•在移动应用的数据表中,数据往往以每分钟上千次的频率变化着。这就需要另一个应用来存储变更的详细信息,以便提供“参与度”之类的实时指标。
此外,值得注意的是,虽然AWS ***和*** Stream使用不同的端点,但是两者必须属于同一个区域。
***查询
您可以根据主键去查询表中的一个或一组表项,并快速地检索到它们。下面展示了查询数据表的操作步骤:
1.在“表项”选项卡的下拉框中选择“查询”。
2.在主键或排序键的搜索框中输入关键字,按需进行查询。
***扫描
***扫描可以通过读取数据表、或二级索引中的每个表项,以返回结果集。通过排序键,您也可以决定扫描的顺序。同时,过滤器表达式可以被用于确定从扫描中返回哪些表项。当然,扫描可能会影响应用的整体性能,因此,除非的确需要扫描每一个表项,否则请改为使用***查询的方式。
原文标题:The Ultimate Guide to AWS ***,作者: Taavi Rehemägi
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。