第1页
MongoDB在快的打车关键业务中的应用
快的打车架构师:欧阳康
第2页
业务发展概况
公司成立,
8月“快的打车”上线运营
覆盖城市:70+
收购“大黄蜂”,开启商务车业务
“一号专车”上线
日订单:600w+
“一号专车”覆盖全国32个城市
“打车大战”
第3页
Update 4w+/s
Mongo应用之一:LBS
LBS
Http Server
Tcp Server
LBS Query 1w+/s
快的 LBS主要应用场景
第4页
Mongo应用之一:LBS
LBS可选方案
伸缩性难以实现
实时更新难以实现
第5页
Mongo应用之一:LBS
MongoDB as LBS Server
对实时更新支持较好
通过副本集可以很容易地实现读写分离及负载均衡
开发、部署较简单
快的LBS Mongo集群结构
第6页
Mongo应用之一:LBS
MongoDB as LBS Server
读写都很密集(4w+/s写,1w+/s读)时出现的问题:
从服务器 cpu负载急剧上升
查询性能急剧降低(大量查询耗时超过800毫秒)
查询吞吐量大幅降低
主从复制出现较大的延迟
原因:锁等待
建议:
1.行锁
2.实现类似于DB隔离级别的功能,低隔离级别下写无需加锁
第7页
Mongo应用之一:LBS
MongoDB as LBS Server
分片
第8页
Mongo应用之二:海量记录存储
乘客历史目的地
订单记录
快的业务数据概况(截止2014.11.16)
乘客数:2.7亿
历史目的地记录:42.8亿
总订单数:83.6亿
第9页
Mongo应用之二:海量记录存储
120 shards
2 nodes/shard
第10页
MongoDB不足之处
写密集时性能下降较大(完全依赖操作系统VM,未实现 WAL)
不支持双向同步(灾备时需要做数据的双向同步)
增量抽取数据到其他存储系统(HBASE等)的支持较弱
第11页
Thanks!