谈点技术吧,6万人在线每秒实时更新的解决方案

帮客户做了一个解决方案,要求是 6万个用户在线,每1秒他们都能获得实时的信息。

 

开始想用静态页面做,测试下来,单台服务器IIS每秒处理几千个估计可以的,处理6万个带宽已经爆掉了,带宽估计200M以上。

用Big5、NetScaler,太贵了。20几万以上,钱付得起了,带宽还是不太行。 

用TCP连接,6万个TCP连接估计也没啥问题,但是就要考虑多线程,不能一个连接阻塞影响其它连接的处理,处理起来还是挺麻烦的,不小心程序就死掉了。 

最后采用了UDP实现,效果非常好,一台服务器就搞定了,大概60M带宽。  UDP的好处是无连接的,服务器发掉就发掉,没有任何负担,程序死掉重启下就行了。 

 

做法:

      C/S客户端发一个UDP包给服务器,服务器就知道客户端的IP和端口了,再把实时的信息发给客户端就行了。 客户端可以每N秒发送一个数据包,表明自己活着。

     

 

 

有的时候担心是不是有的公司内网或者家里NAT(路由器什么的)不开UDP端口,一般来说客户端通过NAT先发送一个UDP数据包给服务器,NAT会打开端口,做好映射,这时候服务器向客户端发送UDP数据了,客户端就能收到UDP数据了。

几十万用户测试下来,顶多有10%的机器不支持。因此又提供了一个 Web页面,UDP不通的时候用Web去拿XML数据。

 

UDP真的很强,什么时候有空打算拿来做个群发器,在家里的电脑上就能给几千个人发消息,突破网络封锁,用来做很多合法或者不合法的事情了... 

 

【代码怎么写?自己研究下好了,实在太简单了,让客户用Java实现的...】 

 

【预告:下次讲讲音视频实时直播的方案,研究了两个月....】

 

 

转载于:https://www.cnblogs.com/ttvnc/archive/2009/11/30/1613830.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值