面向事务应用中副本的组通信协议
1. 引言
在分布式应用里,多个对象组成的组相互协作,对象发送的消息需按因果关系传递到目标对象。传统组协议虽能对网络中的消息进行因果排序,但会带来 $O(n)$ 到 $O(n^2)$ 的计算和通信开销。从应用角度看,对所有消息进行因果排序并无意义。
为解决这一问题,引入事务概念来定义对应用有重要意义的消息之间的因果关系。事务在客户端处理器向服务器处理器发送读写请求以操作对象,服务器则将响应返回给客户端。基于事务概念,定义重要消息并对其进行因果排序。同时,为提高系统的可靠性、可用性和性能,每个对象都进行了复制。
常见的向量时钟虽广泛用于消息的因果排序,但在事务启动和终止时,其方案需要改变。因此,提出了对象向量,其大小由对象数量决定,而非事务数量。还将探讨基于对象向量的 TBCO(基于事务的因果排序)协议,该协议仅对重要消息进行因果排序。
2. 事务消息
2.1 事务
系统由通过网络互连的多个处理器 $p_1, …, p_N$($N > 1$)组成。为增强系统性能,对象会被复制,每个对象 $o_a$ 的副本分配到一个处理器 $p_t$ 中。当处理器 $p_t$ 接收到带有操作 $op_a$ 的请求消息 $m$ 时,会计算该操作并将响应消息返回给发送者。不过,网络中消息可能丢失或乱序传递。
客户端处理器 $p_s$ 中的事务 $T_i$ 会向服务器处理器发送读写请求来操作对象 $o_a$ 的副本。读请求会发送到拥有该对象副本的一个处理器,而写请求会发送到所有副本,即采用“一读多写”原则。事务 $T_i$ 结束时会提交($c_i$)或中止($a_i$),若所有操作
超级会员免费看
订阅专栏 解锁全文
10万+

被折叠的 条评论
为什么被折叠?



