游戏服务器之多进程架构通信

http://blog.csdn.net/chenjiayi_yun/article/details/18891591


游戏服务器有时需要分多个进程来处理各种负载。多个进程之间的连接处理就相对复杂了。


1、服务器进程类型

(1)登陆服务器

创建账号,检验角色账号,选择和获取并返回网关信息。

(2)网关服务器

创建角色,转发消息。会有网关角色,和相关的屏信息,用于广播。

(3)场景服务器

处理场景(分线或不分线的)、副本的游戏逻辑。

(4)社会关系服务器

处理社交相关的全区的逻辑。

(5)数据库服务

存取数据。

(6)中心服务器

处理内部服务器之间的消息转发,和某些转发流程控制。

(7)其他服务器

还有些日志服务器、连接PHP(gm)服务器、跨服战服务器、聊天服务器等。


2、进程内的网络相关线程类型

进程内的网络相关线程类型(不包括主线程和逻辑线程),处理进程间通信需要处理的连接的数据发送和接收。

<1>、被动连接相关

被动连接线程池

(1)验证线程
(1-1)检查验证超时、验证发来消息的服务器id和服务器ip(服务器之间,依靠中心服务器发来的依赖服务器列表)
(1-2)验证账号和临时id和账号(客户端登陆和重登陆)
(1-3)验证epoll接收是否有错误,验证客户端的唯一性,超时就放到回收线程
(2)同步线程
(2-1)网关发消息删除中心服务器登陆会话
(2-2)中心服务器读数据库检查其他服务器连接的合法性
(2-3)发送测试消息到对端
(3)网络接收发送线程
负责发送和接收数据(多线程,数量需要配置,每条线程处理的连接数需要是动态增长的)
(4)回收线程
回收连接


<2>主动连接相关

(1)主动连接线程

根据进程需要主动连接别的进程来增加。

如场景进程需要主动连接中心服务器、社会关系服务器、网关服务器、日志服务器、数据库服务器,所以分别各自要另起连接线程。

(2)主动连接线程池

(2-1)连接测试线程
测试连接是否正常
(2-2)验证线程
(2-3)网络处理线程
负责发送和接收数据(多线程,数量需要配置,每条线程处理的连接数需要是动态增长的)


3、进程间的连接图



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows多进程架构与Unix/Linux的进程架构有一些不同。在Windows中,操作系统内核(kernel)和用户空间(user space)是分开的,而且用户空间中的程序不能直接访问内核。Windows采用了一个称为“进程和线程管理器”的系统组件来控制进程和线程的创建、撤销、调度和同步。 在Windows系统中,每个应用程序都运行在一个独立的进程中,这个进程有自己的虚拟地址空间、系统资源和安全上下文。不同的进程之间不能直接共享内存,必须通过特殊的机制来实现数据交换。Windows提供了一些IPC(进程间通信)机制,例如命名管道、邮槽、共享内存、消息队列等,可以帮助不同的进程进行数据交换和通信。 除了进程之间的通信,Windows还提供了一些多进程编程的支持。例如,可以使用CreateProcess函数来创建一个新的进程,使用WaitForSingleObject或WaitForMultipleObjects函数来等待进程的退出或事件的发生,使用TerminateProcess函数来强制终止一个进程等等。另外,Windows还提供了一些同步原语,例如临界区、互斥量、事件、信号量等,可以帮助不同的进程共享资源并保证数据的一致性。 总的来说,Windows多进程架构是一个相对成熟和稳定的系统,可以帮助开发者构建复杂的应用程序。不过,在进行多进程编程时,需要注意进程间通信的效率和安全性,避免出现死锁、竞态条件等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值