我正在尝试为始终连接的客户端构建一个通用服务器。游戏服务器网关设计
该架构由4个主要部件
- 有状态应用服务器
- 无国籍网关服务器
- 客户
- 排队系统和经纪人
工艺流程
- 客户机连接到一个网关
- 网关接受作为发送会话ID返回到客户端
- 客户端将消息发送到网关
- 网关请求写入到消息/任务队列
- 甲守护程序读取队列中的消息并将它们转发到应用程序服务器的侦听套接字
- 应用程序服务器通过其业务逻辑运行消息
- 然后,App Server稍后向客户端发送相关消息进入网关队列
- 网关上的线程将读取其入站队列中的消息,然后将消息发送回消息中标识的客户端。
- 网关没有地图客户端会话ID的客户端Socket对象的传入邮件转发到客户端套接字
我使用Java的Netty网关。应用程序服务器也在Java中。
我很想说设计就像Mongrel2一样,但我并不完全确定。我会说这更多的是城市飞艇的氦边缘服务器设计(http://urbanairship.com/blog/2010/08/24/c500k-in-action-at-urban-airship/)
我的问题是: - 使用线程从入站队列中读取消息,然后将它们转发给客户端一个好主意?有没有更好的方法来处理这个问题?
术语“工人”浮现在脑海 – Kristian 2012-04-16 21:06:10
工作人员在从入站队列读取后如何帮助我将邮件发送回客户端? – kopos 2012-04-17 05:40:18