我正在为 Web 应用程序选择一个平台。
我了解云计算如何扩展前端服务器,但它们如何处理数据库服务器?
开发人员需要做些什么来实现这一点吗?
简短的回答:是的。
长答案:这取决于。需要进行什么样的处理?可以缩小地图吗?这类事情有很多解决方案。分布式缓存 la memcache 还可以帮助扩展后端中的许多服务。
这在很大程度上取决于您为后端选择的解决方案。一些应用程序使用混合来处理不同类型的数据。
当需要扩展时,很难使用 MySQL 或 PostgreSQL 等数据库。对于我们的项目,我们决定使用 Cassandra(在您询问的时候可能还不存在!),它允许您将数据存储在任意数量的后端计算机上。在这样做时,您还允许后端进程在完全独立的计算机上运行,这样您就可以进行各种计算,而无需降低数据库或前端(即 Apache)的速度。
我在此页面上的项目中谈到了这一点:
http://snapwebsites.org/implementation/snap-websites-processes
搜索“过程”一词。还有一个代表不同进程的图像,每个进程都可以在单独的计算机上运行(如果你有这么大的负载,你需要更多的马力):
实际上还有一些 Snap!该示例中显示的后端可以在多台计算机上运行,而一个实例处理这个网站,另一个实例将处理另一个网站。相当强大。
如果您使用的云提供商只是为您提供对虚拟机的 ssh 访问权限,则您需要实现自己的数据库扩展。如果您在 Google AppEngine、Intuit 合作伙伴平台或类似平台上运行,则可扩展性内置于提供给您的数据存储中。
基本上,云计算并没有什么神奇之处。为了获得这种内置的可扩展性,你放弃了一些自由。Google 的数据存储并没有提供完整关系数据库的所有方面,但您可以扩展到荒谬的流量。
这取决于数据库
Slicehost 使用 MySQL Cluster,Google 使用 map-reduce hype 等。取决于云提供商和他们使用的数据库
其他人只是提供一个虚拟机,您在具有私有 IP 的虚拟机上设置自己的数据库
至于如何,我最近发现了一篇专门针对这个的论文。在一次讲座中讨论过,所以虽然我对论文的内容很熟悉,但我自己并没有读过。尽管如此,讲座还是有非常有趣的想法:http ://reports-archive.adm.cs.cmu.edu/anon/2008/CMU-CS-08-150.pdf