JAVA有很多优秀的网络连接框架。Mina、Netty、Gretty、Xsocket都是不错的高性能连接框架,如果做网络游戏服务器该如何选取呢?我简单凭我的了解和使用经验介绍一下,错误之处欢迎指正。
Apache Mina,以高性能和高扩展性著称,应用广泛。它是基于NIO的TCP/UDP框架,支持各种协议,并且能很容易的整合spring等WEB框架,可以说功能很强大,扩展性很强,较偏向于web应用方面。Mina使用起来需要了解一些通信协议以及NIO的知识,不易入门,好在网上资料很全。
Netty,据说是Mina的设计者发起的另一个项目,它提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。借鉴早期版本以及mina的经验,它们很类似,但Netty结构更加清晰,更加易用。
Xsocket,基于NIO的轻量级socket连接框架。封装性很好,架构清晰,在保障高并发、多线程性能的前提下,提供极致地易用性,基本不用了解NIO就能完成高性能的应用开发。个人非常喜欢Xsocket,它客户端和服务端都可以实现,提供了性能可观的NIO socket。简化的API让我不用过多付出连接方面的编码从而将更多的精力用于游戏服务器本身。Xsocket本身并不提供HTTP支持(可以稍微麻烦一点编码实现),不过作者的另一个基于Xsocket的项目XlightWeb是为Http量身定制的轻量级框架,支持websocket,并且秉承了简洁易用的风格。
Xsocket项目地址:http://xsocket.org/
XlightWeb项目地址:http://xlightweb.org/
通过我的实践发现,XlightWeb的性能虽然不错,但是在高并发高吞吐量下,发挥并不稳定波动较大。而Netty无论是性能还是CPU占用率都稳定得多,性能可以一直维持在较高的水平。所以我的建议是,基于socket的游戏服务器可以优先考虑Xsocket,基于Http的游戏服务器优先考虑Netty,但如果并发量不是特别大,XlightWeb也是不错的选择。当然,如果不怕麻烦,Mina可以应大部分需求,除了游戏服务还可以方便地扩展后台页面。
题外话,其实做游戏服务器开发,主要的性能瓶颈并不在连接上,特别是手游本身在线量无法比拟端游,加上弱联网趋势,吞吐量也不会有很大压力。另外,JAVA服务器如果是工作在linux环境下,性能会大幅提升。所以,以上列举的框架基本都可以满足一般游戏服务器的需求,根据实际情况选择合适的框架,并把优化的重点放在数据库和IO优化、逻辑优化上,才能真正事半功倍。
更多内容欢迎关注我的个人主页:http://www.leestorm.com
相关推荐
【真龙天子H5】宫斗手游h5手游服务端+GM工具+详细教程 宫斗手游h5手游【真龙天子H5】服务端+GM工具+详细教程
react 服务端渲染同构框架
qt开发,建立服务端和客户端之间的连接
java实现websocket客户端与服务端的连接
【宠物超进化H5】手游服务端 手工端 授权物品后台
【逍遥西游手游】整理修复完整服务端+视频教程+单人活动+物品后台 【逍遥西游手游】整理修复完整服务端+视频教程+物品后台+单人活动 不会报错,卡注册 修复宠物问题,增加宠物 授权物品后台 单人活动、单人副本、...
基于java nio设计的游戏服务端框架设计方案
Java服务端框架 服务器框架 java服务器框架模板
Android Studio 开发Netty网络访问框架,实现了客户端、服务端两种访问方式,支持发送心跳数据,使用Handler实现外部数据交互,有调用Demo,在实际项目中使用暂时没有问题
基于java的开发源码-服务端JavaScript框架 RingoJS.zip
【大战三国志】手游一键服务端+授权后台+视频教程 手游【大战三国志】一键服务端+授权后台+视频教程
用Swift写服务端 — Perfect框架学习 详细解释请参考:http://blog.csdn.net/u014220518/article/details/79217903
air手游完整项目源码,包含广告admob ane,starling实现和mobileprovision文件,可以直接部署在移动设备上
基于Socket的通用服务端网络模块,适用于大多数情况,适合初学者使用
mysql客户端与服务端的连接............
unity网络游戏开发学习demo源码(服务端+客户端), 有网盘链接,资源相同
某MMORPG手机网络游戏的服务端源码,包括底层框架及业务逻辑,数据存储使用xml,喜欢手游开发的朋友注意了。
一个基于Netty网络库的java服务端轻量级开发框架,用于快速开发手游,页游等服务端程序,使用WebSocket通信协议,支持mysql,redis,连接池,全局定时任务,心跳检测,可配置逻辑处理线程,模块热更新等,使用简单,...
软件供应商有公网服务器的话,可用本框架打通实现,我们用此框架实现过医生手机远程连入门诊内部查询修改自已的预约、患者资料;3.服务端即时通知功能,pb长连结客户端、http调用,服务端处理完成后,可以给在线的pb...
CXF开发webservice服务端,希望对大家有所帮助