我经常在互联网上阅读正确构建我的PHP应用程序以便它们可以扩展的重要性。
我已经构建了一个用PHP编写的简单/小型CMS(想想Wordpress,但更简单)。
我基本上有这样的网址:http://example.com/?page_id=X其中X
是我的MySQL数据库中包含网页内容的id
。
如何将我的应用程序配置为负载平衡,我只是在执行PHP读取活动。
将 NGINX 作为前门设置,将流量路由到运行相同代码的多节点,以处理example.com/?page_id=X足以“l oad balance “我的网站?
显然,在这种情况下,MySQL并没有进行负载平衡,尽管为了简单起见,这使得这个问题超出了这个范围。
答案 0 :(得分:3)
这些是用于扩展此类应用的一些众所周知的技术。
减少数据库命中率 大多数情况下,瓶颈将是您的数据库,因此请缓存最近的页面,以便减少数据库活动,可能类似于memcached。
设计您的架构,使其可以分区。 在最简单的情况下,将数据分成逻辑分区,并将每个分区存储在单独的mysql DB中。例如,Craigslist按城市划分数据,在某些情况下,按照其中的部分划分数据。在您的情况下,您可以非常简单地按ID进行分区。
管理php会话 如果您使用会话,将ngnx放在php网站前是行不通的。负载均衡php确实存在问题,因为会话持久存储在本地存储上。因此,您需要明确地进行会话管理。传统的解决方案是使用memcached来存储和查找某种cookie。
不要过早优化。 专注于将您的应用程序取出,以便下一代当前用户获得最佳体验。
注意:您的主要潜在痛点将在here on SO
进行讨论答案 1 :(得分:2)
不,如果您不需要,扩展您的应用程序并不重要。
我对此的看法是:
然后,如果你的系统无法处理这么多的流量,并且你已经抛出了(合理的)资金可以购买的所有硬件,那么你需要扩展。不久。
是的,扩展读取工作负载相对容易,因为您只需对只读数据库副本执行读取操作。挑战在于扩展写入工作负载。
很多网站写的很少,即使他们真的很忙。
答案 2 :(得分:0)
正确的方法是使用某种负载均衡器,例如:
这样做只会将某个用户会话转发到某个服务器,因此您不必担心会话以及它们的存储位置。你需要担心的是,如果2台服务器在两台不同的机器上运行,如何分配文件系统,特别是如果你大量使用文件系统。希望上面这篇文章有帮助...