写点什么

AJAX 应用的客户端负载均衡问题探究

  • 2007-10-10
  • 本文字数:1577 字

    阅读完需:约 5 分钟

今天,当我们选择负载均衡时,大部分 Web 应用集群选择基于软件或硬件的服务器端方案,而《Digital Web Magazine》最近发表的一篇文章讨论了一家公司如何在 EC2 支持的应用中实现客户端负载均衡。

文章从负载均衡方案的需求谈起:

  1. 需要在应用服务器集群中分担负载;
  2. 温和地应对单个服务器的宕机;
  3. 确保在最终用户端可以把这组服务器视为一个单独的服务器。

作者朱磊(音译 Lei Zhu)分析了我们常用的服务端负载均衡手段——循环 DNS( Round Robin DNS ),文中提到:

很不幸,循环 DNS 的主要弱点是不能满足上面提到的第二个需求,当两台服务器中的一台宕机时,DNS 服务器仍然会继续把请求发给它,这导致一半用户无法获得响应。

他还指出集群前端软、硬件专用方案的不足:负载均衡器(Load Balancer)自己总有一个响应数量上限,尽管可以通过循环 DNS 配合专用负载均衡器解决这一问题,但维护一个专用负载均衡器需要额外投入数万美元,而且通常后备负载均衡器只有在主设备出现故障后才会发挥作用。

在客户端负载均衡概念的介绍中,作者请读者考虑关于桌面应用如何负载均衡的问题:

桌面程序随机选择一台服务器,然后尝试获取数据,如果服务器不可用或没有在预设的时间内响应,那么就选择另一台服务器,直到可以提取数据。桌面应用与 Web 应用不同的是,前者是独立于服务器,可以在客户端通过对服务器访问的负载均衡实现应用的可扩展性,而后者把客户端代码(JavaScript 或 Flash WSF)保存在提供数据和资源的服务器上。

为了把概念延伸到 Web 应用,作者剖析了典型 AJAX 应用的关键组成:

  1. 客户端代码:JavaScript/Flash 客户端的 SWF;
  2. 资源:图片、级联样式表、音频和视频文件、HTML 文档;
  3. 服务端代码:用于反馈客户端所需数据的后台逻辑。

其中 1、2 两类内容相对静止,一般不像第 3 类那样有负载均衡的需要。关注于第 3 类组成,作者建议采用可靠的服务器或者像亚马逊 S3 那样的服务,它描绘的策略如下:

就像桌面应用一样,我们可以把一个应用服务器列表嵌到客户端代码里,Web 客户端包括一个称为 Servers.XML 的文件,它保存了可用服务器的列表。客户端通过 AJAX 或者 Flash 访问列表中的每一个服务器,直到找到一台可响应的。

尽管浏览器可以禁止客户端代码向它所来源的那些服务器之外的服务器发起服务端调用,但作者还是建议采用 Flash 或 JavaScript 的方案解决这个问题。采用客户端负载均衡有两个好处:

  1. 不需要额外的服务器设备,“不需要专用负载均衡设备,无需配置负载均衡硬件或确认备份功能和主负载均衡器是否正常工作”;
  2. 服务器可以被物理隔离,“由于是客户端选择服务器而不是由一个固定的负载均衡器重定向调用,所以服务器的位置不受限制”。

文章结尾,作者介绍了上述技术如何在亚马逊的 EC2 和 S3 基础上构造一个叫 VoxLite 的具有高可用性和可扩展性的视频资讯应用,不过作者并没有架构出一个没有单点故障的负载均衡方案。

很多 Web 应用会面向特定区域,通过一个动态 DNS 支持的 EC2 实例实现调用的负载均衡。如果提供负载均衡的这个实例出现故障,在动态 DNS 映像到另一个 EC2 实例前,整个系统就不可用了。

为了克服这个问题,VoxLite 通过向 S3 发起 HTTP GET 调用获得可用的服务器列表,该列表由 EC2 实例的一系列任务维护:

  1. 加载并解析 http://s3.amazonaws.com/voxlite/?prefix=servers
  2. 如果当前运行实例没有被列出来,就向一批 EC2 实例的关键服务器各发送一个空文件;
  3. 通过测试到亚马逊内部 Web 服务 IP 地址的连接情况,可以验证该批其他服务器的是否运行正常,如果无法建立连接就把该服务器从这批服务器的列表中删掉。

