Uber 问题

  1. driver 上传的信息是如何存入DB的 (geohash/ driver id set/ ts), 因为有timestamp存在只能是同一时间的信息存在一个row里,那么是否是server向 driver每四秒发送信息请求更新位置(这样一组的回复可以用一个ts),而不是driver每四秒主动send location?
  2. 如果是rush hour 有很多司机同时在热门地区,driver id set可能会非常大,会不会对性能产生影响?如果会,如何优化?
  3. 无论是whatsapp or uber 都在开始进行了峰值计算, 但是后面好像没有用到这些计算结果,这些计算就只是考点之一还是对系统的设计产生影响? 例如如果我们设计的uber只面向部分人群(例如婚礼宴会接送), 并没有很高的QPS,会对我们的系统设计有什么影响?
    感谢老师!
  1. driver geohash table 用的是 redis sorted set geohash是key, 一组(driver id, ts)pair 为 value。不是一组 driver id set 对应一个 ts。Driver 每四秒主动发送位置信息。
  2. geohash 在热门地区会范围比较小
  3. 你可以说服务不是高QPS的服务,但仍然需要不止一台机器,需要做scaling。

课上有讲到geohash作为sharding key,请问具体来说,如果热门地区出现,sharding的方式会动态调整么?如何用具体的措施来控制geohash的范围比较小?

比如可以这样操作,如果我们检测出一个区域车总是比较多,我们可以对一个区域使用位数更多的 Geohash 去表示一个更小的区域,这个位数可以存在另一张表里。在司机乘客匹配的时候,我们可以利用位数信息,锁定大的 geohash 区间的时候,知道我们具体存 driver id set 的 geohash 是更小的 geohash。
一般市中心会车多一点,郊区会少一点,sharding 自动地动态调整不是很必要。

1赞