互联网面试宝典

您现在的位置是: 首页 >

问题详情

有100w滴滴司机,司机每3s上报一次自己的位置,请你设计一个系统,能够实时的将司机的位置存储进系统,并且能够给另外一个系统实时显示路径(每3秒刷新一次最新点),历史数据要能够随时可以查询,说说你的思路和实现?

面试宝典 2023-06-12 Web前端开发工程师 52
思路:

1. 司机每3s上报一次位置数据,考虑采用消息队列将数据存储到数据库;

2. 数据库可以选择使用MongoDB等NoSQL数据库,因为该场景下数据量非常大,而且位置数据的格式十分灵活,可以根据需求进行快速扩展;

3. 反向地理编码:将经纬度转换成具体位置信息,可以考虑使用第三方API(如高德地图API、百度地图API等)进行实现;

4. 路径规划与显示:将司机的位置数据实时更新到数据库中。可以使用高德地图或百度地图提供的JavaScript API进行实现,并每3s刷新一次,显示最新的司机位置数据。

5. 历史数据查询:根据业务需求,可以提供多种历史数据查询方式,如按时间区间查询、按司机ID查询等。可以通过数据库索引来提高查询效率。

6. 系统可靠性:可以通过多节点部署、数据备份等方式来确保系统的可靠性和高可用性。

实现:

1. 消息队列:使用Kafka或RabbitMQ等流行消息队列

2. 数据库:使用MongoDB等NoSQL数据库

3. 反向地理编码:使用高德地图API等

4. 路径规划与显示:使用高德地图或百度地图提供的JavaScript API

5. 历史数据查询:实现多种历史数据查询方式

6. 系统可靠性:多节点部署、数据备份等方式。