![如何扩展 Web 应用程序 - 常见模式](https://linux22.com/image/551287/%E5%A6%82%E4%BD%95%E6%89%A9%E5%B1%95%20Web%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%20-%20%E5%B8%B8%E8%A7%81%E6%A8%A1%E5%BC%8F.png)
一方面考虑 iis 和 mssql,另一方面考虑 apache 和 mysql。扩展 iis 和 apache 时是否采用相同的策略?
我得到了基本的扩展内容——分离 Web 层和数据库层,然后是数据库冗余等...
但是如何扩展在 iis 上运行的应用程序?
例如,它以前在一台机器上运行,现在我们想让它在多台机器上运行?对于托管在 Apache 上的东西也有同样的问题吗?让我们看看 wordpress(常见示例) - 如何使博客请求可以在云中的多台(虚拟)机器上处理?
希望我的问题至少清楚一点,如果不清楚,请询问。
基本上,我在寻找扩展 Web 应用程序时的模式。有吗?有相关信息的链接吗?
尤其是基于云的。
谢谢
答案1
一般来说你会有一个网络农场:
- 浏览器向网站发送请求
- 网站 DNS 解析到负载均衡器 (LB)
- LB 将请求转发到多个 Web 服务器之一
LB 还将监视 Web 服务器,以便忽略故障的服务器。
如果不在数据库中共享,则会话等会出现一些问题,但通常情况下,这种方法效果很好。您可以将网站与单台机器分离,并获得基本的 DR 功能
答案2
好吧,你可能不会以这种方式部署 Wordpress(尽管 django 和 web2py 也是可能的)...但这里有一个想法
Google App Engine 旨在帮助开发人员部署可扩展的应用程序,人们希望 Google 在这方面的一些经验能够融入到 GAE 的结构中。以下是我从短暂的体验中总结出的突出特点:
- 独立的 Java(或 Python)servlet,可以根据需要在一组相同的非专用主机中的各个主机上启动或终止,而不是需要多个进程和特殊准备环境的庞大应用程序
- 在跨多台服务器运行的繁忙应用中,Web 浏览器可能不会每次都与同一主机匹配……因此需要编写 servlet 来处理该问题
- 对于可扩展的应用程序,开发人员应该测试并确保大多数请求将在 1 秒内完成处理(GAE 允许 30 秒;但会标记超过 1 秒的请求,他们解释说,在决定 GAE 如何处理您的应用程序时,会考虑亚秒级的性能目标)
- 使用易失性 RAM(memcache 服务)来帮助避免在可能的情况下搜索磁盘(存储服务)以获取热门数据请求[在传统方法中,这也可以避免创建束缚写入器的读取锁……前提是提供一些陈旧数据是可以接受的]
我还应该指出,直到最近,GAE 才将 mySQL 作为 GAE 商业类的一部分来支持...原始 DB 服务有些不同,更像是一个大型关联数组。