在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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:481886
用户头像

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

关注

评论

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

Apache Calcite SQL解析及语法扩展

不穿格子衬衫的程序员

数据库 sql 大数据 flink Apache Calcite

想要成为一名真正的软件工程师吗?加入非凸,一起升级!

非凸科技

招聘 社招 校招 软件开发工程师

淘宝京东优惠券返利机器人

江苏京酷电子商务有限公司

淘宝电商 群聊机器人 返利 采集京东

造孽啊!阿里内部的神级项目和JDK源码阅读指南竟惨遭GitHub开源

Java架构追梦

Java 程序员 后端开发

AliIAC 智能音频编解码器:在有限带宽条件下带来更高质量的音频通话体验

阿里云CloudImagine

语音 音频 视频云 音频编码器

Q1手机银行运营报告:交易规模超150万亿,月活跃用户4.9亿

易观分析

手机银行

开源之夏 2022 重磅来袭!欢迎报名 RadonDB 社区项目!

RadonDB

数据库 开源 RadonDB 开源之夏

为 GPU 而来,焱融科技推出新一代全闪分布式文件存储产品

焱融科技

人工智能 云计算 高性能 文件存储 高计算

使用APICloud AVM框架实现App导航栏菜单

YonBuilder低代码开发平台

APP开发 APICloud avm.js

java 通过 SmbFile 类操作共享文件夹

爱好编程进阶

程序员 后端开发

Alibaba最新出版的JDK源码剖析手册(究极奥义版)开源

Java架构追梦

jdk java面试 后端开发

代码历史上最昂贵的 7 个错误

禅道项目管理

测试 代码

Spring data JPA实践和原理浅析

领创集团Advance Intelligence Group

工作原理 java Spring JPA

易观分析刘怡:技术投入聚焦降本增效,用技术赋能人提升企业能效

易观分析

人口变化 技术赋能

2022金蝶云苍穹峰会抢先看

金蝶云·苍穹

苍穹峰会 苍穹5.0 人力云

InfoQ AI开发者召集令!快来助力中国AI产业发展,参与抽奖!

InfoQ写作社区官方

AI 热门活动 白玉兰开源

博睿数据获得分布式系统稳定性实验室成员单位证书 亮相全球信息系统稳定性峰会

博睿数据

量子计算是人工智能的未来吗?

海拥(haiyong.site)

人工智能 量子计算 5月月更

Tech Talk 宣传 | 如何高效、极简构造无服务器 Web 应用

亚马逊云科技 (Amazon Web Services)

Web

上市商业银行手机银行场景建设专题分析

易观分析

商业银行 手机银行

惨遭面试官吊打高并发系统设计,回来学习2400小时后成功复仇

Java架构追梦

Java 后端开发 程序员面试

2022年4月国产数据库大事记

墨天轮

数据库 opengauss TiDB 国产数据库 达梦

认清大脑中的一对塑料姐妹花,科学解锁情绪密码

图灵教育

效率 职场 脑科学

OneFlow如何做静态图的算子对齐任务

OneFlow

人工智能 graph 自动测试 算子对齐

OceanBase 3.2.3 发版|HTAP引擎全面升级,TPC-H性能10倍提升!

OceanBase 数据库

oceanbase

谁在从API经济里分得一杯羹!

Liam

Postman API API Explorer平台 API boy 开放api

易周金融观点 央行设立科技创新再贷款;多家银行下调大额存单利率

易观分析

金融 银行

ETL自动化运维调度管理工具 TASKCTL 流程文件系统

敏捷调度TASKCTL

程序员 DevOps 运维 ETL 大数据运维

中小型企业团队的CRM系统最佳实践

低代码小观

低代码 CRM 客户关系管理 CRM系统 客户关系管理系统

真可笑!拿着这份JVM学习笔记学了2个月,就想着出去跳槽涨10k

Java架构追梦

Java 程序员 后端开发

LAXCUS分布式操作系统:云盘的使用

LAXCUS分布式操作系统

云盘 分布式存储 分布式软件系统

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