具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种消息处理方法,本发明实施例的方法应用于如图1所示的ATCA架构系统,包括主用接入节点、备用接入节点,与主用接入节点和备用接入节点连接的多个计算节点,及主用数据节点、备用数据节点,该实施例的方法流程图如图2所示,包括:
步骤101、计算节点接收会话过程消息,会话过程消息中包括会话标识。
这里会话过程消息是指在该计算节点和对端通信的会话建立之后,计算节点接收到对端发送的消息,例如在呼叫业务系统中会话过程消息包括各类请求消息,如基本呼叫状态模型(Basic Call State Model,BCSM)、事件报告(Event Report BCSM,ERB)或申请计费报告(Apply Charging Report,ACR)等;还包括通知消息,如呼叫信息报告(Call Information Report)等。
而在会话过程消息中都会包括会话标识,用来标识该会话过程消息是在哪个会话之下的,如呼叫业务系统中的对话号可以唯一标识一个呼叫。
步骤102、该计算节点确定会话过程消息中的会话标识对应的会话不是本地计算节点建立的,从数据节点获取会话标识对应的会话状态数据和业务配置数据。
计算节点在与对端建立会话后,将在本地计算节点储存会话标识,则在确定会话过程消息中的会话标识对应的会话是否是本地计算节点建立时,可以将会话过程消息中的会话标识与本地储存的会话标识进行匹配,若本地储存的会话标识中不包括会话过程消息中的会话标识,则确定该会话标识对应的会话不是本地计算节点建立的。
在数据节点中储存着业务配置数据,业务配置数据主要是在会话过程中不会改变的数据,如业务订购关系等信息;在本实施例中,ATCA架构系统中的计算节点在与对端建立会话后,还会将该会话中的包括自动分配的信息会话状态数据储存到数据节点。其中:
会话状态数据是指在会话建立后产生的临时变化的数据,包括地址数据和/或计费状态数据,如协议状态机的状态,消息地址(ID)等。对于地址数据不需要持久化,是通过划分不同的取值范围来保证业务正确,这样在数据节点中只保存业务对应的取值范围即自动分配的信息,在会话建立后由计算节点向数据节点储存自动分配的信息后,不需要进行更新,例如在呼叫业务系统中会话状态数据具体为呼叫状态数据,正常呼叫的消息ID取值范围是1到100,异常呼叫的消息ID的取值范围是101到255,只需在数据节点中储存消息ID的取值范围即可;而对于计费状态数据,则需要在会话建立后由计算节点向数据节点进行储存并更新。
可以理解,如果确定该会话状态数据对应会话是本地节点建立的,则按照现有的方法进行处理,在此不进行赘述。
步骤103、计算节点根据会话状态数据和业务配置数据创建会话,并对会话过程消息进行相应的处理。
根据会话状态数据和业务配置数据创建会话时,具体地,将该会话的会话标识与会话状态数据及业务配置数据对应储存,创建异常会话实例,且创建的异常会话实例可以不严格按照协议规定实现,能够处理会话建立成功之后的消息保证会话不中断即可,不需要处理会话建立之前的消息。
在对会话过程消息进行相应处理时可以进行简易操作,可以不完全按照该计算节点对本地建立的会话中会话过程消息的处理方法进行处理,只需对会话过程消息的处理保证业务不中断即可。例如该计算节点接收到会话过程消息A,如果确定本地计算节点已储存了会话过程消息A中的会话标识,则需要返回应答消息,且发送要求对端回执的消息;如果确定本地计算节点没有储存会话过程消息A中的会话标识,则在创建会话后返回应答消息来保证业务不中断,而不发送要求对端回执的消息并不能使得业务中断,因此可以不发送。
具体地,在对会话过程消息进行处理时,如果会话过程消息是通知消息,则可以忽略该通知消息;若是请求消息,则根据会话状态数据和业务配置数据来构造请求消息的应答消息。
应答消息的内容包括:请求消息中的参数、协议规定的参数、保存在数据节点的会话状态数据包括自动分配的信息、业务配置数据等参数,在构造应答消息时,需要先获得这些参数,并按照这些参数设置应答消息的结构。以移动网络增强逻辑的客户化应用(CAMEL Application Part,CAP)协议的ACR为例,当系统收到中间ACR消息后,需要构造申请计费(AC)消息,并发给对端。在构造AC消息时,根据参数进行设置应答消息的结构如下表1所示:
表1
消息ID:自动分配101~255之间的整数,异常呼叫的消息ID取值范围是101~255,来自会话状态数据中的自动分配的信息。操作类型:协议规定为AC的操作类型用于计费。aCh账单计费特性(aCh Billing Charging Characteristics):包括计费时长;计费时长(time Duration Charging):包括以下3个参数;最大计费时长(max Call Period Duration):来自业务配置数据或会话状态数据,如5分钟;如果超过时间则释放(release If duration Exceeded):来自业务配置数据,如不释放;信号音(Tone):来自业务配置数据,如不放音。费率切换间隔(tariffSwitch Interval):来自业务配置数据,如5分钟。计费方(party To Charge):来自ACR消息的party To Charge字段。 |
在呼叫业务系统中,如果会话过程消息是中间ACR,则说明上一个计费周期已经用完,对端如果在指定时间内收不到新的计费周期,则会断开呼叫,所以为了保证呼叫不中断,计算节点还需要向在线计费系统(Online ChargingSystem,OCS)申请新的计费周期,并下发申请计费消息;当接收到最终ACR时,说明通话已经结束,只需向OCS确认计费,记录话单并释放呼叫;
如果会话过程消息是ERB时,说明主叫或被叫已经挂机即通话已经结束,计算节点需要根据ERB记录话单并释放呼叫。
可以理解,本实施例中的计算节点在对会话过程消息进行处理时,还可以包括:该计算节点在建立一个新的会话后,将该会话对应的会话状态数据存储到数据节点。这样如果该计算节点发生故障,则系统中其他的计算节点即可获取该计算节点的会话状态数据,并创建会话,使得该故障上建立的会话业务不中断。
可见,本发明实施例的消息处理方法包括:接收包括会话标识的会话过程消息,当确定会话标识对应的会话不是本地计算节点建立的,向数据节点获取会话标识对应的会话状态数据和业务配置数据;根据会话状态数据和业务配置数据创建会话,并对该会话过程消息进行相应的处理。这样在建立会话后,如果一个计算节点发生故障,另一个计算节点会根据故障计算节点上建立的会话对应会话过程消息中的会话标识,向数据节点获取到会话状态数据和业务配置数据,并根据会话状态数据和业务配置数据建立会话,对会话过程消息进行保证会话不中断的相应处理,提高了用户体验。
在一个具体的实施例中,在上述步骤103的建立会话之前还包括:确定会话过程消息是通知消息还是请求消息,如果是通知消息,则直接丢弃该通知消息;如果是请求消息,才执行步骤103建立会话并进行相应的处理。这样如果会话过程消息是通知消息时,可以不进行会话建立,减少了处理通知消息的时间。例如:
计算节点在确定接收的会话过程消息对应会话不是本地计算节点建立时,根据其中的会话标识到数据节点读取对应的会话状态数据和业务配置数据,包括协议类型、业务接入码(业务标识)、业务键、主叫号码、被叫号码、在OCS的会话ID、呼叫开始时间和最大计费时长等数据;
然后根据协议类型,调用对应的解码函数对会话过程消息进行解码,如果确定会话过程消息是通知消息,则直接丢弃;如果确定是请求消息,则创建异常会话实例,把主叫号码、被叫号码、OCS的会话ID、呼叫开始时间绑定到该会话实例,即将该会话的会话标识与会话状态数据和业务配置数据对应储存,并启动心跳定时器,建立与对端的心跳(Activity Test);最后根据业务接入码(业务标识)调用对应业务的简易流程(每种业务都有对应的简易流程)。
方法实施例二
一种消息处理方法,本发明实施例的方法应用于如图1所示的ATCA架构系统,流程图如图3所示,包括:
步骤201、接入节点接收会话过程消息,在会话过程消息中包括会话标识;
步骤202、接入节点在本地会话表中查找是否包括会话标识对应的计算节点,若不包括,执行步骤203;若包括,则将会话过程消息发送给本地会话表中该会话标识对应的计算节点;
可以理解,接入节点接收会话建立请求后,会按照负载均衡算法选择一个计算节点,并将会话建立请求发送给选择的计算节点进行会话建立,且将会话标识与计算节点的对应关系储存到本地会话表中,其中会话标识与该会话建立请求相对应。
当选择的计算节点与对端建立会话后,接入节点则接收对端的会话过程消息,并根据其中包含的会话标识转发给对应的计算节点进行处理。
步骤203、接入节点会按照负载均衡算法选择另一计算节点,并将会话过程消息发送给另一计算节点,另一计算节点接收到会话过程消息后,按照如方法实施例一中的方法根据会话过程中的会话标识进行会话的重建,并对会话过程消息进行相应处理,在此不再赘述。
如果接入节点在本地会话表中查找不到会话标识对应的计算节点,则说明该计算节点故障,需要选择另一个计算节点进行处理给会话过程消息。
且需要在本地会话表中增加选择的另一计算节点与该会话过程消息中会话标识的对应关系。
需要说明的是,本实施例中的接入节点会发送心跳消息给ATCA架构系统中的所有计算节点,当没有收到计算节点A的心跳应答消息,则认为计算节点A故障,删除本地会话表中计算节点A的记录。这样在知道故障的计算节点后能及时更新本地会话表,使得故障计算节点上建立的会话中会话过程消息能得到及时处理,使得业务不中断。
可见,本实施例中的消息处理方法包括:接收会话过程消息,包括会话标识,在本地会话表中查找是否包括该会话标识对应的计算节点;若不包括,则选择另一计算节点,并将会话过程消息发送给另一计算节点进行会话的重建。这样使得在一个计算发生故障时,将故障计算节点上建立的会话中会话过程消息发送给其他任一正常的计算节点,由其他正常的计算节点进行会话重建后对会话过程消息进行相应处理,使得在计算节点发生故障后,会话业务不中断,提高了用户体验。
以下以呼叫业务系统如下一代智能网(Next Generation IntelligentNetwork,NGIN)为例说明本发明实施例的消息处理方法,本系统中计算节点的结构如图4所示,包含了消息接收确定单元和消息处理单元,消息处理单元包括业务能力单元和业务逻辑单元,其中:
消息接收确定单元与多个相同的协议能力的业务能力单元连接,负责与接入节点之间的消息转发和内部单元之间的消息转发;每个业务能力单元与多个业务逻辑单元连接,主要是协议栈的支持,包括智能网应用协议(Intelligent Network Application Protocol,INAP)、CAP、移动应用部分(MobileApplication Part,MAP)等智能网协议。
参考图5所示,在实现某个计算节点故障后,故障计算节点上已经接通的呼叫不中断时,通过如下的步骤实现:
301、接入节点接入到一个新呼叫,即接收到启动检测点(Initial DetectionPoint,IDP),并且为该新呼叫分配一个计算节点,例如:该接入节点可以按负荷分担算法选择可用的计算节点1,并将上述IDP消息发送给分配好的计算节点1,以使计算节点1为用户的呼叫建立一个呼叫会话。
302、计算节点1中的消息接收确定单元接收接入节点发送的IDP,会选择一个业务能力单元来处理该IDP消息,将IDP转发给选择的业务能力单元,并在路由表中添加新呼叫的对话号与选择的业务能力单元的对应关系。
业务能力单元接收到IDP,创建对话号对应的一个或多个协议状态机,并根据IDP中的信息及用户的业务订购关系,创建业务能力单元侧的一个呼叫(Call)和两个对应于主、被叫的呼叫腿(Call Leg),通过通知呼叫(Notify Call)接口将呼叫上报给确定的业务逻辑单元;业务逻辑单元对应地创建一个呼叫和两个呼叫腿,这样计算节点通过建立了一个新的呼叫连接。
在呼叫建立接通后,计算节点1将该呼叫对应的呼叫状态数据保存到数据节点中。特别在BCSM中,呼叫接通后,状态基本稳定,呼叫状态数据较少,且变化不频繁。
可以理解,接入节点与计算节点之间通过事务处理能力应用部分(Transaction Capabilities Application Part,TCAP)协议承载消息,TCAP消息中的对话号可唯一标识一个呼叫,因此,将呼叫状态数据以对话号为关键字进行保存,如下表2所示:
表2
字段名 |
字段类型 |
字段说明 |
会话地址DIALOG_ID |
字符串,长度32 |
TCAP协议消息中的对话号,关键字 |
C1 |
字符串,长度32 |
业务键,从IDP消息中取 |
C2 |
字符串,长度32 |
主叫号码,从IDP消息中取 |
C3 |
字符串,长度32 |
被叫号码,从IDP消息中取 |
C4 |
字符串,长度32 |
接入码 |
C5 |
字符串,长度1024 |
呼叫控制状态数据 |
C6 |
字符串,长度1024 |
协议栈状态数据 |
C7 |
字符串,长度1024 |
业务逻辑状态数据 |
C... |
字符串,长度32 |
扩展字段 |
保存到数据节点的呼叫状态数据主要有ID类数据和计费状态数据,对于ID类数据,通过划分不同的取值范围来保证业务正确,如消息ID,正常呼叫的消息ID取值范围是1~100,异常呼叫的消息ID取值范围是101~255,只需要将消息ID的取值范围保存到数据节点;对于计费状态数据,每次完成计费申请后,需要更新数据节点中保存的呼叫状态数据。
303、接入节点在对话表中增加该呼叫的对话号与计算节点1的映射关系,如下表3所示。
表3
接入节点还增加如表4的配置表,将计算节点进行分组,同组中的计算节点互为备份关系,默认所有的计算节点为同一个组。
表4
索引 |
计算节点1 |
计算节点2 |
计算节点3 |
... |
1 |
22 |
23 |
24 |
... |
304、接入节点与计算节点之间有心跳检测,即接入节点发送心跳消息给计算节点,如果接入节点在一个规定时间内没有收到计算节点1返回的心跳应答消息,即计算节点1发生了故障,此时接入节点删除对话表及配置表中计算节点1的记录。
305、当接入节点收到呼叫控制消息(非IDP,如ERB或ACR),该呼叫控制消息中包含了对话号,如果在本地对话表中找不到该呼叫控制消息中对话号对应的计算节点记录,则重新分配一个配置表中同组的可用的计算节点来处理该呼叫,并在在对话表中增加该对话号与新的计算节点的映射关系,如按照负荷分担算法选择配置表中同组的一个可用的计算节点2来处理,并在对话表中增加对话号与计算节点2的映射关系。
306、接入节点将呼叫控制消息转发给计算节点2进行处理。
307、计算节点2判断该呼叫控制消息对应的会话是否为本地建立的,并进行相应处理。
下面描述一下计算节点的内部处理过程,流程图如图6所示,包括:
A:消息接收确定单元可以包括第一消息接收单元和会话确定单元,由第一消息接收单元接收接入节点发送的呼叫控制消息,会话确定单元将呼叫控制消息中的对话号与本地储存的路由表中对话号进行匹配,如果路由表中已经储存了该对话号,则根据本地路由表中储存的对话号与业务能力单元的对应关系,将呼叫控制消息转发给相应的业务能力单元;
如果本地路由表中没有储存该对话号,则认为该呼叫控制消息对应的呼叫不是本地计算节点建立的,会话确定单元将该呼叫控制消息发送给任一可用的业务能力单元,并将该对话号与这一个可用的业务能力单元的对应关系储存到路由表中。
B:业务能力单元收到呼叫控制消息后,会根据其中的对话号查找对应的协议状态机,若能找到,把呼叫控制消息转发给对应的协议状态机;若找不到,则说明该呼叫控制消息对应的呼叫不是本地计算节点建立的,则执行步骤C。
C:业务能力单元向数据节点获取呼叫控制消息中的该对话号对应的呼叫状态数据和业务配置数据,呼叫状态数据可以包括接入码、计费状态数据等;并根据呼叫状态数据和业务配置数据建立业务能力单元侧的呼叫。
具体地,业务能力单元创建一个异常协议状态机,该异常协议状态机有两个状态,即呼叫监控状态和等待计费状态,在创建后处于呼叫监控状态,接收到ACR后进入计费等待状态,在发送申请计费(Apply Charging,AC)后重新回到呼叫监控状态;同时在业务能力单元侧创建一个呼叫,根据获取的呼叫状态数据和业务配置数据完成该呼叫的数据初始化。
D:业务能力单元根据接入码找到对应的业务逻辑单元,通过异常通知呼叫(Notify Abnormal Call)接口将创建的呼叫上报给业务逻辑单元,且通过异常消息发送(Send Abnormal Message)接口将呼叫控制消息发送给业务逻辑单元。
可以理解,在该计算节点处理本地建立的会话时,业务能力单元通过通知呼叫接口上报呼叫给业务逻辑单元,而通过消息发送(Send Message)接口发送呼叫控制消息。可见计算节点在处理本地和非本地建立的异常会话时,业务能力单元与业务逻辑单元之间的通信接口不同,这样避免在处理正常呼叫和异常呼叫时受到影响。
E:业务逻辑单元从异常通知呼叫接口接收呼叫后,在业务逻辑单元侧对应地创建一个呼叫,并根据对话号从数据节点获取呼叫状态数据和业务配置数据,完成该呼叫的初始化。这样通过业务能力单元和业务逻辑单元的交互,根据从数据节点获取的呼叫状态数据和业务配置数据创建了呼叫。
F:当业务逻辑单元从异常消息发送接口接收到呼叫控制消息时,对呼叫控制消息进行相应处理。
如果呼叫控制消息是请求类型的消息(如ACR或ERB),则根据呼叫状态数据和业务配置数据构造应答消息并发送。另外,如果呼叫控制消息为中间ACR时,业务逻辑单元还需要向OCS申请新的计费周期,并发送AC消息;如果是最终ACR时,业务逻辑单元需向OCS确认计费,记录话单,并释放呼叫。如果是ERB消息时,业务逻辑单元需要记录话单,并释放呼叫。
如果呼叫控制消息为通知类型的消息如Call Information Report,业务逻辑单元可以直接忽略。
可以理解,本发明实施例的方法不仅可以应用于呼叫业务系统中,也可以应用于窄带语音呼叫控制技术,宽带语音和数据(如短信、彩信系统)等领域。在宽带语音呼叫领域中在计算节点故障后进行的消息处理方法,与呼叫业务系统中的消息处理方法类似,不同的是设备之间通信时承载消息的协议不同,在宽带语音系统中通过(Session Initiation Protocol,SIP)协议承载,而在呼叫业务系统中是通过TCAP协议承载。
在数据领域中进行数据转发时,当计算节点与对端建立会话后,会将产生的会话状态数据如转发的内容数据储存到数据节点;而在某一计算节点故障后,接入节点将会话过程消息发送给其他的计算节点,其他计算节点从数据节点加载对应的内容数据,根据会话状态数据建立会话,并进行简易处理如完成内容数据的下发,保证业务的不中断,简易处理可以不需要支持一些高级功能,如定时发送、自定义回执等。
一种计算节点,结构示意图如图7所示,包括:
第一消息接收单元10,用于接收会话过程消息,会话过程消息中包括会话标识;
这里会话过程消息是指在该计算节点和对端通信的会话建立之后,计算节点接收到对端发送的消息;而在会话过程消息中都会包括会话标识,用来标识该会话过程消息是在哪个会话之下的,如呼叫业务系统中的对话号可以唯一标识一个呼叫。
会话确定单元11,用于确定第一消息接收单元10接收的会话过程消息中会话标识对应的会话是非本地计算节点建立的;
计算节点在与对端建立会话后,会在本地计算节点储存会话标识,则会话确定单元11在确定会话标识对应的会话是否是本地计算节点建立时,可以将会话过程消息中的会话标识与本地储存的会话标识进行匹配,若本地储存的会话标识中不包括会话过程消息中的会话标识,则确定会话标识对应的会话不是本地计算节点建立的。
消息处理单元12,用于当会话确定单元11确定后,向数据节点获取会话标识对应的会话状态数据和业务配置数据,根据会话状态数据和业务配置数据创建会话,并对会话过程消息进行相应的处理。
在数据节点中储存着业务配置数据如业务订购关系等信息;在本实施例中,ATCA架构系统中的计算节点在与对端建立会话后,还会将该会话中的会话状态数据包括自动分配的信息储存到数据节点。其中:会话状态数据是指在会话建立后产生的临时变化的数据,包括地址数据和/或计费状态数据。
消息处理单元12根据会话状态数据和业务配置数据创建会话时,具体地,将该会话的会话标识与会话状态数据及业务配置数据对应储存,创建异常会话实例,且创建的异常会话实例可以不严格按照协议规定实现,能够处理会话建立成功之后的消息保证会话不中断即可,不需要处理会话建立之前的消息。
消息处理单元12在对会话过程消息进行处理时,如果会话过程消息是通知消息,则可以忽略该通知消息;若是请求消息,则根据会话状态数据和业务配置数据来构造请求消息的应答消息。应答消息的内容包括:请求消息中的参数、协议规定的参数、保存在数据节点的会话状态数据包括自动分配的信息、业务配置数据等参数,在构造应答消息时,需要先获得这些参数,并按照这些参数设置应答消息的结构。
例如:在在呼叫业务系统的计算节点中,如果会话过程消息是中间ACR,消息处理单元12需要向在线计费系统申请新的计费周期,并下发申请计费消息;当接收到最终ACR时,消息处理单元12只需向OCS确认计费,记录话单并释放呼叫;如果会话过程消息是ERB时,消息处理单元12需要根据ERB记录话单并释放呼叫。
本发明实施例的计算节点中:第一消息接收单元10接收包括会话标识的会话过程消息,当会话确定单元11确定会话标识对应的会话不是本地计算节点建立的,消息处理单元12向数据节点获取会话标识对应的会话状态数据和业务配置数据;根据会话状态数据和业务配置数据创建会话,并对该会话过程消息进行相应的处理。这样在建立会话后,如果一个计算节点发生故障,另一个计算节点会根据故障计算节点上建立的会话对应会话过程消息中的会话标识,向数据节点获取到会话状态数据和业务配置数据,并根据会话状态数据和业务配置数据建立会话,对会话过程消息进行保证会话不中断的相应处理,提高了用户体验。
参考图8所示,在一个具体的实施例中,该计算节点中的消息处理单元12可以具体包括:业务能力单元120和业务逻辑单元121;其中:
业务能力单元120,用于当会话确定单元11确定会话标识对应的会话是非本地计算节点建立的,向数据节点获取会话标识对应的会话状态数据和业务配置数据,根据会话状态数据和业务配置数据创建业务能力单元120侧的会话;并将会话通过异常会话上报接口上报给业务逻辑单元121;将会话过程消息通过异常消息发送接口发送给业务逻辑单元121;
可以理解,这里的异常会话上报接口可以为异常通知呼叫接口,且如果会话确定单元11确定会话标识对应的会话是本地计算节点建立的时,业务能力单元120向业务逻辑单元121上报会话及发送会话过程消息的接口,与本实施例的异常会话上报接口和异常消息发送接口都不同,这样使得正常会话和异常会话通过不同的接口进行,相互不会受到影响。
业务逻辑单元121,用于接收到业务能力单元120上报的会话及发送的会话过程消息,根据会话状态数据和业务配置数据创建业务逻辑单元121侧的会话,并对会话过程消息进行相应的处理;
可以理解,业务能力单元120和业务逻辑单元121在建立会话,及业务逻辑单元121进行会话过程消息的处理,如方法实施例一中所述,在此不再赘述。
会话确定单元11,还用于将会话过程消息发送给会话标识对应的业务能力单元120。
计算节点的具体的内部处理过程,可以参加图3对应的实施例,这里就不再赘述了。
一种接入节点,结构示意图如图9所示,包括:
第二消息接收单元20,用于接收会话过程消息,会话过程消息中包括会话标识;
查找单元21,用于在本地会话表中查找是否包括第二消息接收单元20接收的会话过程消息中会话标识对应的计算节点;
可以理解,接入节点接收会话建立请求后,会按照负载均衡算法选择一个计算节点,并将会话建立请求发送给选择的计算节点进行会话建立,且将会话标识与计算节点的对应关系储存到本地会话表中,其中会话标识与该会话建立请求相对应。
当选择的计算节点与对端建立会话后,接入节点则接收对端的会话过程消息,并根据其中包含的会话标识转发给对应的计算节点进行处理。
选择发送单元22,用于当查找单元21查找到本地会话表中不包括会话标识对应的计算节点,则选择另一计算节点,并将会话过程消息发送给另一计算节点进行处理。
如果查找单元21在本地会话表中查找不到会话标识对应的计算节点,则说明该计算节点故障,选择发送单元22选择另一个计算节点进行处理给会话过程消息。
可以理解,如图10所示,本实施例的接入节点还可以包括:心跳检测单元23和对应关系增加单元24,其中:
心跳检测单元23,用于发送心跳消息给计算节点,当没有收到某一计算节点的心跳应答消息,删除本地会话表中某一计算节点的记录。这样在知道故障的计算节点后能及时更新本地会话表,使得故障计算节点上建立的会话中会话过程消息能得到及时处理,使得业务不中断。
对应关系增加单元24,用于在本地会话表中增加选择发送单元22选择的另一计算节点与会话标识的对应关系。
可见,本实施例的接入节点中:第二消息接收单元20接收会话过程消息,包括会话标识,查找单元21在本地会话表中查找是否包括该会话标识对应的计算节点;若不包括,选择发送单元22则选择另一计算节点,并将会话过程消息发送给另一计算节点进行会话的重建。这样使得在一个计算发生故障时,将故障计算节点上建立的会话中会话过程消息发送给其他任一正常的计算节点,由其他正常的计算节点进行会话重建后对会话过程消息进行相应处理,使得在计算节点发生故障后,会话业务不中断,提高了用户体验。
一种消息处理系统,结构示意图如图11所示,包括接入节点100、至少两个(图中以三个为例)计算节点200、300和400,系统中每个计算节点的功能一样,其中:
接入节点100,用于接收会话过程消息,会话过程消息中包括会话标识,在本地会话表中查找是否包括会话过程消息中会话标识对应的计算节点;若不包括,则选择另一计算节点,并将会话过程消息发送给另一计算节点;
计算节点200,用于接收接入节点100发送的会话过程消息;确定会话标识对应的会话不是本地计算节点建立的,向数据节点500获取会话标识对应的会话状态数据和业务配置数据;根据会话状态数据和业务配置数据创建会话,并对会话过程消息进行相应的处理。
本发明实施例的消息处理系统还包括:数据节点500,用于储存至少两个计算节点上建立会话的会话状态数据和业务配置数据。
本实施例中的接入节点100的消息处理方法如方法实施例二所述,而计算节点200、300及400的消息处理方法如方法实施例一所述,在此不再赘述。
本发明实施例的消息处理方法包括:接收包括会话标识的会话过程消息,当确定会话标识对应的会话不是本地计算节点建立的,向数据节点获取会话标识对应的会话状态数据和业务配置数据;根据会话状态数据和业务配置数据创建会话,并对该会话过程消息进行相应的处理。这样在建立会话后,如果一个计算节点发生故障,另一个计算节点会根据故障计算节点上建立的会话对应会话过程消息中的会话标识,向数据节点获取到会话状态数据和业务配置数据,并根据会话状态数据和业务配置数据建立会话,对会话过程消息进行保证会话不中断的相应处理,提高了用户体验。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM)、随机存取存储器(RAM)、磁盘或光盘等。
以上对本发明实施例所提供的消息处理方法、系统及设备,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。