Last active
December 20, 2015 20:59
-
-
Save cnsoft/6193890 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Firefly是免费、开源、稳定、快速扩展、能 “热更新”的分布式游戏服务器端框架,采用Python编写,基于Twisted框架开发。它包括了开发框架和数据库缓存服务等各种游戏服务器基础服务,节省大量游戏开发的工作时间,真正做到让使用者把精力放在游戏玩法逻辑上。用它可以搭建自定义的分布式架构,只需要修改相应的配置文件即可。 | |
| 优势特性 | |
| 采用单线程多进程架构,支持自定义的分布式架构; | |
| 方便的服务器扩展机制,可快速扩展服务器类型和数量; | |
| 与客户端采用TCP长连接,无需考虑粘包等问题; | |
| 封装数据缓存服务; | |
| 可实现实时热更新数据以及游戏逻辑,客户端玩家无感觉; | |
| 有几十个基础游戏玩法系统模块提供组装使用(v1.3.0提供); | |
| 框架介绍 | |
| management, firefly 是个多进程、分布式的游戏服务器。因此各游戏server(进程)的管理和扩展是firefly很重要的部分,框架通过抽象使服务器的扩展非常容易。 | |
| Network,客户端连接通信、server进程间的通信等构成了整个游戏框架的脉络,所有游戏流程都构建在这个脉络上。与客户端的通信采用的是请求/回应式的,所以受到的客户端的请求,服务端都会给出相应的回应,服务端也能主动的推送,广播给客户端消息。这些请求是基于指令号的请求。(例如定义101为登陆指令)server进程之间的通信时采用的异步回调的方式,这样就减少了的进程间通过网络通信中的时间消耗。 | |
| Data, 数据处理是网游的重要部分。在网游有大量的数据需要存储,需要更新,这使得数据库的读写效率成为服务器的最大的性能瓶颈。firefly的db处理能够将数据库表中的数据缓存到memcache中并能以对象的形式进行调用相应的对象方法对数据进行操作。可以在不同的进程中通过实例化相同的名称的缓存实例,得到同步的数据。并能将缓存对象中的数据写回数据库中。 | |
| 框架思路 | |
| 一个最基本的服务器就是一个在不停运行着的应用程序。在分布式游戏服务器中,我们需要的服务器具有的功能有,监听客户端的连接,监听其他服务进程的消息,连接其他的服务进程,有些需要有数据库连接和缓存服务。如下图 | |
| net connect 做客户端连接,root监听其他服务进程消息,node连接其他服务进程,db数据库,cache缓存。是否需要监听客户端连接,是否监听其他服务进程消息等这是都是可以在config.json中进行配置。包括各个服务器的名称以及各个服务器之间的连接关系。这样就可以自定义出自己的分布式架构。 | |
| 一个网游的开发,显然数据组织流程优化的重要性 要大于数据通讯这些最基本的东西. 也就是为什么多年前 我们就可以写处理服务器 ,而离游戏服务器 就差很远. | |
| 最根本的就是对于广播类数据处理 是否支持. 对比一下就会发现,远不是一个数量级别的.所以都不是MMORPG 还是webgame |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment