所有这些都说过后,我当然可以看出没有这些点真正重要的情况。
它其实并不重要(你可以很愉快地在同一台机器上运行网站和数据库),这只是扩展的最简单步骤。
这正是StackOverflow所做的-从单台运行IIS/SQL Server的机器开始,然后当其开始承载大量负载时,购买第二台服务器并将SQL服务器迁移到其中。
如果性能不是问题,请不要浪费金钱购买/维护两个服务器。
另一方面,提到不同的博客作者Scott(Telligent的Watermasyck),他们发现大多数用户可以通过将数据库放在与网站相同的机器上(使用Telligent的Community Server)来加速网站。然而,在他们客户的情况下,通常数据库和Web服务器是该机器上唯一的应用程序,并且网站并没有使机器过度紧张。然后,不需要跨网络发送数据的效率弥补了增加的压力。
Tom在这方面是正确的。其他一些原因是,它不具备成本效益,并且存在额外的安全风险。
Web服务器与数据库服务器有不同的硬件要求。数据库服务器需要大量内存和快速的磁盘阵列,而Web服务器只需要足够的内存来缓存文件和频繁的数据库请求(取决于您的设置)。关于成本效益,这两个服务器不一定会更便宜,但性能/成本比应该更高,因为您没有两个不同的应用程序竞争资源。因此,您可能需要花费更多的钱购买一个既适合两者又提供与两个专门服务器等效性能的服务器。
安全问题是,如果单台机器被攻击,Web服务器和数据库都容易受到攻击。有了两个服务器,您就有了一些喘息的时间,因为第二个服务器仍然是安全的(至少一段时间)。
另外,还有一些可扩展性好处,因为您可能只需要维护几个数据库服务器,由许多不同的Web应用程序使用。这样,您需要做的升级或修补程序以及性能调整的工作就会更少。我相信,在单台机器的情况下,有一些服务器管理工具可以使这些任务更容易。
我认为最重要的因素应该是性能。无论是Web服务器/应用程序代码还是SQL Server,都将在内存中缓存常请求的数据,如果它们在同一个内存空间中运行,则会降低缓存性能。
还没有提到的一个因素是负载均衡。如果你把网页服务器和数据库视为两台不同的设备,你可以优化网络传输次数,并且在需要增加第二个网页服务器或第二个数据库引擎时也更容易操作。
我可以从第一手的经验中讲述:将Web服务器和数据库放在不同的机器上通常是一个好主意。如果您有一个资源密集型的应用程序,它很容易导致机器的CPU周期峰值,从而基本上使机器停止运行。但是,如果您的应用程序对数据库的使用有限,那么它们共享一个服务器可能不是什么大问题。