谈点技术吧,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
總結
以上是生活随笔為你收集整理的谈点技术吧,6万人在线每秒实时更新的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 趣味问题:你能用Reflection.E
- 下一篇: 无ldf文件情况下恢复数据库数据纪实