集群容量规划案例研究 – 仲裁队列(第二部分)
在 上一篇文章 中,我们开始使用仲裁队列对我们的 工作负载 进行容量分析。我们专注于消费者能够跟上、队列没有积压且集群中所有代理程序都正常运行的理想情况。通过运行一系列基准测试,模拟不同强度的我们的工作负载,我们确定了每 1000 条消息/秒每月成本最低的前 5 个集群大小和存储卷组合。
- 集群:7 个节点,8 个 vCPU (c5.2xlarge),gp2 SSD。成本:54 美元
- 集群:9 个节点,8 个 vCPU (c5.2xlarge),gp2 SSD。成本:69 美元
- 集群:5 个节点,8 个 vCPU (c5.2xlarge),st1 HDD。成本:93 美元
- 集群:5 个节点,16 个 vCPU (c5.4xlarge),gp2 SSD。成本:98 美元
- 集群:7 个节点,16 个 vCPU (c5.4xlarge),gp2 SSD。成本:107 美元
还需要进行更多测试,以确保这些集群能够处理代理程序故障和因停机或系统减速而积压大量消息的情况。
所有仲裁队列都声明有以下属性
- x-quorum-initial-group-size=3
- x-max-in-memory-length=0
x-max-in-memory-length 属性强制仲裁队列在安全时尽快将消息体从内存中移除。您可以将其设置为更长的限制,这是最激进的设置——旨在避免内存大幅增长,但代价是在消费者跟不上时增加磁盘读取次数。没有此属性,消息体将始终保留在内存中,这可能导致内存增长到触发内存警报,严重影响发布速率——这是我们在本次工作负载案例研究中希望避免的。