分布式系统设计问题-Scala

Questions on Distributed System Design - Scala

我打算用多台机器实现排序(分布式排序)。 我将使用 Scala 对其进行编码。因为我对网络编程经验不多,所以需要大家帮我选择用什么库和方法来实现机器之间的通信:

1/ 有多少台机器可以使用消息进行通信(这将像 Scala 中的案例 class 一样实现)?我可以使用 ServerSocketChannel 吗?或者我应该为每台机器建立一个 TCP 服务器?我需要序列化和反序列化我的对象消息吗?如果需要,我可以使用 protobuf 吗?

2/ 如何通过网络发送数据?我应该使用 java.io 还是 java.nio?

我需要使用尽可能少的依赖项来构建我的项目。 非常感谢。

我将从最简单的高级消息传递库开始,既然您选择了 Scala,我将从 Akka 开始,它是为 Scala 设计的。

How many machines can communicate using Message

您可以与您可以连接的每台机器进行通信,例如整个互联网。

If needed, can I use protobuf for doing that?

我怀疑你不需要,但是是的。

How can I send data via network?

我会使用消息库

Should I use java.io or java.nio?

消息传递库可能会使用这些,但我不认为您需要直接使用它们。

I am going to implement sorting using many machines (distributed sorting).

已经有为 Scala 设计的库可以做到这一点。我会使用其中之一,例如Spark 或 Hadoop。