多进程交互方法、系统和服务器技术方案

技术编号:13192426 阅读:75 留言:0更新日期:2016-05-11 19:39
本发明专利技术涉及一种多进程交互方法、系统和服务器,其中,该方法包括以下步骤:服务器启动一分配进程和多个任务进程;分配进程接收由多个客户端分别发送的单个需求信息,并生成对应的任务分发至多个任务进程;多个任务进程分别完成由分配进程分发的任务,并生成相应的任务结果返回至分配进程;分配进程将接收到的多个任务结果分别反馈至与其对应的客户端。本发明专利技术通过利用服务器的CPU的多核性能,实现多个进程的同时运行,也即由分配进程分配任务,由多个任务进程同时工作并独立完成任务,不仅大大提高了任务处理的效率和保证了各个任务进程工作的独立性,而且扩大服务器处理的客户端的数量,不需要应用锁机制,避免了竞争情况的发生。

【技术实现步骤摘要】

本专利技术涉及计算机同时完成多方数据处理的任务的
,特别涉及一种利用计算机的核数来提升服务器与客户端之间的数据交互效率及优化计算机的处理效率的多进程交互方法、系统和服务器
技术介绍
现有技术中,计算机同步完成多项任务主要依靠于多线程技术,也即,从软件或者硬件上实现多个线程并发执行的技术。因此,为了能够在同一时间内完成多项任务,在多人在线战术竞技游戏或其它多人对战模式游戏中,也应用到了多线程技术,以实现游戏服务器对多个玩家客户端发送的多项任务进行及时地处理,并能够将处理结果同时返回至玩家客户端。同时,为了满足大量的玩家的需求,游戏服务器一般采用多线程块模型的方式对大量玩家发送的任务进行处理。但是,多线程块模型在每个进程里只有一个块而不是多个块,这单个块(可理解为单进程)控制着多个线程而不是单个线程;在这里不需要消息队列,因为所有的线程都是相同的块的一部分,导致程序员必须提供线程同步以保证线程不会并发请求相同的资源,以避免竞争情况的发生。为解决该问题,通过提供一锁机制即可;但是,锁机制的存在可能会导致系统发生死锁现象,且由于游戏服务器要求的逻辑时序性很强,使用多线程处理的方式还会导致逻辑处理的复杂度增大。并且,通过一个进程处理多人战斗模式的战斗逻辑,如处理多人在线战术竞技游戏的战斗逻辑时,则这个进程不仅要完成玩家战斗逻辑的处理,而且还要完成玩家数据存储的任务及日志任务,从而导致在必须保证玩家战斗体验感受良好的情况下,游戏服务器只能支撑200个玩家的战斗逻辑数据处理,不能满足对更多玩家的支持,限制了在线玩家人数,不能满足更多玩家的需要。【专利技术内容】本专利技术的目的是为了解决上述现有技术的缺点和不足,提供一种多进程交互方法、系统和服务器,不需要应用锁机制即可避免竞争情况的发生,实现在满足游戏服务器的要求的同时大大降低逻辑处理的复杂度,从而有效地提高游戏服务器的处理能力,并扩大游戏服务器能够支撑的游戏玩家的数量,提升最大同时在线人数。—种多进程交互方法,包括以下步骤:服务器启动一分配进程和多个任务进程;分配进程接收由多个客户端分别发送的单个需求信息,并生成对应的任务分发至多个任务进程;多个任务进程分别完成由分配进程分发的任务,并生成相应的任务结果返回至分配进程;分配进程将接收到的多个任务结果分别反馈至与其对应的客户端。由上述技术方案可知,本专利技术通过利用服务器的CPU的多核性能,实现多个进程的同时运行,也即由分配进程分配任务,由多个任务进程同时工作并独立完成任务,从而不仅大大提高了任务处理的效率和保证了各个任务进程工作的独立性,而且扩大客户端的数量,不需要应用锁机制,从而避免了需求信息竞争情况的发生。将本专利技术的多进程交互方法应用于游戏服务器时,能够实现在满足游戏服务器的要求的同时大大降低逻辑处理的复杂度,从而有效地提高游戏服务器的处理能力,并扩大游戏服务器能够支撑的游戏玩家的数量,提升最大同时在线人数。进一步,所述服务器中处理器的核数为N个,N为整数且其大于I;及步骤服务器启动一分配进程和多个任务进程中,服务器启动的多个任务进程的数量为N-1个。通过此处设置,最大限定地利用了服务器的CPU多核配置性能,使得服务器中运行的进程总数与CPU的核数相同,从而进一步提高了服务器的任务完成效率,并扩大了用户在线人数,增强用户体验。进一步,所述步骤分配进程接收由多个客户端分别发送的单个需求信息,并生成对应的任务分发至多个任务进程,具体包括以下步骤:分配进程接收由多个客户端分别发送的单个需求信息,并根据接收到需求信息的先后顺序依次生成分别对应于多个需求信息的多个任务,同时依次建立每个客户端分别和与其对应的任务之间的关联关系;分配进程判断所有任务进程的工作状态,若判断得到所有任务进程的工作状态均为忙碌状态,则分配进程不分发任务至所有任务进程,并控制所有任务按先后顺序进入排队等候状态;若判断得到存在工作状态为空闲状态的任务进程,则分配进程按先后顺序将任务分发至处于空闲状态的任务进程中,并控制未分发的任务继续排队等候。通过上述分配进程对接收到的所有需求信息的处理,保证了与需求信息对应的任务能正常地按先后顺序实现分发并由任务进程完成,进一步保证了所有任务的有序且及时的处理,从而进一步保证了用户的体验。进一步,所述步骤多个任务进程分别完成由分配进程分发的任务,并生成相应的任务结果返回至分配进程,具体包括以下步骤:多个任务进程接收由分配进程分发的任务后,均分别预算任务处理复杂度,并将任务处理复杂度发送至分配进程;完成任务处理复杂度的发送后,所述多个任务进程分别独立完成由分配进程分发的任务,并生成相应的任务结果返回至分配进程。通过任务进程对接收到的任务预算任务处理复杂度,并发送至分配进程,有利于分配进程及时了解各个任务进程的任务的难度,由此方便了分配进程根据各个任务进程的任务处理复杂度实现任务的合理调度。进一步,所述步骤分配进程将接收到的多个任务结果分别反馈至与其对应的客户端中,分配进程在接收到多个任务结果后,还分别删除返回多个任务结果的多个任务进程在完成任务前发送的任务处理复杂度;并按先后顺序将排队等候中的任务分发至空闲状态的任务进程。通过分配进程在接收到任务结果的同时删除相应的任务处理复杂度,避免了已经无存在意义的任务处理复杂度对分配进程的空间的占据,从而避免了冗余数据在分配进程的残留,保证了分配进程的处理速度。进一步,当所述服务器的分配进程存在未分发的任务时,所述分配进程可通过所述服务器与另一台或多台服务器进行通信,将未分发的任务分发至由所述另一台或多台服务器启动的多个扩展进程,由所述多个扩展进程完成任务并将任务结果返回至所述分配进程。此处设置有利于解决当一台服务器不能解决过多需求时,可通过扩展多台服务器实现需求的及时处理,从而解决一台服务器的性能限制的问题,并有利于进一步提高了处理效率和扩大在线用户人数,能够更好地满足用户需求。进一步,所述分配进程和多个任务进程之间通过socket进行通信,且所述分配进程和多个扩展进程之间通过socket进行通信。通过分配进程与任务进程由socket实现通信,并通过分配进程和扩展进程由socket实现通信,使得多台服务器之间的联合协助具有良好的扩展性,从而使得进程可以方便地扩展到多台服务器上交互。另外,为实现服务器对单个客户端发送的多个需求信息的快速处理,在基于上述多进程交互方法的构思下,本专利技术还提供了第二种多进程交互方法,其包括以下步骤:服务器启动一分配进程和多个任务进程;分配进程接收由单个客户端发送的多个需求信息,并生成对应的任务分发至多个任务进程;多个任务进程分别完成由分配进程分发的任务,并生成相应的任务结果返回至分配进程;分配进程将接收到的多个任务结果反馈至客户端。进一步,所述服务器中处理器的核数为N个,N为整数且其大于I;及步骤服务器启动一分配进程和多个任务进程中,服务器启动的多个任务进程的数量为N-1个;且所述分配进程和多个任务进程之间通过socket进行通信。进一步,所述步骤分配进程接收由单个客户端发送的多个需求信息,并生成对应的任务分发至多个任务进程,具体包括以下步骤:分配进程接收由单个客户端发送的多个需求信息,并根据接收到多个需求信息的先后顺序依次生成分本文档来自技高网...

【技术保护点】
一种多进程交互方法,其特征在于:包括以下步骤:服务器启动一分配进程和多个任务进程;分配进程接收由多个客户端分别发送的单个需求信息,并生成对应的任务分发至多个任务进程;多个任务进程分别完成由分配进程分发的任务,并生成相应的任务结果返回至分配进程;分配进程将接收到的多个任务结果分别反馈至与其对应的客户端。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:徐波
申请(专利权)人:广州多益网络科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1