【问题标题】:How do Google check Username availability so fast?Google 如何如此快速地检查用户名的可用性?
【发布时间】:2020-09-28 04:05:39
【问题描述】:

在创建 gmail 帐户时,它要求我们输入用户名。当我们输入用户名和密码时,我们点击下一步按钮。在几秒钟内,它会给出类似“该用户名已被占用。尝试另一个。”之类的错误。有数十亿个gmail帐户。我的问题是,谷歌使用什么算法来确定用户名是否已经被使用,以及它是如何在 1-2 秒内给出响应的。

【问题讨论】:

  • @Emma,您好,我已经通过 Bloom Filters,但它也说它不是 100% 有效的。
  • 布隆过滤器可能会阻止您注册可用的名称,但绝对不会让您注册已被占用的名称。所以检查 gmail 名称很好。
  • 在一台配备 4TB 驱动器的 PC 上,您可以在 Postgres 或 Oracle 等完全普通的数据库中存储大约 100 亿个包含密码检查数据和帐户 ID 的电子邮件地址,并且该数据库可以检查任何给定的如果是旋转磁盘,电子邮件地址大约需要 50 毫秒,如果是 SSD,则速度要快得多。它将使用 B+tree 索引或类似索引来完成此操作:en.wikipedia.org/wiki/B%2B_tree

标签: algorithm caching architecture system-design bloom-filter


【解决方案1】:

Gmail 可能会向其服务器发送查询。如果它成功通过,则意味着电子邮件已经存在,否则发送错误未建立。

你可以在这里阅读more

【讨论】:

    【解决方案2】:

    如果您检查注册页面并查看,对于您输入的每个用户名,他们都会向其服务器发送一个请求。他们本可以在幕后实现一个布隆过滤器或任何东西,但他们确实从客户端发送了一个请求。

    一旦请求到达他们的后端,缓存所有已经存在的用户电子邮件 ID 并在缓存中查询该值并不是一项艰巨的任务。

    那些后端服务器和相应的缓存可以在地理上分布,以确保它在几毫秒内响应用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-06
      相关资源
      最近更新 更多