发明内容
本发明提供一种分布式即时通信软件中全局会话备份切换方法及装置,以解决上述问题。
本发明提供一种分布式即时通信软件中全局会话备份切换方法。上述方法包括以下步骤:当线程检测到当前全局会话存在通信异常时,启用检查锁,若检查锁的状态为True,则进入检查锁,通过后释放检查锁并启用切换锁,其中,同一时刻,检查锁及切换锁分别仅允许一个线程进入;通过切换锁的所述线程检测当前全局会话是否可用,若当前全局会话不可用,则修改检查锁的状态为False;所述线程判断当前是否存在可用的备份全局会话,若存在,则切换可用的备份全局会话为当前全局会话,并修改检查锁的状态为True,并释放所述切换锁。
本发明还提供一种分布式即时通信软件中全局会话备份切换装置。上述装置包括检验模块、启用模块、判断模块、切换模块以及修改模块。检验模块连接启用模块,启用模块连接判断模块,判断模块连接切换模块以及修改模块,切换模块连接修改模块。检验模块用于检测当前全局会话是否存在通信异常,当检测到存在通信异常时,启用模块启用检查锁,若检查锁的状态为True,则线程进入检查锁,通过后释放检查锁并启用切换锁,其中,同一时刻,检查锁及切换锁分别仅允许一个线程进入。判断模块用于判断当前全局会话是否可用,若当前全局会话不可用,则修改模块用于修改检查锁的状态为False。判断模块用于判断当前是否存在可用的备份全局会话,若存在,则切换模块用于切换可用的备份全局会话为当前全局会话,且修改模块用于修改检查锁的状态为True,并释放所述切换锁。
相较于先前技术,根据本发明提供的分布式即时通信软件中全局会话备份切换方法及装置,当全局会话存在通信异常时,通过启用检查锁及切换锁,可以即时有效地切换可用的备份全局会话为当前全局会话,从而提高系统可靠性。此外,通过检查锁及切换锁的机制,能够释放大量线程,从而节省系统资源,提高备份切换效率。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图1所示为根据本发明的较佳实施例提供的分布式即时通信软件中全局会话备份切换方法的流程图。如图1所示,本发明的较佳实施例提供的分布式即时通信软件中全局会话备份切换方法包括步骤101~103。
于步骤101,当线程检测到当前全局会话存在通信异常时,启用检查锁,若检查锁的状态为True,则进入检查锁,通过后释放检查锁并启用切换锁,其中,同一时刻,检查锁及切换锁分别仅允许一个线程进入。
具体而言,当业务逻辑层产生的线程于执行过程中发现异常时,执行步骤101。其中,线程检测当前全局会话是否存在通信异常的过程为:线程向当前全局会话发送验证信号,判断验证信号是否存在通信异常。当线程检测到当前全局会话存在通信异常时,启用检查锁,并判断检查锁的状态。若检查锁的状态为True,则允许业务逻辑层产生的线程逐个通过检查锁。当检查锁的状态为True,且线程逐个通过检查锁后,释放检查锁并启用切换锁。其中,切换锁仅允许一个线程进入。另外,检查锁的初始状态设置为True。
于步骤102,通过切换锁的线程检测当前全局会话是否可用,若当前全局会话不可用,则修改检查锁的状态为False。其中,通过切换锁的线程检测当前全局会话是否可用的过程为:所述线程向当前全局会话发送验证信号,判断返回的验证信号是否为通信异常。
于步骤103,所述线程判断当前是否存在可用的备份全局会话,若存在,则切换可用的备份全局会话为当前全局会话,并修改检查锁的状态为True。
举例而言,当业务逻辑层例如产生3条线程(线程a~c),且此时全局会话存在通信异常时,上述三条线程会进入切换过程。此时,由于启用的检查锁的初始状态为True,因此,线程a~c会顺利地逐个通过检查锁。然而,由于切换锁仅允许一个线程进入,则线程a~c中的其中一个线程(例如,线程a)会进入切换锁,而其他线程(例如,线程b及线程c)会被阻挡在切换锁外。通过切换锁的线程a会检测当前全局会话是否可用。若当前全局会话不可用,则会修改检查锁的状态为False。于此,一旦检查锁的状态修改为False,则业务逻辑层后续产生的线程无法通过检查锁,且上述线程的资源会被释放,从而节省资源。换言之,当通过切换锁的所述线程检测当前全局会话不可用,且修改检查锁的状态为False后,释放等待通过检查锁的线程资源。如此,业务逻辑层源源不断产生的新线程在检查锁处可以被释放。
此外,通过切换锁的线程a会判断当前是否存在可用的备份全局会话,若存在,则切换可用的备份全局会话为当前全局会话,并修改检查锁的状态为True。其中,线程a会遍历所有备份全局会话,查看是否有可用的备份全局会话。若没有可用的备份全局会话,则释放线程资源以及相关系统资源。另外,在将可用的备份全局会话切换为当前全局会话后,释放所述切换锁后,释放等待通过所述切换锁的线程资源(例如,线程b及线程c)。如此,仅通过一个线程即可实现全局会话的备份切换,从而避免了多个线程执行多个切换流程而导致备份数据死循环的问题。
图2所示为根据本发明的较佳实施例提供的分布式即时通信软件中全局会话备份切换装置的示意图。如图2所示,本发明较佳实施例提供的分布式即时通信软件中全局会话备份切换装置包括检验模块20、启用模块21、判断模块22、切换模块23以及修改模块24。检验模块20连接启用模块21,启用模块21连接判断模块22,判断模块22连接切换模块23以及修改模块24,切换模块23连接修改模块24。检验模块20用于检测当前全局会话是否存在通信异常,当检测到存在通信异常时,启用模块21启用检查锁,若检查锁的状态为True,则线程进入检查锁,通过后释放检查锁并启用切换锁。其中,同一时刻,检查锁及切换锁分别仅允许一个线程进入。判断模块22用于判断当前全局会话是否可用,若当前全局会话不可用,则修改模块24用于修改检查锁的状态为False。判断模块22还用于判断当前是否存在可用的备份全局会话,若存在,则切换模块23用于切换可用的备份全局会话为当前全局会话,且修改模块24用于修改检查锁的状态为True。此外,关于上述装置的具体操作过程同前所述的方法,故于此不再赘述。
综上所述,根据本发明较佳实施例提供的分布式即时通信软件中全局会话备份切换方法及装置,当全局会话存在通信异常时,通过启用检查锁及切换锁,可以即时有效地切换可用的备份全局会话为当前全局会话,从而提高系统可靠性。此外,通过检查锁及切换锁的机制,能够释放大量线程,从而节省系统资源,提高备份切换效率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。