MongoDB驱动快的打车:关键业务中的挑战与解决方案

需积分: 16 4 下载量 119 浏览量 更新于2024-09-09 收藏 418KB PDF 举报
"MongoDB在快的打车关键业务中的应用分享由快的打车架构师欧阳康在2014年的MongoDB北京会议中进行。快的打车自2012年成立以来迅速扩张,从最初的出租车服务发展到包括商务车服务的“一号专车”,业务量快速增长。2014年期间,日订单量达到600万,并覆盖全国32个城市,经历了激烈的市场竞争,如“打车大战”。 在快的打车的业务中,MongoDB被应用于两个关键场景:地理位置服务(LBS)和海量记录存储。对于LBS,MongoDB作为主要的数据存储解决方案,提供了实时数据更新的支持,通过副本集实现了读写分离和负载均衡,简化了开发和部署流程。然而,随着业务规模的扩大,当查询吞吐量增加,尤其是写入操作高达每秒4万次,读取操作达到每秒1万次时,MongoDB集群面临挑战。这导致服务器CPU负载激增,查询性能下降,查询延迟增大。 具体问题表现为锁等待现象,特别是行锁的存在限制了并发写入性能。为解决这个问题,欧阳康提出了采用类似数据库隔离级别的优化策略,允许在低隔离级别下进行无锁写入,以提高写入效率。此外,他还讨论了使用分片技术来处理庞大的数据量,快的打车采用了120个shard节点,每个shard由2个节点组成,通过mongos进行路由,有效地管理了100万以上的记录和700GB的数据量。 对于海量记录存储,例如乘客的历史目的地记录和订单记录,MongoDB以其高效性和扩展性满足了需求。截至2014年11月16日,快的打车已积累了2.7亿乘客、42.8亿历史目的地记录和83.6亿订单数据。通过MongoDB,快的打车能够快速响应大规模查询,确保服务的稳定性和数据一致性。 总结来说,MongoDB在快的打车的关键业务中发挥了重要作用,支撑了其快速发展的地理位置服务和海量数据存储,同时也面临着随着业务增长而带来的性能优化挑战。通过不断的技术调整和实践,快的打车成功地利用MongoDB的优势,应对了业务需求的复杂性。"