50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

Comet: 上万的并发用户、亚秒级的响应时间

  • 2008-02-01
  • 本文字数:1823 字

    阅读完需:约 6 分钟

以反向 Ajax 著称的 Comet,主要目标在于通过借助 HTTP1.1 中持久连接的特性,使得客户端可以即时获知服务器端所发生的状态变化。正如 Infoq.com 之前提到过的那样,和 Comet 类似的,还有很多其他所谓的“推送技术(push technologies)”也在试图实现同样的目标。

Greg Wilkins 和他在 Webtide 的团队瞄准了测量 Comet 的延展性的目标进行了一系列的测试(Webtide 是由开源项目 Jetty web 服务器的主要技术开发员组成的一家公司)。根据测试结果,他们发表了在测试中的一些发现。更具体地说,这些测试涉及到在Jetty 上运行实现了 Bayeux 协议的 Dojo Cometd 应用。除了在服务器上运行 Cometd 以外,他们在客户端机器(1-3 台之间)同样也运行 Cometd,从而服务器和客户端共同生成相当于两万个用户的负载。同时,服务器和客户端机器都采用 Amazon EC2 虚拟服务器的大实例(Large Instances)。测试结果的以图表的形式总结如下:

以下是从这些测试中得到的值得强调的几个要点:

  • 即使在同时面对两万个用户时,该技术都能达到亚秒级响应时间 (sub-second latency)。但是,在响应时间和吞吐量两者间仍然存在着权衡取舍的需要。对于 5000 个用户,如果响应时间达到 100 毫秒,吞吐量是每秒 2000 条信息。如果将响应时间延长到 250 毫秒,吞吐量则提高到每秒 3000 条信息。
  • 在测试中使用的应用程序仅是一个能够支持每个房间 200 个用户的聊天室程序。“在每个测试中,负载是定时间隔地向 10 个随机选取的聊天室突发 50 字节的载荷。发送的时间间隔是选定的,这样一来可以保证服务器 CPU 的状态基本稳定在 10%到 50%的空闲”。
  • Greg 指出“一台机器无法生成或者处理和 20000 个各自拥有计算机和网络设施的用户同样的负载”。为了尽可能的弥补这个不足之处,一部分测试 (见上图中绿色圆圈) 通过 3 台不同的机器模拟用户来完成。
  • 对于使用 3 台客户端机器来完成的测试,关于响应时间的测量是从模拟了 1000 个用户的机器上获得。尽管测量不是完全精确,但是 Greg 指出,他们从处理剩下的 20000 个用户的其他两个客户端所观察到的响应时间的上限值相当于在一台客户端机器上运行测试时所观察到的响应时间。
  • 捆绑了 Jetty6.1.7 的 Cometd demo 仍然需要一些修改。其中一些修改和减轻服务器端线程池的 lock starvation 相关,另外一些则牵涉到启动步骤的修改。

正如在评论以及 Greg 之前的一篇文章中提到的那样,Jetty 能够异步将消息推向客户端,因而面对同样数目的客户所需资源要少的多。在这些测试中所应用到的对线程池的修改代码现在可以下载,并且Greg 告诉Infoq 说这些修改代码将囊括在Jetty 下一个发布版本中。他也补充提到Webtide 正在通过负载均衡调度器来运行类似的测试,不久将会发布更多的测试结果。

另外一个能够突出Comet 延展性的很有意思的方法是 Lightstreamer所采用的方法。它的实现是基于一个不依赖于底层应用或 web 服务器的独立服务器。一些 web/ 应用程序服务器,扩展以后像流引擎(streaming engine)那样工作,这些服务器基于的是"一线程一连接模式(one-thread-per-connection model)"。相对来说,Lightstreamer 将服务器可以维持的连接数与服务器所能使用的连接数进行解耦,因而可以扩展面向非常大数量的用户。

在和 Infoq 的对话中,Alessandro Alinone —— Lightstreamer 的 CTO 表示,他们在金融领域已经有客户了,在产品中实现了“平均有 10000 个并发用户以及平均每个用户每秒钟 3-5 个更新的频率。”他补充说“Lightstreamer 通过一个 OEM 协定在 TIBCO Ajax 消息服务中作为核心引擎使用。因此,TIBCO 前端的一些很有意思的产品方案正在急剧增长中。”

