如何扩展PHP应用程序(服务器,mysql,memcache)

2022-08-31 00:55:12

我目前正在为瑞士的一个社交项目创建一个网站。

在用户溢出之前,我想准备应用程序以进行缩放。

我自己回答了很多问题,但有些问题还剩下。

我解释我想做什么。


第一

一开始,应用程序将只有一个服务器(短时间),带有DNS,PHP,Mysql,Data和memcache。


第二

然后我会把它们分成两半

  1. DNS, Mysql, memcache
  2. 数据,菲律宾比索

第三

这就是问题所在,我不知道如何在这里做到这一点以保持应用程序正常运行。

我可以做:

  1. 前面板 : 负载均衡器, 记忆缓存, DNS
  2. 网页 1 : PHP, 数据
  3. 网页 2 : PHP, 数据
  4. Mysql

这就是方案,所有PHP会话都保存在数据库中。

但是,如何同步数据?我是否运行Rsync以使它们保持最新状态。我是否将它们放在单独的磁盘(网络磁盘)上以确保?但是在这种情况下,如果用户上传,我该怎么办?

如果网站取得更大的成功,我们必须继续进行更大的结构,它不会在更新时造成一些延迟吗?

还是直接转到亚马逊的网络服务是一件好事?

一些信息我使用codeigniter作为框架。我使用linux作为Web服务器(现在没有选择发行版,但应该是Debian)

提前感谢您的回答。


答案 1

根据维基百科,瑞士有460万德语使用者,150万法语使用者和50万意大利语,罗曼什语和其他语言使用者。所以我怀疑你会发现一台服务器会满足你的需求。猜猜每个月或每天都会访问您网站的人口百分比,以便在遇到扩展问题之前了解您可以获得多大。

所以,我认为你还不需要担心扩展!奖励:您不花时间担心此问题,您可以使用它来为用户解决其他问题。


答案 2

扩展Web服务有一些常见的途径,按照Flickr和Facebook等网站似乎使用的顺序排列:

  • 根据概念拆分服务器(API、登录名、媒体文件、广告、静态页面、动态页面)
  • 根据不需要JOINed的概念(登录,长期报告,页面数据等)拆分数据库
  • 编译/优化您的PHP和其他资源(精灵,编译的css,zend)
  • 添加缓存(前端、后端)
  • 添加委派(轮循机制等)

但是,在缩放之前,请进行测量。设置测试,计算容量,并在需要之前不要进行优化。


推荐