随着互联网业务的发展,无论是企业开发者,还是个人开发者,产品能力的不断发布,都会随之而来带来大量的新增数据,数据的新增则意味着作为服务商的云开发需要为开发者们做好数据的存储和备份,以及在合适的时候对集群进行升级、优化。在优化的过程中,就涉及到了迁移的问题。
一般来说,业界针对升级和迁移,会提供热迁移和冷迁移两种方案:
- 冷迁移:冷迁移需要对数据库先进行停机,等迁移完成后,再重启数据库。
- 热迁移:热迁移无需对数据库进行停机,整个迁移过程中,数据库可以持续对外提供服务。用户对于热迁移无感知。用一个比喻来说,就是有一个开着水龙头往里注水的水池,热迁移做的事情是将这个水池子里面的水完整地倒入另外一个水池
云开发作为基础服务提供商,是无法进行冷迁移的,因此,对于云开发来说,思考如何在现有的架构基础之上,做好热迁移势在必行。
云开发数据库架构
想要对云开发的数据库进行热迁移,首先,需要理解云开发数据库的底层架构。
简单来说,云开发的数据库由一组 Keeper 和 Agent 组成的接入层直接对用户提供服务,Keeper 来完成鉴权操作,Agent 负责维护 Keeper 到底层数据库的链接池,用户的请求会打散并分发