我正在创建一个 php 应用程序,需要能够扩展到“100 万用户”。我知道这个问题对于应用程序来说是主观的,但我很好奇哪种类型的通用设置是最佳实践。
目前我已经设置了 Amazon EC2 Mysql 集群数据库,并且有 2 个 Web 应用程序服务器负载平衡。
随着用户和负载的增加,我计划增加 EC2 实例的功能,然后根据需要添加应用程序和 MySQL 服务器的新实例。
这是解决问题的标准方法吗?Foursquare、Facebook 等公司如何处理 IT 基础设施的扩展?
答案1
我目前在 Amazon 上运行了几个 PHP 网站。我在处理 PHP 应用程序的 EC2 实例前面配置了一个 ELB。然后我有一个 ElastiCache 集群来减轻应用程序对数据库的访问。最后,我为数据库使用了一个多可用区的 RDS MySQL 实例。随着负载的增加,我可以增加 ELB 后面的 EC2 实例数量。如果数据库调用速度变慢,我可以向 ElastiCache 集群添加更多节点,或者启动 RDS 只读副本以执行只读查询。
使用此拓扑,您应该能够扩展应用程序以处理您想要的任意数量的用户。只需使用您认为必要的任何监控来确定负载何时升级到需要扩展环境的程度。