原文地址:http://eng.uber.com/mezzanine-migration/
整个文章结构比较清晰
1.目标:为什么要做这件事情
2.关键点:解决这件事情的关键点
3.怎么做:解决方案和设置milestone
4.效果
文章内容概括:
对于快速增长的业务需求,需要对读写trip的架构进行升级,针对原来架构的升级需要考虑以下内容:
1.健壮性(数据不丢,有备份,现有数据的复制,出错容易定位,专业的运维)
2.存储、读写的横向可扩展
3.写的可靠性和短期批量读的可靠性
4.支持第二索引,可以用city,user等各种角度来读数据
5.线上无宕机时刻
最终采取的决策是,使用无schema的存储数据结构,使用uuid做为可横向扩展的索引以及使用mysql来做存储
1.shard,mysql的行级存储,通过扩展mysql进行数据的shard
2.append-only模式
3.有缓冲的写,当写的速度慢或者写存储挂掉时,可以通过写在可缓冲的地方,后续再通过回放的方式来完成数据正确的存储
4.mysql天然支持二级索引
剩下的就是一些细节问题,通过双写等常用的方式来保证线上系统的正确性。
网友评论