集群规模案例研究 - 法定人数队列第 2 部分
在上一篇文章中,我们开始了对使用法定人数队列的工作负载的规模分析。我们专注于消费者能够跟上速度的理想场景,这意味着没有队列积压,并且集群中的所有代理都正常运行。通过运行一系列模拟不同强度工作负载的基准测试,我们确定了按每月每 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 属性强制法定人数队列在安全的情况下立即将消息体从内存中移除。您可以将其设置为更长的限制,这是最激进的设置 - 旨在避免内存大幅增长,代价是在消费者无法跟上的情况下进行更多磁盘读取。如果没有此属性,消息体将始终保留在内存中,这可能会导致内存增长到触发内存警报的程度,从而严重影响发布速率 - 这是我们在本工作负载案例研究中想要避免的情况。