求教java网络开发问题

业务架构实验室 2014-04-15 11:49:38
小弟用MINA做一个IM应用,有几个技术问题想请大家来支招
第一个问题是IM中语音的发送方式应该采用哪一种比较好:
方案一是用MINA直接转发语言消息,体积大概在20KB上下,这样做的话IO消耗是不是太大?
方案二是用MINA来做推送服务器,专门用来维持连接用的,而语音的上传下载是通过其他的方式,比如Http,然后用mina来推送url给客户端,客户端再从url上去下载语音消息,这种方式的话延迟会比较大,一方面http协议用来做语言不是很理想,协议体积大,而且可能需要频繁的三次握手,还有另一方面,这样做的话需要多出一个网络来回的时间开销。
问问有经验的前辈,哪种方式靠谱呢?
第二个问题是,当需要扩展到多台服务器时,如何去做服务器间信息的交换,以及如何定位目标用户(因为一条聊天信息所要到达的目标用户可能不在当前服务器上)所在的服务器?有没有什么技术方案可以跟小弟讲解一下。
小弟不甚感激
...全文
1346 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 4 楼 preferme 的回复:
如果是短消息形式,服务器转发也是个不错的选择。 1。关于频繁三次握手的问题,要实际状态中去分析,不要听别人说是什么,就认定什么,程序的运行环境,通信机制等等条件都是不相同的,出了问题要找到真正的瓶颈才行,你这还没出问题呢,就频繁三次握手了,那web网站干脆别开了。 2。多台服务器的负载均衡,需要设计一个类似路由的数据结构,表明消息的传递路径。在这个过程中,你要明白是否真的能够降低各个服务器的负载,从而加大用户量。 如果楼主对这方面有所顾虑,那么,推荐你直接使用消息中间件吧,linkQ,activeMQ 等等,都是不错的选择。
我非常赞同您的第一个观点,呵呵 要自己实践过以后才能得出结论 谢谢你的解答哦
  • 打赏
  • 举报
回复
引用 3 楼 preferme 的回复:
语音消息是 实时聊天,还是,语音消息。这个你要弄清楚。 另外,语音信息的数据,体积稍微大了点,如果商用的话,要考虑带宽问题。 最好的办法,就是不用服务器转发,采用TCP打孔技术,让客户端自己向对端发送数据。 最后,推荐TCP协议传输语音,当然,如果是服务端转发形式的话,就要根据实际情况衡量一下了。 如果嫌弃频繁建立连接,可以采用长连接,或者,惰性短连接。
谢谢你的耐性解答,可是貌似打洞技术不太适合移动互联网吧
冰思雨 2014-04-16
  • 打赏
  • 举报
回复
如果是短消息形式,服务器转发也是个不错的选择。 1。关于频繁三次握手的问题,要实际状态中去分析,不要听别人说是什么,就认定什么,程序的运行环境,通信机制等等条件都是不相同的,出了问题要找到真正的瓶颈才行,你这还没出问题呢,就频繁三次握手了,那web网站干脆别开了。 2。多台服务器的负载均衡,需要设计一个类似路由的数据结构,表明消息的传递路径。在这个过程中,你要明白是否真的能够降低各个服务器的负载,从而加大用户量。 如果楼主对这方面有所顾虑,那么,推荐你直接使用消息中间件吧,linkQ,activeMQ 等等,都是不错的选择。
冰思雨 2014-04-16
  • 打赏
  • 举报
回复
语音消息是 实时聊天,还是,语音消息。这个你要弄清楚。 另外,语音信息的数据,体积稍微大了点,如果商用的话,要考虑带宽问题。 最好的办法,就是不用服务器转发,采用TCP打孔技术,让客户端自己向对端发送数据。 最后,推荐TCP协议传输语音,当然,如果是服务端转发形式的话,就要根据实际情况衡量一下了。 如果嫌弃频繁建立连接,可以采用长连接,或者,惰性短连接。
teemai 2014-04-15
  • 打赏
  • 举报
回复
直接发吧。不要再做中转了
  • 打赏
  • 举报
回复
引用 1 楼 huxiweng 的回复:
直接发吧。不要再做中转了
能分析一下么? 还有问题2呢

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