根据你的需求,客户端负载均衡在统一负载均衡的架构下,提供了一个有趣且具创新性的选择。作者总结道:

通过在客户端负载均衡中采用 S3 和 EC2,可以简化搭建一个具有弹性、扩展性、健壮性 Web 应用的工作。

查看英文原文: Client side load balancing of Ajax applications

2007-10-10 20:481798
用户头像

发布了 61 篇内容, 共 14.2 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

夜莺里如何引用标签和注解变量

巴辉特

Nightingale 开源监控 告警模板 告警变量

就在明天!8月26日丨EasyModel新品发布会等你来!

袋鼠云数栈

数字孪生 数字孪生技术 易知微 空间智能 EasyModel发布会

MyEMS:赋能能源精细化管理的数字化利器

开源能源管理系统

开源 开源能源管理系统

中国中铁回应尖扎黄河特大桥事故:舆情管理的危机与修复

沃观Wovision

舆情监测 沃观Wovision 舆情监测系统 中铁回应尖扎黄河特大桥

壹佳美容按摩养生上门服务平台

微擎应用市场

MyEMS:引领能源管理升级的全方位解决方案

开源能源管理系统

开源 能源管理系统

G端业务需求的高效管理——禅道实践中的“破局”与“避坑”

禅道项目管理

软件 软件需求管理 禅道项目管理 软件需求设计 需求管理软件

【HarmonyOS相机开发系列】折叠屏镜头切换优秀实践

最新动态

软件工程 + AI 不是 “硬凑”,3 步走通落地关键环节

行云创新

平台工程 AI 赋能软件工程 AI赋能研发

重磅!Ollama发布UI界面,告别命令窗口!

王磊

对于房企而言,国内最值得选的楼宇对讲品牌有哪些?

新消费日报

2025物联网与RFID产业:万亿赛道的技术破局与市场重构

斯科信息

RFID技术 RFID产业

从 KOL 到 KOC:海外营销“去中心化”新趋势

Wolink

海外推广 沃链Wolink 达人营销

高达99.57%GPU利用率,Alluxio在MLPerf Storage v2.0基准测试中展现卓越性能

Alluxio

AI 数据 模型训练 分布式缓存 MLPerf

MyEMS:让能源管理从 “模糊粗放” 走向 “清晰可控”

开源能源管理系统

开源 能源管理系统

企业一定要部署堡垒机吗?理由是什么?

行云管家

网络安全 堡垒机

全面开放下载!Fabarta个人专属智能体免邀请码体验,功能重磅更新

Fabarta

人工智能 智能体

FinClip驱动中国应用全球出海的降本增效实践

xuyinyin

跑冷链,汕德卡G5S冷藏车自有“享”法!

科技热闻

山海L7 PLUS将领衔捷途汽车登陆成都车展,掀起“旅行小房车”新风潮

科技热闻

CST教程:如何获取压变电容(变容二极管)的电容曲线

思茂信息

cst操作 CST软件 CST Studio Suite

浩创云 AI 三合一系统:微擎部署助力抢占商业服务新蓝海

微擎应用市场

判断等保测评机构是否正规的小技巧你知道吗?

行云管家

等保 等保测评

RFID 标签在封闭空间漏扫?系统化应对策略解析

斯科信息

RFID标签

速来!CodeBuddy IDE国内版公测开启!🎉

CodeBuddy

优猿酒吧社交小程序:多门店酒吧的数字化经营利器

微擎应用市场

TCL电子(01070.HK)2025年H1经调整归母净利润大幅增长62.0%

财见

浙江省委常委、杭州市委书记刘非莅临中昊芯英考察调研

科技热闻

多客云 Ai 短视频批量剪辑矩阵系统:高效创作与智能管理的一体化解决方案

微擎应用市场

组局同城社交社区平台进群找搭子陪玩旅游

微擎应用市场

FinClip组件化方案实现App前端轻量化重构

xuyinyin

AJAX应用的客户端负载均衡问题探究_架构_Gavin Terrill_InfoQ精选文章