m******0 发帖数: 222 | 1 请大家讨论一下吧!
我能想到的,在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的情况
我能想到的就这些,抛砖引玉,请大家讨论、指正补充。
|
m******0 发帖数: 222 | |
c***w 发帖数: 134 | 3 一上来就是这么大的框架,好像用户量一定很大似得。
先问日活跃用户是多少再设计。
少了就弄最简单的单机设计就好了吧。 |
R*********4 发帖数: 293 | 4 [在 mitu9090 (mitu) 的大作中提到:]
:请大家讨论一下吧!
:
:...........
呵呵 看到您以5千米为一个Grid。
做过地图信息相关的就知道您没碰过,美国其实很大的,经纬的信息本身就是分好格的
,用二分法和star这类基本算法都会比你的要快。
其实没必要一开始就弄这种,您可以先自己试着搭建实时校车都比这个有意义 |
g**t 发帖数: 49 | 5 重点是把dispatcher从其他后端分离出来。再深入一点可以看看ringpop的设计思想
网上有关于Uber架构的视频
【在 m******0 的大作中提到】 : 请大家讨论一下吧! : 我能想到的,在real面试中我可能会这么说: : 1. 首先看用户和司机在app上都需要什么功能: : 1)用户:设目的地、list附近的车, : 2)司机:查看顺路乘客、查看附近乘客、自动报单供选择、直接分配单子 : 2. 根据需求,系统分为几层: : 1)load balancer : 2)web server : 3)数据存储(包括user/driver的meta data,位置信息,历史订单与奖励信息、聊 : 天信息)
|
m******0 发帖数: 222 | 6 谢谢!
这个5km我的想法是,在纽约或者北京这种density很大的地方,使用。要是在alabama
州,可以一个city一个block就够。
你说的二分法和star是搜索算法吧,怎么应用在记录和匹配user与driver的地理位置上
呢?
【在 R*********4 的大作中提到】 : [在 mitu9090 (mitu) 的大作中提到:] : :请大家讨论一下吧! : : : :........... : 呵呵 看到您以5千米为一个Grid。 : 做过地图信息相关的就知道您没碰过,美国其实很大的,经纬的信息本身就是分好格的 : ,用二分法和star这类基本算法都会比你的要快。 : 其实没必要一开始就弄这种,您可以先自己试着搭建实时校车都比这个有意义
|
g**t 发帖数: 49 | 7 为什么不用geohash?据说Uber用的是Google s2 cell
alabama
【在 m******0 的大作中提到】 : 谢谢! : 这个5km我的想法是,在纽约或者北京这种density很大的地方,使用。要是在alabama : 州,可以一个city一个block就够。 : 你说的二分法和star是搜索算法吧,怎么应用在记录和匹配user与driver的地理位置上 : 呢?
|
G******n 发帖数: 572 | |
s****n 发帖数: 199 | |
a*****u 发帖数: 1712 | 10 司机:查看顺路乘客、查看附近乘客、自动报单供选择、直接分配单子
功能太多了,uber也只有直接分配单子一个功能 |