Uber 如何向司机发送新的乘车请求?

How does Uber send new ride requests to drivers?

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

如果有人可以举例说明可以使用 nodejs 服务器和 android 应用程序前端(当前首选项)实现类似架构的库,这也会有所帮助。

要获得明确的答案,您必须让 Uber 的人来回答您的问题,否则我们所能做的就是根据我们认为的最佳做法/合理性进行推测。

也就是说,网上有一堆文章在谈论 Uber 是如何构建的,粗略搜索 link 诸如此类:

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

我不能保证这些文章的质量(第一个的作者也做了一个视频 - link 在文章中),但乍一看它们看起来不错,因为它们似乎去深入研究,看起来他们会(可能)涵盖您提出的问题。

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

  1. 来自骑手到 driver 的乘车请求按骑手所在的城市进行分片。匹配算法不需要考虑世界其他地区的drivers。

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

  3. 据我所知,driver 和骑手应用程序不必每隔几秒 [=] 持续查询我们的 on-disk 数据库26=]一程。此类信息通常会缓存 in-memory 直到骑行结束。