Java游戏核心架构之通信架构

通信框架选择

Java游戏通信一般是使用目前两个比较流行的底层通信架构:Netty和Mina。

有意思的是这两个框架都是出自同一个人之手【Trustin Lee】,这两个框架的线程模型基本是一致的都是采用了Reactors in threads模型,即Main Reactor + Sub Reactors的模式。由main reactor处理连接相关的任务:accept、connect等,当连接处理完毕并建立一个socket连接(称之为session)后,给每个session分配一个sub reactor,之后该session的所有IO、业务逻辑处理均交给了该sub reactor。每个reactor均是一个线程,sub reactor中只靠内核调度,没有任何通信且互不打扰。

在游戏服务器开发过程中上面的两种框架都有企业在使用,但是考虑到Mina目前的社区不够活跃且Mina封装比较简单无法满足定制化的需求,因此我们在开发的过程中使用的是Netty作为底层通信框架。

Netty的架构

Java游戏核心架构之通信架构_第1张图片
Netty 功能特性如下:

  • 传输服务,支持 BIO 和 NIO。
  • 容器集成,支持 OSGI、JBossMC、Spring、Guice 容器。
  • 协议支持,HTTP、Protobuf、二进制、文本、WebSocket 等一系列常见协议都支持。还支持通过实行编码解码逻辑来实现自定义协议。
  • Core 核心,可扩展事件模型、通用通信 API、支持零拷贝

你可能感兴趣的:(Java游戏开发-从零到壹,java,游戏,架构)