二进制兼容如何分布Akka [英] How binary compatible is distributed akka
问题描述
尽管akka有关于jar替换的二进制兼容性的文档,但我找不到有关协议二进制兼容性的任何信息。
从根本上讲,actor API是邮件的邮箱。因此,只要消息保持二进制兼容,就有可能将消息发送到运行不同版本(与jar不兼容)的akka的其他系统。
/ p>
- 具有固定消息集的2个应用程序
- 没有类型参与者(仅使用
actor!message
和actor?message
) - 使用akka 2.3.9的应用程序1
最早的akka应用程序2版本可以使用什么?
我要确认的其他项目:
- Akka群集协议在这里无关紧要-每个应用程序可以拥有自己的群集,并可以使用 TCP远程访问
- Scala二进制兼容性是irrellevant as很好-系统正在通过TCP协议与一组预编译的消息进行通信(可能在Java中为保证/偏执可能已经指定了这些消息)
首先, 2.0系列具有相同的功能远程配置,但是 1.3 无法正常工作?
到目前为止,我们还没有提出已采取措施确保Akka版本之间的协议兼容性-这还意味着对次要版本进行更新。但是,我们尚未引入不必要的更改,并且在Akka协议级别上具有纯远程处理的机会应该很好,因为它可以在2.2.0版以后的各个版本中使用。在此之前,对远程协议握手进行了更改,这很可能会破坏兼容性,而Akka 1.x则完全是另一回事。
我们知道,这个答案不是令人满意,我们将通过完全指定远程协议并执行跨版本测试来进行此工作,但是我们还没有足够的资源来解决这项繁重的任务。
While akka has documentation regarding binary compatibility for drop in jar replacement, I can't find anything regarding protocol binary compatibility.
At the basic level, the actor API is a mailbox of messages. Therefore as long as the messages stay binary compatible there's every possible that messages can be sent to other systems running different (jar-incompatible) versions of akka.
So given:
- 2 applications with a fixed message set
- No Typed actors (only using
actor ! message
andactor ? message
) - "Application 1" using akka 2.3.9
What's the earliest version of akka "Application 2" could use?
Other items I'd like confirmed:
- Akka clustering protocol is irrelevant here - each application can have their own cluster and communicate between the clusters using TCP remoting
- Scala binary compatibility is irrellevant as well - the systems are communicating via a TCP protocol with a pre-compiled set of messages (quite possibly specified in Java for assurance/paranoia)
As a start, the 2.0 series has the same remoting configuration, but is there any reason that 1.3 couldn't be made to work?
Up to this point we have not put measures in place that would ensure protocol compatibility between Akka versions—this also means minor version updates. We have not, however, introduced gratuitous changes and on the Akka protocol level with pure Remoting chances should be good that it works across versions since 2.2.0. Before that there were changes to the remoting protocol handshake that will likely break compatibility, and Akka 1.x was a completely different matter entirely.
We know that this answer is not satisfying and we will work on this by fully specifying the remote protocol and implementing cross-version tests, but we have not yet had the resources to tackle this large task.
这篇关于二进制兼容如何分布Akka的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!