轻量级可靠对象迁移协议
1. 引言
对象的移动性在不同系统中有不同的理解方式:
1. 仅复制代码,不复制状态,例如 Java 小程序。
2. “冻结”原始对象,复制其代码和状态,在使用副本前丢弃原始对象,这通常是编程书籍中“移动代理”的含义。
3. 通过“冻结”原始对象、复制其代码和状态、使其转发所有消息,然后解冻来添加并发控制。副本通过使用网络引用保持跨网络的词法作用域,如 Emerald 和 Obliq 采用这种方法。
然而,如果应用程序员想通过在适当的站点放置对象并按需移动它们来控制网络行为,这三种方法都存在问题:
- 糟糕的网络行为 :对象移动时创建从旧对象到新对象的别名,一系列移动会创建别名链。虽有减少链长度的技巧,但第三方依赖和网络跳数仍不可预测。此外,若站点故障,Emerald 使用广播恢复对象,在广域网上不实用。
- 弱语义 :一种改善网络行为的方法是放弃透明语义,即使用前两种方法之一。
为解决这些问题,可默认使对象具有移动性,即“自由移动对象”。从轻量级对象移动性开始,确保方法在调用它的线程中执行,用可靠的分布式算法保证可预测的网络行为,再通过限制来控制移动性。
2. 分布式执行的图表示法
使用分布图以简单而精确的方式描绘分布式执行,通过以下两个步骤从系统的任意执行状态获得分布图:
1. 语言图 :独立于分布,将执行状态建模为图,除对象外的每个语言实体对应一个节点。节点可异步发送和接收消息,Oz 对象是复合实体。
2.
超级会员免费看
订阅专栏 解锁全文
2536

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



