问题描述
必须试用socket每条消息最大200字符单条广播上限3000人然后我就算了一下....200字符我给打成ByteArray了是600字节(不算压缩)广播一次我用的是遍历Hashmap就是600*3000=1800000=1757KB.....这么大的IO......一条消息就这样了....总感觉这是非常愚蠢的啊....但不知道最佳做法是什么而且需求是一个程序服务器拖几台服务器也就是说几台3000人.....就一般的1U服务器JAVA服务器上行IO能达到多大啊我估计能有10mb/s就是上帝了(小弟无知)那这么说托5台3000人绝对够喝一壶的了....望指教聊天服务器最佳做法(单server)
解决方案
解决方案二:
CPU应该不会是瓶颈,网络带宽够大就行局域网内千M网卡能达到100M/S
解决方案三:
不过广播的话你不用发3000遍吧直接用网络的广播功能就好
解决方案四:
网络的广播功能指的是??
解决方案五:
朋友们呢?
解决方案六:
如果服务器是2M的带宽,那么,楼主算的结果,1秒钟就能将所有信息都发送完毕。下面说一下个人理解:首先,网络通信,其实是分单播和多播两种的。楼主使用单播来逐个发送广播信息,当然会占用大量带宽。使用多播协议发送广播,会得到改善。其次,像楼主这样的聊天室程序,每个聊天室是限制容量的,并且,容量一般在500到800之间。将聊天室的服务端程序,分别部署在不同的服务器上,可以大致的平衡网络负载。最后,我们使用的聊天室程序,并非即时语音功能的,所以,文本信息,延迟个几秒钟并不影响使用。
解决方案七:
引用3楼zjkboy的回复:
网络的广播功能指的是??
将数据发给广播地址,广播会帮你去散布消息。说得简单点就是发给一个特定的IP地址就可以了。至于广播地址是多少,就不很好讲了,因为根据内网的IP不同,广播地址可能也不同,不过你BAIDU一下就可以了,可以找到广播地址的算法类
解决方案八:
用java在老师指导下做过不过发多了服务器就卡了
解决方案九:
不是很懂,,,