发信人: mitu9090 (mitu), 信区: JobHunting
标 题: design uber这题到底怎么答!
发信站: BBS 未名空间站 (Wed Feb 24 04:10:05 2016, 美东)
请大家讨论一下吧!
我能想到的,在real面试中我可能会这么说:
1. 首先看用户和司机在app上都需要什么功能:
1)用户:设目的地、list附近的车,
2)司机:查看顺路乘客、查看附近乘客、自动报单供选择、直接分配单子
2. 根据需求,系统分为几层:
1)load balancer
2)web server
3)数据存储(包括user/driver的meta data,位置信息,历史订单与奖励信息、聊
天信息)
4)逻辑处理(user和driver的match,driver在接user的路上信息推送、奖励分配)
3. 具体每层系统的设计:
1* load balance:
1)按app的IP地址分配地理位置最近,或者latency最小的web server
2)在人口密集地(NY、BEIJING),选负载较少的server
2* web server层
1)nothing special
3* 数据储存和设计
1)user/driver的meta data存在key-value的cache中,如memcached,后面的
permanent storage用SQL with replica。全国的信息可以centralize一份。
2)位置信息,储存结构为网格化,即按照经纬度把位置分为5km见方的grid,用key-
val结构的cache存,双向存储(user/driver为key、position为value,然后position
为key,user为value)。不需要后面permanent storage支持。cache使用replica。按
照地区设置server。
3)历史订单与奖励信息,基本同(1),不需要设置key-value cache,直接用SQL存
,因为不要求快速查询,奖励信息如优惠券等可以offline计算。
4)聊天信息,等同(3)
4* 逻辑处理层
1)user/driver match的logic在本地server做,奖励信息计算等在全国数据库中
offline做。
2)处理移动端offline的情况
我能想到的就这些,抛砖引玉,请大家讨论、指正补充。
Thursday, February 25, 2016
design uber这题到底怎么答!
http://www.mitbbs.com/article_t/JobHunting/33150121.html
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment