Каковы другие способы создания сервера из клиента, кроме простой реализации алгоритма консенсуса? - PullRequest
0 голосов
/ 21 мая 2018

Итак, у меня есть этот проект, в котором я должен создать клиент-серверное приложение, которое может взаимодействовать между подключенными узлами (подключенными устройствами с этим приложением).Это должно быть только в локальной сети (сегмент L2, маргинальный маршрутизаторы).Через сеть узлы могут общаться.Каждый узел может отправить сообщение либо всем узлам, либо только одному (определенному) узлу.

  • сервер может быть статическим или динамическим
  • приложение гарантирует, что не существует 2 серверов- для сети TCP / IP и для выбранного порта

И мне интересно, как это сделать, когда сервер выключен, клиенты во время пульса будут знать, что это так, и создатьновый сервер (один из клиентов). Я думал о алгоритме Консенсуса или часах Лампорта - когда вы ждете, пока все клиенты отправят свои сообщения, а клиент, получивший их первым, станет сервером, но прежде всего ябыл бы признателен за более простое решение, и во-вторых, я понятия не имею, как реализовать их в коде.

1 Ответ

0 голосов
/ 21 мая 2018

Что я мог бы сделать, перед любым действием между сервером и клиентом, или, может быть, каждые 5 действий (зависит от требуемой производительности), я бы сделал метод checkStatus, чтобы проверить, что сервер работает.в противном случае клиент выбрал бы один, чтобы сделать его сервером.Но я не знаю, зачем вам это делать, обычно клиент - это обычный компьютер, а сервер обладает высокой вычислительной мощностью.у вас также будет много проблем на уровне безопасности и памяти.

Если я действительно понимаю, что вам нужно (у меня была такая же задача в моем университете, я думаю, что могу помочь вам. вам нужноодноранговое приложение и серверное приложение в одном проекте. Клиент будет проверять сервер, если у него есть файлы (например) или что он может получить к ним доступ. если он может, то он загружает их. если клиент не можетдоступ к определенной папке или файлу на сервере, он может проверить другие клиенты, если они хранят эти файлы с сервера в своем хранилище, и они могут заполнить его или только один из них, если вы хотите сделать это проще.эта программа мне не подходила, поэтому я хранил информацию в текстовых файлах (у каждого клиента есть текстовый файл с именами файлов), а на сервере также была текстовая база данных.

, чтобы быть кратким, Что вам нужно :

  • Клиентское приложение (может выполнять одноранговую работу или работать с сервером)
  • Приложение сервераion
  • База данных для сервера и мини-базы данных для клиентов.
  • общение с использованием ftp или любого другого протокола, который вам нужен для вашего приложения.

Редактировать: Мой ответ был слишком расплывчатым, так как я не совсем понял, что вам нужно, япровел некоторые исследования, и я думаю, что вы можете достичь того, чего хотите, с atomix Реактивная среда Java для построения отказоустойчивых распределенных систем.Вы можете проверить на сайте .

...