我几乎不知道如何让多台服务器协同工作。目前,我一直在研究 Rackspace 提供的云服务器。
人们在谈论这些类型的“云”服务器时,总是让人觉得它很容易扩展。现在垂直扩展很容易。但我说的是水平扩展。我知道使用云服务器,您可以保存服务器的映像,并使用完全相同的映像启动新服务器。您如何利用拥有多台服务器?您如何确保应用程序中的数据库完整性?人们把它说得很简单,好像您只需在这里添加几个,在那里取几个就可以了。
此外,使用云服务器,您可以从 256mb 扩展到 16gb 左右。在什么情况下水平扩展比垂直扩展更好?我猜想一个瓶颈是磁盘,水平扩展会更好,这样您就可以拥有更多磁盘。但也许我错了,你应该先垂直扩展,然后再水平扩展?
答案1
你没有在任何地方说出你的应用程序的性质,但我猜它是一个数据库支持的网站。
为了获得最简单的水平可扩展性,您需要在开发时牢记“无共享”。这意味着应用程序的所有内容和状态必须是静态的(图标、JS、HTML、模板等),或者是应用程序外部的(通常是数据库、存储,如果您管理用户文件)。
要达到这个目的,首先要将其分为“层”:后端存储,中间层(Web 应用程序),前端(理想情况下只是一个负载均衡器)
如果正确执行此操作,您可以添加任意数量的 webapp 服务器,以访问同一数据库服务器。当然,在某个点之后,数据库将成为瓶颈。设计良好的应用程序应使用快速缓存,以避免在必要时访问数据库。memcached 在这里很棒,因为您可以向每个 webapp 服务器添加一个实例,同时仍保留一组统一的键/值对。这为您带来了很多可扩展性。