分布式数据库的性能评测的两个问题:并发能力能否随节点增加而线性扩展,以及在各种故障和并发情形下数据是不是可靠。强一致性一般以牺牲部分吞吐量为代价,评测目的就是在两者之间找到业务可接受的平衡点。
并发能力评测不只是测一个TPS峰值,更要测试系统的可扩展性。最好的分布式数据库应呈现平坦曲线:当并发用户数、数据量和集群规模成比例增加时,完成固定工作集的时间应保持恒定。实际测试中,节点扩展方面最能暴露问题-总资源固定,仅将计算和存储拆分到更多节点上,此时任何性能衰减都源于节点间的协调开销。常用的标准测试工具有TPC-C和YCSB。TPC-C模拟完整的订单处理流程,包含五种混合事务类型,能真实反映数据库在金融、电信等高并发交易场景下的承载能力,也是测量OLTP性能的行业标准。YCSB则更轻量,支持多种NoSQL和云数据库,通过可配置的读写比例和数据分布来模拟不同工作负载。此外Sysbench因其多线程架构和Lua脚本可定制性,常用于快速获取数据库的初步性能印象。
一致性的评测则更为复杂,因为一致性问题往往只在并发和故障叠加时才会暴露。Jepsen是业界公认的一致性证实框架,通过在测试过程中人为注入网络分区、进程崩溃、时钟偏移等故障,来证实系统在异常状态下是不是仍遵守其承诺的隔离级别。典型的Jepsen情形包括Bank检查-并发执行账户间转账的同时进行全表读取,证实总余额始终不变;还有Long-fork情形-专门检验可串行化隔离级别下是不是出现写偏差别常。许多分布式数据库已将Jepsen测试集成到CI流程中,每个版本发布前自动执行,防止一致性回退。
事务隔离级别的选择对并发能力影响显著。测试数据表示,从读已提交到可重复读再到可串行化,并发QPS呈阶梯式下降,响应时间则相应上升。因此在满足业务正确性的前提下,选择较低的隔离级别并配合乐观锁或分布式事务中间件,是兼顾性能和一致性的方法。
评测先需要准备和生产环境相近的测试集群,配置好监控栈。压测时按照先标准后混合、先轻载后高压的顺序,逐步增加并发线程数,记录TPS、P99延迟、节点间复制延迟以及事务冲突率的变化趋势。故障注入是必不可少的步骤:随机杀死某个数据库节点或注入网络延迟,观察集群的恢复时间和业务成功率。将评测结果转化为可量化的容量规划根据和自动扩缩容阈值,而不是仅仅一份测试报告。唯有将性能和一致性证实嵌入不断交付流水线,才能在每一次变更时都得到可靠的质量反馈,保证分布式数据库在真实生产流量下的稳定运行。