作者 Gavin Terrill译者 王翔(Vision Wang) 发布于 2007年10月10日 下午8时48分
今天,当我们选择负载均衡时,大部分Web应用集群选择基于软件或硬件的服务器端方案,而《Digital Web Magazine》最近发表的一篇文章讨论了一家公司如何在EC2支持的应用中实现客户端负载均衡。
文章从负载均衡方案的需求谈起:
需要在应用服务器集群中分担负载; 温和地应对单个服务器的宕机; 确保在最终用户端可以把这组服务器视为一个单独的服务器。
作者朱磊(音译 Lei Zhu)分析了我们常用的服务端负载均衡手段——循环DNS(Round Robin DNS),文中提到:
很不幸,循环DNS的主要弱点是不能满足上面提到的第二个需求,当两台服务器中的一台宕机时,DNS服务器仍然会继续把请求发给它,这导致一半用户无法获得响应。
他还指出集群前端软、硬件专用方案的不足:负载均衡器(Load Balancer)自己总有一个响应数量上限,尽管可以通过循环DNS配合专用负载均衡器解决这一问题,但维护一个专用负载均衡器需要额外投入数万美元,而且通常后备负载均衡器只有在主设备出现故障后才会发挥作用。
在客户端负载均衡概念的介绍中,作者请读者考虑关于桌面应用如何负载均衡的问题:
桌面程序随机选择一台服务器,然后尝试获取数据,如果服务器不可用或没有在预设的时间内响应,那么就选择另一台服务器,直到可以提取数据。桌面应用与Web应用不同的是,前者是独立于服务器,可以在客户端通过对服务器访问的负载均衡实现应用的可扩展性,而后者把客户端代码(JavaScript或Flash WSF)保存在提供数据和资源的服务器上。
为了把概念延伸到Web应用,作者剖析了典型AJAX应用的关键组成:
客户端代码:JavaScript/Flash客户端的SWF; 资源:图片、级联样式表、音频和视频文件、HTML文档; 服务端代码:用于反馈客户端所需数据的后台逻辑。
其中1、2两类内容相对静止,一般不像第3类那样有负载均衡的需要。关注于第3类组成,作者建议采用可靠的服务器或者像亚马逊S3那样的服务,它描绘的策略如下:
就像桌面应用一样,我们可以把一个应用服务器列表嵌到客户端代码里,Web客户端包括一个称为Servers.XML的文件,它保存了可用服务器的列表。客户端通过AJAX或者Flash访问列表中的每一个服务器,直到找到一台可响应的。
尽管浏览器可以禁止客户端代码向它所来源的那些服务器之外的服务器发起服务端调用,但作者还是建议采用Flash或JavaScript的方案解决这个问题。采用客户端负载均衡有两个好处:
不需要额外的服务器设备,“不需要专用负载均衡设备,无需配置负载均衡硬件或确认备份功能和主负载均衡器是否正常工作”; 服务器可以被物理隔离,“由于是客户端选择服务器而不是由一个固定的负载均衡器重定向调用,所以服务器的位置不受限制”。
文章结尾,作者介绍了上述技术如何在亚马逊的EC2和S3基础上构造一个叫VoxLite的具有高可用性和可扩展性的视频资讯应用,不过作者并没有架构出一个没有单点故障的负载均衡方案。
很多Web应用会面向特定区域,通过一个动态DNS支持的EC2实例实现调用的负载均衡。如果提供负载均衡的这个实例出现故障,在动态DNS映像到另一个EC2实例前,整个系统就不可用了。
为了克服这个问题,VoxLite通过向S3发起HTTP GET调用获得可用的服务器列表,该列表由EC2实例的一系列任务维护:
- 加载并解析http://s3.amazonaws.com/voxlite/?prefix=servers。
- 如果当前运行实例没有被列出来,就向一批EC2实例的关键服务器各发送一个空文件;
- 通过测试到亚马逊内部Web服务IP地址的连接情况,可以验证该批其他服务器的是否运行正常,如果无法建立连接就把该服务器从这批服务器的列表中删掉。
根据你的需求,客户端负载均衡在统一负载均衡的架构下,提供了一个有趣且具创新性的选择。作者总结道:
通过在客户端负载均衡中采用S3和EC2,可以简化搭建一个具有弹性、扩展性、健壮性Web应用的工作。
查看英文原文:Client side load balancing of Ajax applications
分享到:
相关推荐
Apache和Tomcat是两种在Web开发领域广泛应用的服务器软件。Apache是开源的HTTP服务器,而Tomcat是一款开源的Servlet...整合Apache和Tomcat并实现服务器负载均衡,可以为企业级应用提供强大的支撑,同时降低运维成本。
ASP.NET AJAX客户端编程是微软开发的一种技术,它允许开发者创建高度交互性和响应式的Web应用程序,类似于桌面应用的用户体验。在ASP.NET AJAX框架中,重点在于提高网页的异步处理能力,减少不必要的页面刷新,从而...
### ASP.NET 3.5 AJAX 客户端编程精选166例(使用C#) #### 一、ASP.NET 3.5与AJAX简介 ASP.NET 3.5是微软发布的一个重要的Web开发框架,它基于.NET Framework 3.5,提供了丰富的工具和API来帮助开发者构建动态的...
在项目"WebAjaxClient"中,可能包含了使用客户端AJAX和ASP.NET AJAX技术开发的Web应用程序示例。文件可能包括HTML页面、JavaScript脚本、ASP.NET服务器控件和后台代码文件,它们共同展示了如何在实际项目中集成和...
如今,AJAX技术给客户端Web应用程序的开发带来巨大的影响。这种构建Web应用程序的新方法—在后台发送http请求而不需要页面重载—已经为当今电子邮件软件(它们原来被作为桌面应用程序设计和开发)的开发提供了若干种...
在讨论AJAX应用中的编码问题之前,有必要先理解MVC(模型-视图-控制器)模式的优点,这将有助于我们更好地构建Web应用程序。MVC模式允许将应用程序分为三个核心组件,分别是模型(Model)、视图(View)和控制器...
基于Ajax的胖客户端技术可以解决传统Web应用程序中的一些问题,如服务器压力大、网络带宽限制等。胖客户端解决方案可以减少服务器的压力,提高系统的运行效率。同时,基于Ajax的资源文件加载优化方案也可以提高系统...
Java Web应用客户端编程是开发基于Web的交互式应用程序的关键部分,它主要关注用户与服务器之间的交互逻辑和用户体验。客户端编程通常涉及HTML、CSS、JavaScript,以及一些库和框架,如jQuery、Bootstrap等,来创建...
综上所述,这个示例提供了一个完整的jQuery AJAX交互流程,包括客户端发起请求和服务器响应的源码,是学习和理解AJAX实际应用的好资源。通过深入研究这些代码,你可以掌握AJAX的基本用法,以及如何在实际项目中应用...
在高并发的网络环境中,负载均衡是确保Web应用程序高性能和可靠性的关键策略之一。本文将探讨如何在Java Web应用中实现高性能的负载均衡方案,包括常见的负载均衡算法和具体的Java代码实现。
在 Ajax 客户端开发中,MVC 结构可以很好地应用于解决复杂的用户界面问题。Ajax 技术可以使客户端和服务器端进行异步交互,从而提高用户体验。 在本文中,我们将详细介绍 MVC 结构在 Ajax 客户端开发中的应用研究。...
7. **性能优化**:由于AJAX应用可能导致多个并发请求,因此课程可能涵盖如何优化AJAX请求以减少服务器负载和提高响应速度。 通过本课程的学习,开发者将能够熟练掌握利用Microsoft AJAX Library开发客户端组件的...
在本项目中,我们探讨的是如何使用ASP.NET 3.5与AJAX客户端框架来开发一个Web版的RSS阅读器。这个技术栈结合了服务器端的强大处理能力与客户端的交互性,为用户提供流畅且实时的体验。以下是关于这个主题的详细知识...
还介绍了ASP.NET AJAX 框架为开发者在客户端用JavaScript 与服务器端通信而创造的种种便利条件,包括直接调用Web Service、页面方法以及ASP.NET 应用服务(例如身份验证、用户个性化以及全球化服务)等。ASP.NET ...
负载均衡技术作为提升网站性能和处理能力的关键技术之一,它能有效地分配网络或应用流量至多个服务器,优化资源利用率,提升吞吐量,降低延迟,并在出现故障时提供故障转移能力。本文将深入探讨负载均衡技术,并提供...
在探讨ASP.NET 2.0如何使用Ajax实现客户端回调功能之前,我们首先简要回顾一下ASP.NET 2.0和Ajax的基本概念。 ### ASP.NET 2.0简介 ASP.NET 2.0是Microsoft推出的一个用于开发Web应用程序的框架,它是.NET ...