谈点技术吧,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实现的...】
【预告:下次讲讲音视频实时直播的方案,研究了两个月....】
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验