【问题标题】:How does Uber send new ride requests to drivers?优步如何向司机发送新的乘车请求?
【发布时间】:2021-09-18 12:33:48
【问题描述】:

我很好奇 Uber 可能使用什么样的系统设计来向司机发送新的行程。 新的行程请求不断在优步司机的电话上弹出。要考虑的事情是:-

  • 请求是按请求的位置拆分发送的吗?
  • 他们是否使用永久开放的单向套接字连接?
  • 还是应用程序一直在查询数据库?

如果有人可以提供可以使用 nodejs 服务器和 android 应用程序前端(当前偏好)实现类似架构的库示例,那也会很有帮助。

【问题讨论】:

  • 您可以使用 Firebase 云消息传递轻松完成此操作。你的 1) 是真的,你的 2) 和 3) 不是真的。
  • @AIMINPAN 查看 DISCO 架构,似乎 UBER 使用 websocket API 与驱动程序保持开放连接。

标签: android websocket architecture uber-api


【解决方案1】:

我曾经是优步的软件工程师。那是很久以前的事了,但我想我可以回答你的问题:

  1. 从乘客到司机的乘车请求由乘客所在的城市分片。匹配算法无需考虑世界其他地区的司机。

  2. 在过去,优步司机和乘客应用程序每 4 秒左右轮询一次服务器。服务器接收骑手和司机的新 GPS 位置并发回状态更新。如今,Uber apps rely on persistent TCP connections--但是当移动网络不可靠时,轮询是一个重要的后备方案。

  3. 据我记得,司机和骑手应用程序不必在骑行期间每隔几秒就不断地查询我们的磁盘数据库。这类信息通常会缓存在内存中,直到行程结束。

【讨论】:

    【解决方案2】:

    要获得明确的答案,您必须从 Uber 找人来回答您的问题,否则我们所能做的就是根据我们认为最佳实践/有意义的方式进行推测。

    也就是说,网上有很多文章谈论 Uber 是如何构建的,粗略的搜索提供了如下链接:

    1. UBER system design
    2. Uber Architecture and System Design

    我不能保证这些文章的质量(第一个的作者也做了一个视频 - 文章中的链接),但乍一看它们看起来相当不错,因为它们似乎进入了一些深度并且看起来像他们(可能)会涵盖您提出的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-14
      • 2020-11-17
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      相关资源
      最近更新 更多