容量规划
为什么需要容量规划?
容量规划是确保 ProtonBase 服务稳定运行和成本优化的关键环节。通过合理的容量规划,您可以:
- 避免资源不足导致的性能问题
- 防止资源过度配置造成的成本浪费
- 提前预估和准备所需的计算和存储资源
- 制定合理的扩缩容策略
良好的容量规划不仅能提升系统性能,还能帮助您优化成本,确保业务的可持续发展。
ProtonBase 的容量规划主要包含存储资源和计算资源。
存储资源
对于新业务的存储的预估,通常要考虑存量数据和增量数据两部分。
ProtonBase 的写入使用LSM(Log Structured Merge Tree),通过将随机写转为顺序写来提升写入性能。对写入的日志文件会定期的进行compaction操作来提升写入和读取性能。compaction发生期间数据会有一定膨胀,compaction完成后数据会进入稳态。
存量数据
ProtonBase 具有高效的编码和压缩机制,通常情况下能将数据从原始的csv格式压缩至三分之一。在列存场景下,取决于各列的取值的基数。如果取值的基数比较低,ProtonBase 内自适应 dict encoding 压缩会有比较好的压缩效果。因此可能有更低的压缩率。
存量数据预估方法:
- 评估现有数据的原始大小
- 根据数据特征预估压缩率(通常为 1/3,但需根据实际情况调整)
- 考虑 compaction 期间的数据膨胀(通常为 1.5-2 倍)
增量数据
按照每天实际业务增量的行数,和每行的size进行预估。比如每天业务上增量1000万行,每行100B, 考虑到压缩率,那么每天增加的存储size约为10M * 100B * 0.33=330MB。
增量数据预估方法:
- 分析业务增长趋势和历史数据
- 预估每日新增数据量
- 考虑数据生命周期管理策略(如数据归档)
计算资源
ProtonBase 的计算资源按照Unit粒度进行扩展。计算资源的预估可以参考如下标准:
-
对于update的事务型写入的数据场景,按照500GB左右 (压缩后存储size,下同) 1个计算Unit的方式进行预估。
-
对于批量写或者低写入量、数据大多为冷数据、查询只涉及最近一段时间(1天/1周/1月)的业务场景,可以适当调大Unit和数据size的对应关系。比如 1 Unit对应1TB-2TB。但通常不建议1个Unit 对应超过 2TB 的数据量。
计算资源规划建议:
- 根据业务类型选择合适的 Unit 配置
- 考虑业务高峰期的负载需求
- 预留一定的资源余量以应对突发流量
使用示例
示例 1:电商企业供应链场景
某电商企业供应链场景,数据持续有写入和查询操作。写入QPS平均5K/s, 峰值28K/s,数据量1.5TB。平均每行100B,单日增量压缩前约在43GB,压缩后约14.3GB。按照存量和增量数据规模评估,使用4Unit。
示例 2:工业物联网企业大数据场景
某工业物联网企业大数据场景,数据每天固定时间段做批量同步。存量数据20TB, 每天增量数据300GB,压缩后约100GB。按照存量和增量数据规模评估,使用16Unit。
容量规划最佳实践:
- 定期回顾和调整容量规划,适应业务变化
- 结合监控数据验证预估的准确性
- 制定应急预案,应对资源不足的情况
- 考虑数据增长趋势,预留扩展空间