问题描述
一般系统设计问题: 有一个应用程序使用经纬度查询 DB 的地址,并进行 API 调用以格式化地址。目前这些请求的处理速度是每秒 1 个请求,您如何将我们的应用程序扩展到 1000 个请求/秒。
解决方法
您需要使您的系统分布式。您将应用程序嵌入到微服务中,然后横向扩展它以达到您需要的流量水平。更具体地说:
- 该应用可以处理的请求数量有限(假设为 100 个请求/秒),因此您需要添加 10 个应用副本才能处理 1000 个请求/秒。
- 您的应用前还需要一个负载均衡器,以便在副本之间均匀分配负载
- 一旦扩大规模,数据库将成为瓶颈,因此您可能需要考虑在该领域进行优化,例如:
- 在 NoSQL 模型上设计数据库,因为纬度/经度数据的平面模型非常好地映射到 NoSQL 存储格式,这在可扩展性和分布性方面具有很多优势。
- 此外,一旦扩展应用程序,您用来格式化地址的 API 也将成为瓶颈,因此如果它是第三方,您需要检查吞吐量限制并在扩展过程中考虑它们,或者如果它在您的控件,您可以按照类似的程序对其进行扩展。