2016-10-02 115 views
0

我將使用許多機器(分佈式排序)實現排序。我將使用Scala編寫代碼。因爲我沒有太多的網絡編程經驗,所以我需要你們幫我選擇使用哪種庫和方法來實現機器之間的通信:關於分佈式系統設計的問題 - 斯卡拉

1 /有多少臺機器可以使用Message進行通信(這將實現爲大小寫在Scala中的類)?我可以使用ServerSocketChannel嗎?或者我應該爲每臺機器建立一個TCP服務器?我是否需要序列化和反序列化我的對象消息?如果需要,我可以使用protobuf來做到這一點嗎?

2 /如何通過網絡發送數據?我應該使用java.io還是java.nio?

我需要使用盡可能少的依賴性來構建我的項目。 非常感謝。

+0

大部分問題的答案是「它取決於」 - 您的排序方式,數據的保存位置,卷數與機器數量等等。 –

回答

2

我會從最簡單的高級消息傳遞庫開始,既然您選擇了Scala,我會從設計了Scala的Akka開始。

多少機器可以使用信息通信

您每次可以連接到例如計算機進行通信整個互聯網。

如果需要,我可以使用protobuf來做到這一點嗎?

我懷疑你不需要,但是。

如何通過網絡發送數據?

我會用短信庫

我應該使用java.io和java.nio的?

消息傳遞庫很可能會使用這些,但我不認爲你需要直接使用它們。

我打算使用很多機器(分佈式排序)來實現排序。

有一些爲Scala設計的庫已經這樣做了。我會使用其中的一種Spark或Hadoop。

+0

我不鼓勵使用Hadoop,Spark,Akka。任何標準庫? – hminle