服务器架构中根据功能可以将服务器的角色可分为
- 登录服务器
- 地图服务器
- 日志服务器
- 数据服务器
- 寻路服务器
如何管理不同服务器之间的通信呢?
多服务器架构下,各个服务器可以通过TCP协议来互相通信,典型的例如基于Web技术开发的游戏服务器:
- MySQL数据存储占用一台物理机
- 多个Web服务器占用一台物理机
- Web服务器与MySQL之间通过TCP通信
服务器实现
基于Actor模式,可参考Skynet框架,以及Erlang设计。
Skynet游戏服务器设计核心思路:
- 游戏服务器由Actor对象组成
- 每个Actor对象是相互独立的
- Actor对象内部执行代码
- Actor对象通过邮箱形式相互通信
实现目标
设计基于Actor模式的C#中转型网络服务器
- C#中Actor模式实现
- 网络管理
- 连接管理
- 玩家管理
C#中支持大量连接的异步
- TCPListener的网络监听器
- AcceptSocket接收客户端请求
- 线程Join等待服务器停止
- 单独连接通过Agent处理每个连接
C#中连接管理
- 连接的开启
- 连接的关闭
- 连接数据接收与发送
TCPListener使用
- SocketServer类
- MainClass类中的Main方法
- SocketServer对象是服务器网络核心
- 启动线程来执行