除了服务器之外, Lightstreamer 的后端构架包括:

  • 一个数据适配器——插件模型,连接 Lightstreamer 需要集成的数据资源。它能够使用任何技术来集成数据,但是一个异步数据种子(例如 JMS,TIB/RV,MQ)要避免通向客户端的异步数据链断掉。
  • 一个元数据适配器——插件模型,为 Lightstreamer 服务器提供元数据的推送(push)方案。

客户端,浏览器像通常一样从web 服务器得到静态网页,但是它可以收到从Lightstreamer 服务器推向它的即时更新。这些更些的消费者可能是一套和大多数浏览器兼容并且和大部分第三方AJAX 框架和工具箱共存或集成的Lightstreamer JavaScript 库。即时更新也可以通过Lightstreamer 推向Flash/Flex 应用程序,也可以推向使用Java 或.NET 开发的桌面应用程序。

查看原文: Comet: Sub-Second Latency with 10K+ Concurrent Users

2008-02-01 03:055876
用户头像

发布了 71 篇内容, 共 23.2 次阅读, 收获喜欢 3 次。

关注

评论

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

2020-2021最新大厂面试题附答案解析【建议收藏】,android应用开发题库

android 程序员 移动开发

2020字节跳动安卓程序员视频面试,这五点一定有助你顺利拿到offer(1)

android 移动开发

2020应届毕业生,Android春招总结,已入职小米,阿里牛逼

android 程序员 移动开发

2020上半年百度Android岗(初级到高级)面试真题全收录

android 程序员 移动开发

2019最新百度、头条、小米,retrofit源码

android 程序员 移动开发

2020Android面试心得,已拿到offer,轻松获得一线大厂面试offer

android 程序员 移动开发

2020个人开发者做一款Android-App需要知道的事情,年薪百万在此一举(1)

android 程序员 移动开发

2020了,Android开发是否真的还有出路!25岁的我还有机会吗

android 程序员 移动开发

2020京东最新Android面试真题解析,kotlinarrow库

android 程序员 移动开发

2020字节跳动安卓程序员视频面试,这五点一定有助你顺利拿到offer

android 程序员 移动开发

2020年失业后我整理了一份系统的Android面试题(含答案)

android 程序员 移动开发

2019年阿里Android面试必问:Java+性能优化,android编程实战

android 程序员 移动开发

2020抖音短视频爆火!它的背后到底是什么—,手把手教你写Android项目文档

android 程序员 移动开发

2020新一波跳槽季过后,Android程序员精选,大厂,flutter微信小程序

android 程序员 移动开发

2020年腾讯丶百度丶字节丶OPPO等Android面试大全,附带教你如何写好简历

android 程序员 移动开发

2019年末阿里、百度等大厂技术面试题汇总(附答案,2021年Android社招面试题精选

android 程序员 移动开发

2019,2021我是如何拿到小米、京东、字节的offer

android 程序员 移动开发

架构设计七 如何设计异地多活架构

nydia

2020年度总结:如果系统的Android学习可以这么简单!为什么不来看看呢

android 程序员 移动开发

[ CloudWeGo 微服务实践 - 05 ] 服务注册(1)

baiyutang

golang 微服务 11月日更

2020了,Android开发是否真的还有出路!25岁的我还有机会吗(1)

android 程序员 移动开发

2020关于面试字节跳动,我总结一些面试点,希望对最近需要面试的你们一些帮助

android 程序员 移动开发

2020年Android开发年终总结之如何挤进一线大厂?,BAT这种大厂履历意味着什么

android 程序员 移动开发

2020应届毕业生,Android春招总结,已入职小米(1),kotlin安卓开发教程

android 程序员 移动开发

【投稿赢大奖】 -- 奇思妙想+AI技术=?

百度大脑

人工智能 百度

Node.js 中 fs.renameSync 报错

liuzhen007

11月日更

2020 年,我这样在项目中使用 MVVM,BATJ等企业Android面试知识分享

android 程序员 移动开发

2020京东Android岗面试题大全(附赠京东内部真题解析PDF)

android 程序员 移动开发

2020年12月大厂BATJ面试ing-本以为学了个好找工作的Android开发,没想到又是坑

android 程序员 移动开发

2020年阿里巴巴Android面经:拿到字节跳动offer后,简历又被阿里捞了起来

android 程序员 移动开发

2020Android进阶者的新篇章,一起努力应对互联网寒冬,冲刺年薪40w

android 程序员 移动开发

Comet: 上万的并发用户、亚秒级的响应时间_Java_Alexander Olaru_InfoQ精选文章