我在 Stack Overflow 和其他博客上看到的内容:
https://hackernoon.com/database-scaling-horizontal-and-vertical-scaling-85edd2fd9944
https://stackoverflow.com/questions/27157227/can-relational-database-scale-horizontally
概念:多租户 Web 应用程序(CRM)
总结了上面提到的所有博客后,我感到很困惑。我有以下场景
- 单个产品拥有多个 EC2 实例和 RDS 实例 - 我们在这里计划一个 EC2 实例将有一个 RDS 和故障转移计划。让我们来看一个图 - 25 个租户请求将在一个 EC2 实例中处理,数据将在相应的 RDS 中管理。另一个 EC2 实例和 RDS 将为另一组 25 个租户管理。每个 EC2 实例将具有相同的代码库。
我们可以说 - 这是水平扩展吗?如果不是,应该怎么做才能获得精确的水平扩展?
答案1
水平扩展通常意味着你有一个舰队无差别服务器每个服务器都可以提供服务任何请求。您可以通过添加或删除更多相同的服务器来扩大或缩小容量。
和垂直扩展您只需将一台服务器升级到更大容量,例如具有更多 CPU 和更多内存的更大实例。
对于 AWS 中的水平扩展,您通常会有:
- 舰队无状态服务器它们都以相同的方式配置,并且不存储任何用户数据并且可以自动添加而无需额外配置,并且可以随时删除而不会丢失任何数据。
- 用户数据存储在数据库(例如 RDS),共享文件系统(例如 EFS)或对象存储(例如 S3),而不是实际的服务器上。
- 负载均衡器将负载大致均匀地分布在各个服务器(例如 EC2 实例、Fargate 容器等)上
- 自动的容量扩展例如根据实际负载添加或删除服务器。
定义可能有所不同,但我不会将您的设置称为水平缩放,因为您只是添加了另一个实例来支持独立工作量(您的另一组租户)并且没有添加更多容量来支持与第一个节点相同的工作负载。
希望有帮助:)