#java #scala #distributed-system
#java #scala #распределенная система
Вопрос:
Я собираюсь реализовать сортировку с использованием многих машин (распределенная сортировка). Я буду кодировать его с помощью Scala. Поскольку у меня нет большого опыта в сетевом программировании, мне нужно, чтобы вы, ребята, помогли мне выбрать, какая библиотека и метод обеспечивают связь между машинами:
1 / Сколько машин может обмениваться данными с помощью Message (это будет реализовано как класс case в Scala)? Могу ли я использовать ServerSocketChannel? Или я должен создать TCP-сервер для каждой машины? Нужно ли мне сериализовать и десериализовать мое объектное сообщение? Если необходимо, могу ли я использовать protobuf для этого?
2 / Как я могу отправлять данные по сети? Должен ли я использовать java.io или java.nio?
Мне нужно создать свой проект, используя как можно меньше зависимостей. Большое спасибо.
Комментарии:
1. Ответ на большинство из них — «это зависит» — от того, что вы сортируете, где хранятся данные, объемы по сравнению с количеством машин и так далее.
Ответ №1:
Я бы начал с простейшей библиотеки обмена сообщениями высокого уровня, и, поскольку вы выбрали Scala, я бы начал с Akka, которая была разработана с учетом Scala.
Сколько машин может обмениваться данными с помощью Message
Вы можете взаимодействовать с каждой машиной, к которой вы можете подключиться, например, со всем Интернетом.
Если необходимо, могу ли я использовать protobuf для этого?
Я подозреваю, что вам это не нужно, но да.
Как я могу отправлять данные по сети?
Я бы использовал библиотеку обмена сообщениями
Должен ли я использовать java.io или java.nio?
Библиотека обмена сообщениями, вероятно, будет использовать их, но я бы не стал предполагать, что вам нужно использовать их напрямую.
Я собираюсь реализовать сортировку с использованием многих машин (распределенная сортировка).
Существуют библиотеки, разработанные для Scala, которые уже делают это. Я бы использовал один из них, например, Spark или Hadoop.
Комментарии:
1. Мне не рекомендуется использовать Hadoop, Spark, Akka. Любая стандартная библиотека?