如何将系统从每秒 1 个请求扩展到每秒数千个请求

dre*_*der 1 architecture scale system-design

一般系统设计问题:有一个应用程序使用纬度、经度查询数据库地址,并调用 API 来格式化地址。目前这些请求的处理速度为每秒 1 个请求,如何将我们的应用程序扩展到每秒 1000 个请求。

Cos*_*iță 6

您需要使您的系统分布式。您将应用程序嵌入微服务中,然后水平扩展以达到您需要的流量水平。进一步来说:

  • 应用程序可以处理的请求数量有限(假设每秒 100 个请求),因此您需要添加应用程序的 10 个副本才能每秒处理 1000 个请求。
  • 您还需要在应用程序前面有一个负载均衡器,以便在副本之间均匀分配负载
  • 一旦规模进一步扩大,数据库将成为瓶颈,因此您可能需要考虑该领域的优化,例如:
    • 在 NoSQL 模型上设计数据库,因为纬度/经度数据的平面模型可以很好地映射到 NoSQL 存储格式,这在可扩展性和分布性方面具有很多优势。
  • 此外,一旦您扩展应用程序,用于格式化地址的 API 也将成为瓶颈,因此如果是第三方,您需要检查吞吐量限制并在扩展期间考虑它们,或者如果它在您的控制范围内,您可以按照类似的过程来扩大规模。