透明远程处理和位置透明度之间的差异

ric*_*din 9 java remoting scala rmi akka

我用Google搜索了一下,找到了上述两种远程处理策略之间差异的一个很好的解释,即透明的远程处理位置透明度.

据我所知,前者是基地Java RMI,后者是基地Akka.我非常清楚Java RMI,我理解透明的远程处理意味着什么,但是怎么样Akka

非常感谢所有回复.

Vik*_*ang 14

这两者实际上是对立的.

"透明远程处理"是指使远程呼叫看起来像本地呼叫."位置透明度"是指使本地呼叫看起来像远程呼叫.

虽然这可能听起来不是什么大不了的事 - 但事实并非如此.这完全取决于您可以做出的假设.通常,本地调用具有更高的保真度,因为可能的错误和故障模式更少.通过在"位置透明"拥抱那些失败和错误模式,它不再重要技术,其中发送器和接收器位于.

使用"透明远程处理"并不明显您正在跨越异步和二进制边界,因此,调用线程是否能够取得进展,是否会有关于通信问题或信息丢失或损坏的通知.

我希望能回答你的问题,

干杯,√


slo*_*ouc 5

文档

上一节介绍了如何使用角色路径来实现位置透明。此特殊功能值得进一步解释,因为相关术语“透明远程处理”在编程语言,平台和技术的上下文中使用的方式完全不同。

基本上,透明远程处理与RMI(如您自己所说)相关联,意味着在不知道方法是在本地执行还是要通过网络发送数据以在远程对象上执行的情况下,在对象上调用方法。

位置透明性是类似的哲学,但与参与者有关。这意味着Akka API不会区分本地参与者和远程参与者。更具体地说,这意味着即使角色可能在本地或远程角色系统中运行,一旦获得它(使用系统名称,角色名称和远程计算机主机+端口),就可以像使用它一样使用它在本地运行。如果将某些角色从本地运行切换为远程运行(反之亦然),则只需更改角色查找即可(因为它现在位于其他主机上)。但是一旦ActorRef获得,您的其余代码将不在乎actor是在本地还是在远程运行。

另请参阅此处