图解学习网站:https://xiaolincoding.com
大家好,我是小林。
如何扩展网站以支持数百万用户?我们将逐步为您讲解。
下图展示了简化电子商务网站的演变过程。它从单一服务器上的单体设计发展到面向服务/微服务架构。
假设我们有两个服务:库存服务(处理产品描述和库存管理)和用户服务(处理用户信息、注册、登录等)。
第 1 步 - 随着用户数量的增长,单个应用服务器已无法处理流量。我们将应用服务器和数据库服务器分别放在两台服务器上。
第 2 步 - 业务继续增长,单个应用服务器已经不够用了。因此,我们部署了一个应用服务器集群。
第 3 步 - 现在,传入的请求必须路由到多个应用服务器,如何确保每个应用服务器都能获得均衡的负载?负载平衡器可以很好地解决这个问题。
第 4 步 - 随着业务的持续增长,数据库可能会成为瓶颈。为了缓解这一问题,我们将读取和写入分开,将频繁的读取查询转到读取副本。通过这种设置,可以大大提高数据库写入的吞吐量。
第 5 步 - 假设业务持续增长。单个数据库无法同时处理库存表和用户表的负载。
我们有几个选择:
- 垂直分区。为数据库服务器增加功率(CPU、内存等)。它有硬限制。
- 第 6 步 - 现在,我们可以将功能模块化为不同的服务。架构就变成了面向服务/微服务。
-------- 往期好文 --------
面试官:如何设计一个分布式ID?
面试官:你知道几个网络 I/O 模型?
面试官:你项目是怎么存密码的?