使用 Twitter 工具扩展到数百万用户

Cha*_*yan -1 web-applications twitter scale

像 Buffer 这样的 Twitter 工具如何扩展到数百万用户,他们每秒必须写数千条推文?

我有一个类似的服务,我正在运行一个 cron 脚本,但是仅仅通过 50 个用户需要大约 10 秒 - 所以我想知道这种规模是如何实现的。

Gra*_*ant 5

像 Buffer 所做的任务很容易并行——您不必等待处理一个人的帖子来发布另一个用户的帖子。正因为如此,水平扩展是微不足道的——多线程和/或服务器一次处理多个用户。

他们可能使用的一些基本技巧是:

  • 多个数据库服务器 - 发布内容不必对所有服务器可用,只需那些需要处理它的服务器即可。因此,您可以拥有一个保存帐户和登录信息的主数据库,并添加一堆单独的排队帖子,以便在它们之间平衡负载。无需在服务器之间设置数据库集群或同步,因为数据不需要跨所有服务器可用。

  • 多个发布服务器 - 每个服务器将查看一个数据库,以查找准备发布和处理它们的内容。可能有多个进程/线程,以及一些控制哪个线程正在处理哪个数据库记录的方法,因此不会发布重复项。

  • 优化。如果您每秒处理数以千计的帖子,那么将发帖时间缩短 1/100 秒可大大提高速度。为了提高经常调用的代码部分的性能,可能做了很多工作。仔细的分析有助于确定代码的哪些部分需要优化,哪些不会被频繁调用而不会打扰。

基本上,不是像您的脚本那样一次处理来自一个用户的一篇帖子,而是尽可能并行处理其中的多个帖子。使用这些技术,您可以在增长时添加更多服务器。您还可以自动扩展云服务器——当您积压过多时,新服务器会自动启动以处理额外的负载。当事情停止时,额外的服务器也会关闭。