comet server 的介绍及方案选型

comet server 的介绍及方案选型

comet server介绍:

简述就是具有长连接功能,能实时向客户端推送数据的 push服务器

方案比较: 

经过5种框架的比较,作者最终选择了netty。。。

 

原文地址:http://amix.dk/blog/post/19456#Plurk-Comet-Handling-of-100-000-open-connections 
 

Plurk Comet: Handling of 100.000+ open connections

Plurk Comet

Comet is a buzz word, just like Ajax, but a bit cooler. The bottom line in comet is that the server can push data to clients when new data arrives.

I think that comet is the next big thing and this trend can be seen in an upcoming product like Google Wave that use comet heavily for creating real time updates.

Plurk is growing fast and we are becoming one of the largest Python sites on the Internet. We serve many thousands of concurrent users pr. day (100.000+), so implementing comet for Plurk is a big challenge and I have spent around a week on fiddling with different solutions.

Here are some of the technologies I have tired:

  • Python Twisted: Non-blocking server in Python. Unfortunately it ate a lot of CPU and could not scale
  • Jetty: They claim to have good support for comet (and they do if you don't serve 100.000 clients at once). The Jetty installation we ran ate around 2GB of ram on 10.000 active users, which is unacceptable for our needs
  • Apache Tomcat: Same with Jetty, it eats tons of memory, even thought they do support comet connections
  • Apache Mina: A NIO (non-blocking IO) framework which I used to build a HTTP server. Unfortunately Mina is very badly documented and it did not scale up in production

After trying these out and found out that they could not handle a massive load I was about to give up. But then, I stumbled upon the savior:

  • JBoss Netty: A NIO framework, done by one of Apache Mina's founders

Netty is not that documented, but it's really well designed and after some hacking around the performance is pretty amazing.

The bottom line

Using Netty we have comet running on 100.000+ open connections - this uses some GB of memory and 20% of CPU on a quad core server. I.e. we have solved the C10k * 10 problem using non-blocking technology and some pretty impressive libraries (namely Java NIO and Netty).

A big kudos goes to Trustin Lee for his amazing work on Netty!

转载于:https://www.cnblogs.com/inteliot/archive/2012/04/18/2454703.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值