TongLINK/Q中保证消息可靠性的两种机制

时间:2022-10-08 10:31:00

【摘要】介绍了消息中间件保证消息可靠性的两种机制:消息的事务管理和消息的可靠性存储和传递,并对这两种机制进行了分析。

【关键词】消息;可靠性;事务;生命周期;中间件

中图分类号:V24文献标识码:A文章编号:1006-0278(2012)02-178-01

一、 消息中间件

消息中间件(MOM)是在分布式系统中应用程序用于消息传输的媒介。

消息中间件必须保证消息的可靠传输。消息的可靠传输指消息的传递在时间上无特殊的要求,在网络连通的情况下必须保证消息可靠的传递到目标节点。TongLINK/Q 在消息提交后,在遇到可恢复的故障(包括机器故障或网络故障)情况下能够保证消息的可靠传输。

TongLINK/Q的消息可靠传递通过两种机制加以保证,一是消息收发时的事务管理,二是消息的可靠存储和传递。

二、 消息的事务管理

事务为一组发送和接收消息的操作,组中的所有操作一起生效或放弃,即提交和回滚。如果提交,所有操作则开始执行;如果回滚,则所有操作一起放弃。

(一)事务的特点

1.一个事务中可包含多个消息(包括单消息和组消息)的发送操作和接收操作。

2.事务不能跨队列控制单元,事务中的所有操作只能局限于一个队列控制单元内。

3.事务涉及到的队列可以有多个,即一个事务中的操作可以包括针对多个队列的发送和接收。

(二)事务管理机制

1. 事务中如果有组消息操作,则组消息之间不允许嵌套,不允许交叉,只能顺序进行,即一个组消息完成后才能进行下一个组消息的操作。

2. 当事务中包含消息的接收操作,如果存在某个接收操作的确认方式为用户确认,在消息没有确认的情况下,如果进行提交操作,则提交失败;如果回滚,则上面的操作全部回滚。

3.事务中的普通消息接收,如果为手动确认方式,确认信号的发出可以在事务结束前的任何时刻。但对于组消息,确认必须紧跟最后一个子消息的接收,若组消息接收完毕后没有发确认信号,则不能继续后面的消息接收。

(三)异常情况下的事务回滚

1.发送方回滚处理:系统应自动回滚所有已经放入到队列中的消息;若事务中有组消息,则组消息也要回滚掉,即使组消息已经提交。

2.接收方回滚处理:系统应自动回滚所有已经收走的消息;事务要回滚掉所有的消息。

消息的事务管理保证了消息可靠投递到队列中,或可靠地从队列中取出使用。事务管理保证了几个消息同时放入队列都成功或都失败。事务管理保证了几个消息同时从队列中取出都成功或都失败,应用处理消息不成功可以将消息回退到队列中,等待下次继续处理。

三、 消息的可靠存储和可靠传递

消息可靠存储和传递是保证消息在两个队列间的可靠传输,而TongLINK/Q使用消息的生命周期和断点续传控制来保证消息可靠存储和可靠传递。

消息的生命周期是消息所具有的属性之一,它用来控制一个消息从开始发送到最终被用户接收所允许的最长时间。用户通过指定消息的生命周期,来指定消息的存活时间。一旦消息超过生命周期,核心将自动丢弃这一消息。当消息在传输过程中由于意外原因引起传输失败时,TongLINK/Q 将从传输失败点接续发送该消息,而不是将整个消息重新发送。通过断点续传机制,既可以有效减少高故障率网络上的冗余通讯量,又可以避免极端情况下,如频率极高的网络抖动,消息传输的反复失败重传。

TongLINK/Q支持两种消息:持久消息和非持久消息。持久消息的消息数据存储在硬盘上,TongLINK/Q运行时支持网络故障断点续传,TongLINK/Q重新启动后,根据接收方接收消息的大小进行恢复,实现断点续传;非持久消息的消息数据存储到内存中, TongLINK/Q运行时支持网络故障断点续传,系统重启动后,消息丢失。在消息传输过程中TongLINK/Q异常终止,系统重新启动时,在生命周期内队列中原有的持久消息将被恢复,而非持久消息则无法恢复。

恢复策略如下:

1.系统重新启动前若队列的消息长度限制或消息最大数限制被改小,恢复时:若所有的消息都符合现在的属性要求,即消息总数不大于当前的消息数,并且消息的长度不大于当前的限制,则队列中的消息恢复成功;否则消息恢复失败,整个队列控制单元启动失败。

2.系统重新启动前若队列的消息长度限制或消息最大数限制被改大,则队列中的消息恢复正常,启动后队列中的消息按照新的属性要求进行。

3.系统重新启动前若队列的消息组织模式在FIFO和Priority之间发生了互换变化,则恢复时按照新的组织模式进行重组。若由Priority转化为FIFO时,则消息按照到达队列的时间进行排列; 若由FIFO转化为Priority时,则消息按照优先级由高到低进行排列,同一优先级按照FIFO的方式进行排列。

在传输过程中不论是机器意外停机或网络意外中断,在消息生命周期内这些故障得以恢复后,TongLINK/Q 可以保证消息可以继续可靠的传递到目的队。

上一篇:亚里士多德:遵从理性规律的实践原则——中道 下一篇:浅淡电影剧本的创作与主题