`
leecong1p
  • 浏览: 148189 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

开发手游服务端,网络连接框架的选择

 
阅读更多

 

   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

0
0
分享到:
评论
4 楼 leecong1p 2013-07-21  
windshome 写道
当然,你要是没有时间和资源,自然是另一回事。如果有一些时间,那么:

1)设计开发一个网络连接、事件派发的东西不是多么困难

……


好的,多谢赐教。
3 楼 windshome 2013-07-21  
当然,你要是没有时间和资源,自然是另一回事。如果有一些时间,那么:

1)设计开发一个网络连接、事件派发的东西不是多么困难

2)效率、稳定性、安全性的需要也是业务的一个部分,而且是非常重要的部分,不是只有过年要求算是业务逻辑

3)自己做的最大好处,就是如果出现联调和运行时的问题,自己能解决;最大的问题就是需要设计和开发时由高手来做。

4)开源的网络IO框架,在线程池和使用和IO读时内存的分配上,一定要仔细看它们的设计和实现,不弄清楚的话很危险

5)选择开源实现,都要经过仔细的选型分析和严格的测试;自己实现的话,也要严谨的设计实现和严格测试

至于重复发明轮子的话题,请看我的文章 http://windshome.iteye.com/blog/1853680
2 楼 leecong1p 2013-07-21  
windshome 写道
自己写一个吧,费不了多少事的!


嗯,是的,或许自己写的框架也不错,但有把握比这些已经发展很久,且应用广泛的框架好吗?如果花费大量的时间去重复发明轮子,我觉得不如把重心放在项目的业务逻辑上,你说对不?
1 楼 windshome 2013-07-19  
自己写一个吧,费不了多少事的!

相关推荐

    服务端.rar

    本资源提供的网络模块应该包含了处理连接、数据收发、错误处理等功能,简化了服务端的开发工作。 4. 聊天室: 聊天室是一种常见的网络应用,它利用Socket通信实现用户之间的实时文本、语音或视频交流。在这个...

    小手游 “打小三” 服务端源码

    综上所述,“打小三”手游服务端源码的解析涉及到Python服务端开发的多个方面,包括网络通信、数据管理、游戏逻辑、安全防护以及系统扩展性等多个关键技术点。通过深入学习和理解这些内容,开发者可以更好地掌握手游...

    Go-sanguo是一个golang手游服务器网络框架

    Go-sanguo,一个由Golang语言编写的网络游戏服务端框架,以其简洁高效的特点,为开发者提供了快速构建手游服务器集群的能力。本文将深入探讨该框架的核心特性、设计原理以及实际应用。 一、框架概述 Go-sanguo,...

    奇迹世界服务端源码

    《奇迹世界服务端源码》是针对网络游戏"奇迹世界2"开发的服务端程序源代码,它包含了游戏服务器运行所需的核心逻辑、数据处理以及网络通信等功能模块。这份源代码的发布,对于开发者而言,是一个深入理解游戏服务器...

    服务端轻量级开发框架lightning4j.zip

    一个基于Netty网络库的java服务端轻量级开发框架,用于快速开发手游,页游等服务端程序,使用WebSocket通信协议,支持mysql,redis,连接池,全局定时任务,心跳检测,可配置逻辑处理线程,模块热更新等,使用简单,...

    mmorpg:java编写的轻量级高级mmorpg手游服务端框架,集成的springboot。基本功能逐步完善中

    mmorpg,是一个用java编写的轻量级高级mmorpg手游服务端框架。项目提供各种支持快速二次开发的组件,以及对生产环境的服务进行管理的工具。同时,为了使用户能够快速上手,项目提供了一些常用业务功能作为演示。 ...

    手游斗地主完整源码

    综上所述,手游斗地主完整源码涵盖了游戏设计、AI开发、网络编程、用户界面等多个方面,对于希望深入学习游戏开发的开发者来说,这是一个宝贵的参考资料。通过分析和理解这些源码,可以提升自身的游戏开发技能,同时...

    一个PHP开发的的高性能Socket服务器框架.rar

    被广泛的用于手机app、手游服务端、网络游戏服务器、聊天室服务器、硬件通讯服务器、智能家居、车联网、物联网等领域的开发。支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。基于workerman开发者可以更...

    一款分布式的java游戏服务器框架,具备高性能、可伸缩、分布式、多线程等特点,java 8 +gradle 4.0

    适用于手游、h5游戏等各类高性能游戏服务器的开发 功能特点 基于Disruptor消息队列设计的无锁并发模式 分布式(多进程)架构,几行代码实现一个功能服务器的搭建 多线程设计,注解方式配置,轻松管理所有消息流 强大的...

    基于Workerman 改写的简化版 用于开发基于 Socket 的 HTTP Server.rar

    支持高并发,超高稳定性,被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。 支持 TCP 长连接,支持Websocket、HTTP等协议,支持...

    使用netty+spring搭建游戏框架

    在构建游戏框架时,选择Netty作为网络通信库与Spring框架结合是一个常见且高效的选择。Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Spring则提供了全面的...

    aardio10开发企业管理系统aardio-erp框架源码.zip

    #aardio-erp,仅支持aardio10以上版本 目录文件说明 /aardio-cgi cgi源码,...5.配置服务端数据库连接文件 \wwwroot\system\config.aardio 6.打开客户端工程文件 7.配置客户端数据库类型 \lib\config.aardio (confi

    热血江湖服务端C++源代码,完整游戏服务器代码

    总的来说,这个资源是游戏开发人员深入学习服务端技术的绝佳实践案例,它提供了一个完整的框架,帮助你从零开始了解和掌握游戏服务器的开发过程。无论是作为教学材料还是实战项目,都是非常有价值的。

    wd_问道_源码_

    《问道》是一款深受玩家喜爱的网络游戏,其背后的技术支撑离不开强大的服务器端开发。在这个主题下,我们将探讨"wd_问道_源码_"所涉及到的核心知识点,主要集中在Java编程语言和游戏服务器开发上。 首先,我们要...

    MLSV_魔力宝贝_魔力_mlsv_

    【标题】"MLSV_魔力宝贝_魔力_mlsv_" 指向的是一个与游戏《魔力宝贝》相关的软件或更新包,其中“MLSV”可能是游戏的一个特定版本或者服务端标识。这个标题表明该压缩包可能包含了与该游戏运行、更新或维护有关的...

    尚硅谷Netty核心技术及源码剖析PPT1

    2. **游戏行业**:不论是手游服务端还是大型网络游戏,Netty因其高性能和可定制性,常被用来构建TCP/UDP协议栈,实现游戏服务器之间的通信,如账号登录服务器和地图服务器间的高性能交互。 3. **大数据领域**:如...

    netty部分参考个人心得

    * 游戏行业:手游服务端和大型的网络游戏,Java 语言得到了越来越广泛的应用。Netty 作为高性能的基础通信组件,它本身提供了 TCP/UDP 和 HTTP 协议栈。 * 大数据领域:经典的 Hadoop 的高性能通信和序列化组件 Avro...

    在线聊天室workerman-master.zip

    而Workerman就是这样一款强大的纯PHP开发的开源高性能Socket服务器框架,它以其简单易用、稳定可靠的特点,被广泛应用于各种领域,如手机APP、移动通讯、微信小程序、手游服务端、网络游戏等。 Workerman的核心特性...

    网狐源码全套源码+详细架设教程

    网狐框架是一款专为网络应用设计的开源框架,它基于先进的技术和设计理念,旨在提高开发效率,简化项目管理,并提供稳定可靠的运行环境。框架的核心特点是模块化,允许开发者根据需求选择合适的组件,降低系统的耦合...

    GatewayWorker-for-win

    被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mysql、...

Global site tag (gtag.js) - Google Analytics