4

为了将 AWS Keyspaces 视为本地 Cassandra 集群的替代方案,我想做一个成本估算。但是,键空间定价基于写入请求单元 (WRU) 和读取容量单元 (RCU)。

https://aws.amazon.com/keyspaces/pricing/

每个 RRU 提供足够的容量来读取多达 4 KB 的具有 LOCAL_QUORUM 一致性的数据。每个 WRU 提供足够的容量以每行写入多达 1 KB 的数据,并具有 LOCAL_QUORUM 一致性

Cassandra 中的哪些指标可用于计算现有集群的 RCU 和 WCU?

4

2 回答 2

1

目前我们正在存储 iostats 信息(每秒)。基于这些信息,我们能够想出一个大约 RC 和 WC。(+- 10% 误差范围,95% 置信水平)

我们将很快与 AWS 人员交叉核对我们的数字。

例子:

在此处输入图像描述

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
abc               0.00     0.00    1.00    0.00     0.03     0.00    64.00     0.00    0.00    0.00    0.00   0.00   0.00

我们使用以下计算:在 AWS-EAST 区域中,每秒 10,000 次写入,最高 1Kb,成本将为

写入成本:按需容量模式 = $1.45 * 0.01 * 60 * 60 * 24 * 365 = $457,272 每年

预置容量模式 = $0.00075 * 0.01 * 60 * 60 * 24 * 365 = 每年 $236.52

更新:AWS 人员正在根据表分区大小进行计算,这是错误的 IMO。

于 2021-07-09T21:28:02.470 回答
0

使用 IOP 可能会损失一些准确性。Cassandra 有很多 iops 开销。在读取时,cassandra 可以从多个 sstable 读取。Cassandra 还执行消耗 iops 的后台压缩和修复。这不是 Amazon Keyspaces 中的因素。此外,Keyspaces 会根据利用率进行扩展和缩减。在某个时间点取平均值只会为您提供单一维度的成本。您需要取一个代表很长一段时间的平均值,以涵盖工作负载的高峰和低谷。工作负载往往看起来像正弦波或余弦波,而不是一条直线。

收集以下指标将有助于提供更准确的成本估算。

  • 平均行大小报告的结果(下)
  • 以 GB 为单位的表生存空间除以复制因子
  • 长时间内的平均每秒写入次数
  • 长时间内的平均每秒读取次数

存储大小

以 GB 为单位的表生存空间

此方法使用 Apache Cassandra 调整统计数据来确定 Amazon Keyspaces 中的数据大小。Apache Cassandra 通过 Java 管理扩展 (JMX) 公开存储指标。您可以使用第三方监控工具(例如 DataStax OpsCenter、Datadog 或 Grafana)来捕获这些指标。从 cassandra.live_disk_space_used 指标中捕获表活动空间。取 LiveTableSize 并将其除以数据的复制因子(很可能是 3),以估算 Keyspaces 存储大小。Keyspaces 自动在多个 AWS 可用区中复制数据 3 次,但定价基于单个副本的大小。

表生存空间为 5TB,复制因子为 3。对于 us-east-1,您将使用以下公式

(Table live space in GB / Replication Factor) * region storage price per gb

5000 / 3 * 0.3 = 500$ per month.
 

收集行大小

平均行大小报告的结果

使用以下脚本收集表的行大小指标。该脚本使用 cqlsh 从 Apache Cassandra 导出表数据,然后使用 awk 计算可配置的表数据样本集的行大小的最小值、最大值、平均值和标准差。使用您的集群和表信息更新用户名、密码、键空间名称和表名占位符。如果它们包含相似的数据,您可以使用开发和测试环境。

https://github.com/aws-samples/amazon-keyspaces-toolkit/blob/master/bin/row-size-sampler.sh


./row-size-sampler.sh YOURHOST 9042 -u "sampleuser" -p "samplepass"

输出将用于下面的请求单位计算。如果您的模型使用大 blob,则将平均大小除以 2,因为 cassandra 返回一个十六进制值字符表示。

读/写请求指标

平均每秒写入次数/每月总写入次数 平均每秒读取次数/每月总读取次数

捕获表的读取和写入请求率将有助于确定您的 Amazon Keyspaces 表的容量和扩展要求。Keyspaces 是无服务器的,您只需为使用的内容付费。Keyspaces 读/写吞吐量的价格取决于请求的数量和大小。

要从现有 Cassandra 集群中收集最准确的利用率指标,您将捕获协调器级别读取和写入操作的平均每秒请求数 (RPS)。对一个表取较长时间的平均值,以捕获工作负载的高峰和低谷。

两周内每秒平均写入请求 = 每秒 200 次写入 两周内每秒平均读取请求 = 每秒 100 次读取请求

LOCAL_QUORUM 读取

=READ REQUEST PER SEC * ROUNDUP(ROW SIZE Bytes / 4096) * RCU per hour price * HOURS PER DAY * DAYS PER MONTH

200 * (900 bytes / 4096) * 0.00015 * 24 * 30.41 = 27$ per month

LOCAL_ONE 读取

使用最终一致性读取可以为您节省一半的读取工作量成本。

=READ REQUEST PER SEC * ROUNDUP(ROW SIZE Bytes / 8192) * RCU per hour price * HOURS PER DAY * DAYS PER MONTH

200 * (900 bytes / 4096) * 0.00015 * 24 * 30.41 = 14$ per month

LOCAL_QUORUM 写入

=WRITE REQUEST PER SEC * ROUNDUP(ROW SIZE Bytes / 1024) * RCU per hour price * HOURS PER DAY * DAYS PER MONTH

100 * (900 bytes / 4096) * 0.00075 * 24 * 30.41 = 68$ per month

存储 每月 500 美元 最终一致读取 每月 14 美元 写入 68 美元 每月

总计:每月 592

为了进一步降低成本,我可能会在写入大型 blob 数据时使用客户端压缩,或者如果我有许多小行,我可能会使用集合来在单行中容纳更多数据。

查看定价页面以获取最新信息。

于 2021-11-17T21:36:42.417 回答