我打算用Java编写一个类似QQ的软件,包括PC的客户端,网站,服务器端,同时还有手机的wap网站和java版,我已经设计了一段时间,现开始从底层编写代码,用Hibernate和Spring对MySQL数据库的表和操作进行封装;通讯采用队列的方式,无论是服务器还是客户端,有收发两个队列进行控制,发送和接收的都是Message对象。登陆之后有一个tcp连接始终与服务器保持连接,直到离线或退出,其余的消息采用UDP的方式进行通讯,我将客户端的请求都封装在不同的Request类中,比如OnlineRequest,服务器端的回复都封装在不同的但相对应的Response的类中,比如OnlineResponse,同时有处理相应Request和Response的类,比如OnlineRequestMgr,OnlineResponseMgr等,Request和Response分别是不同的抽象类,但都继承自Message接口,通讯类Communication负责初始化TCP连接和收发UDP包,将UDP包中的Message放入相应的队列。一般来说Request由Response对其进行确认,但对于特殊情况,比如由服务器直接发起的Response,比如被添加好友时的确认信息,需要有一个MessageACK类来对其确认。这些协议的加载和处理都是动态的,只要有相应的class文件就可以自动加载并处理,这样可扩充性就比较好。在安全方面,我想的是在用户建立TCP连接后,先将用户的IP地址和TCP端口号记录下来,然后再根据之后发送的UDP包:LoginRequest,将UDP端口也记录下来,这样就完成了用户ID与IP地址,TCP,UDP端口的绑定,服务器将拒绝为同一个ID但其余信息不同的主机提供服务。目前底层的设计和代码编写就到这里,我想问的问题是:我的思路有没有比较严重的问题,目前聊天系统的整体架构是什么?我编写的协议的思路是否正确,可行?我感觉服务器端的压力会比较大,主要是接受连接,解析Request和查询数据库,有没有提高效率的方法?如果网站需要用到这些底层组件,应该怎么复用,采用EJB吗?Hibernate是轻量级的数据库持久层框架,能承受多少压力?对于聊天系统应该考虑的安全问题,有什么好的建议?Java对于开发语音和视频的支持怎么样,能否达到QQ的水平?另外要说明的是我并非开发商用软件,编写这个软件的目的是为了学习,本人还是在校学生,对Java很感兴趣^_^。希望大家不吝赐教同时也希望与大家交个朋友!
我打算做一个聊天系统
最新推荐文章于 2024-03-30 15:09:57 发布