Just make it scale: An Aurora DSQL story
a year ago
- #Rust
- #Database Engineering
- #Aurora DSQL
- Aurora DSQL在re:Invent大会上发布,其核心是通过从JVM转向Rust实现数据库工程的可扩展性
- DSQL的开发历程涉及对Rust技术的深度探索、工程效率优化以及对历史决策的反思
- AWS数据库产品线从Amazon RDS演进至DynamoDB、Redshift和Aurora等专用数据库,以满足多样化客户需求
- Aurora DSQL采用模块化架构,各组件专注特定任务并高效协同工作
- 水平扩展写入能力曾是技术难点,DSQL最终采用单一日志提交方案——简化写入但增加读取复杂度
- 引入Crossbar组件分离读写路径,有效解决网络带宽瓶颈问题
- 初期模拟测试显示40台主机存在性能问题,促使团队从JVM转向性能更优且内存安全的Rust
- Rust的确定性性能、内存安全机制和零成本抽象特性完美契合DSQL数据平面需求
- 团队首先用Rust重写Adjudicator组件,较原Kotlin版本实现10倍性能提升
- 选择PostgreSQL处理查询任务,同时用Rust编写扩展模块以确保内存安全并复用现有库
- 控制平面最初采用Kotlin开发,后改用Rust重写以统一逻辑并增强与数据平面的集成
- Rust的采用使系统获得稳定的尾部延迟和可预测的性能表现
- 团队通过编写内部指南和举办专题研讨会,系统性地提升Rust和分布式系统领域的专业能力
- 团队熟练后,Rust的开发效率已与Java相当,但强调其适用性需根据项目具体评估
- 选用Rust的决策基于特定需求、团队能力和运维环境的综合考量,体现了架构选择的重要性