snake-nio

游戏服务器 NIO 框架
授权协议 LGPL
开发语言 Java
所属分类 程序开发、 高性能网络开发库
软件类型 开源软件
地区 国产
投 递 者 谷弘致
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

snake 百万级别的分布式游戏服务器实时通讯 NIO 框架

数据库建议:Ignite/cockroach
发现服务:Zookeeper

1. messagecreator:

基于Netty的Java消息对象池,基于Netty零拷贝专为Netty做优化。

长时间运行,消息池和Netty总内存占用不超过2G,不用考虑GC。


2. zk-common

Zookeeper基础服务发现组件。


3. login

登陆服务器,Http请求,实际应用中改为Https,集中登陆时用户排队。

返回用户登陆状态、token和connector的IP和Port。

可以部署多个login服务器,去除单点,不存储状态。

命令服务:Zookeeper发现centerserver,Netty长连接到centerserver,
    根据数据库表user_state.id%centerserver个数来查找。

4. centerserver

中心服务器,可以部署多个,去除单点,不存储状态。

根据数据库表user_state.id%centerserver总个数来查找。

处理用户登陆、退出等消息。

5. connector

网关服务器,部署多个。

每个客户端连接在用户认证成功时,创建一个到transfer服务器的连接,把消息转发过去。

这两个连接用同一个EventLoop,Netty零拷贝加快传输速度。

性能:服务器 i3 CPU, 16G 内存,部署login,centerserver,connector(回传)。
   客户端:ThinkPad笔记本,40字节消息 * 1000000个每用户,800k/s平均传输速率。
   connector CPU占用不超过11%。
   推算:每秒可以处理8 * 800K = 6.4M加密消息(回传测试)。

命令服务:Zookeeper发现centerserver,Netty长连接到centerserver,
    根据数据库表user_state.id%centerserver个数来查找。
   
认证算法:mangos认证算法,Secure Remote Password(安全远程密码),现在明文传输token。
加密算法:mangos RC4算法。

6. transfer

转发服务器,可以直接用来做逻辑服务器。

转发服务器开始发送的都是明文。

如果后台功能较多,可以直连逻辑服务器(邮件)、聊天服务器(家族、好友)、排行服务器、跨服战斗服务器等。

逻辑服务器直连充值服务器。


7. client

测试用客户端。

 相关资料
  • 问题内容: 目前,我正在使用Java NIO服务器(单线程),并且遇到了一些问题。服务器接受传入连接,将初始数据包(该数据包包含客户端用于进一步通信的某些数据)写入客户端,但不从客户端读取。当我关闭客户端时,服务器尝试读取,当然,它返回-1。 接受连接时,它将在以下位置注册: 回报(应该吗?) 在发送初始数据包之前,操作更改为: 发送初始数据包后,操作将更改为: 数据包被发送。 可能是什么问题呢?

  • 主要内容:1 非阻塞服务器-GitHub仓库,2 无阻塞IO管道,3 非阻塞与阻塞IO管道,4 基本的无阻塞IO管道设计,5 读取部分消息,6 存储部分消息,7 编写部分消息,8 总结,9 服务器线程模型即使你了解了Java NIO非阻塞功能如何工作(Selector,Channel, Buffer等),设计一个无阻塞服务器仍然很难。与阻塞IO相比,非阻塞IO包含多个挑战。这份非阻塞服务器教程将讨论非阻塞服务器的主要挑战,并为它们描述一些潜在的解决方案。 本教程中描述的思想是围绕Java NIO

  • 主要内容:1. 概述,2. ChannelBuffer1. 概述 在 dubbo-remoting-api 的 buffer 包中,一方面定义了 ChannelBuffer 和 ChannelBufferFactory 的接口,同时提供了多种默认的实现。整体类图如下: 2. ChannelBuffer 实现 Comparable 接口,通道 Buffer 接口。 2.1 AbstractChannelBuffer 实现 ChannelBuffer 接

  • 主要内容:1.概述,2.ExchangeChannel,3. ExchangeClient,4. ExchangeServer,5. 请求/响应模型,6. Handler1.概述 exchange 信息交换层:封装请求响应模式,同步转异步,以 Request, Response 为中心,扩展接口为 Exchanger, ExchangeChannel, ExchangeClient, ExchangeServer。 类图: 2.ExchangeChannel 继承 Channel 接口,信息交换

  • 主要内容:1.概述,2.TelnetCodec,3.TelnetHandler,4.TelnetHandlerAdapter1.概述 在 《Dubbo 用户指南 —— Telnet 命令参考手册》 一文中,我们可以看到,Dubbo 支持通过 telnet 命令,用来服务治理。 本文涉及类图如下: 2.TelnetCodec 实现 TransportCodec 类,Telnet 命令编解码器。 3.TelnetHandler telnet 命令处理器。代码如下: 4.TelnetHandlerAd

  • 主要内容:1.概述,2.AbstractPeer,3.AbstractEndpoint,4.Client,5. Server,6. Channel,7. ChannelHandler,8. Dispacher,9. Codec1.概述 dubbo-remoting-api 模块, transport 包,网络传输层。 涉及的类图如下: 2.AbstractPeer 实现 Endpoint、ChannelHandler 接口,Peer 抽象类。 使用装饰模式 3.AbstractEndpoint