Пытался внедрить систему электронного голосования в качестве проекта для колледжа и просто столкнулся с самым важным шагом к моей цели <архитектура системы>
Многосерверный / Многопользовательский, ДОЛЖЕН быть действительно надежным, поскольку около 80 миллионов клиентов находятся в сети. Он также ДОЛЖЕН разрешать присоединение нового сервера для поддержки процесса голосования. Его выводом будет статистика и отчеты, так что он ДОЛЖЕН Позвольте мне собирать информацию в любое время, Поддерживая шифрование, хэширование, дайджест-подтверждение, и т. д.
Моя цель - просто поддержать множество клиентов без единой центральной точки отказа, а затем сделать клиента подходящим сервером для аутентификации и голосования
Подходящий сервер (ы) зависит от 2 критериев:
- Приоритет расстояния до сервера
- Приоритет загрузки сервера
Используются первые критерии Только изначально, оба используются в процессе голосования
После поиска образцов по моему проекту найдено 6 решений:
- Динамический DNS-сервер между серверами и клиентами
- Диспетчер балансировки нагрузки веб-фермы между клиентами и серверами
- Безсерверное p2p-облако серверов, клиент присоединяется в качестве сервера p2p, используя PNRP для получения списка серверов
- Облако p2p серверов / State-Server, клиент подключается к серверу состояний для получения списка серверов
- Дерево серверов вниз от основного сервера
- Сеть DHT и система баз данных
С моей точки зрения, последнее решение было подходящим, так как не было ни единой точки отказа, это заставило меня начать поиск готовой библиотеки DHT или полностью распределенной системы для интеграции в мое приложение или просто заново изобрести колесо и реализовать все это с нуля!
Вопросы:
- Я выбрал правильное решение?
Если ДА, укажите мне, что правильный путь ведет к стандартной библиотеке или системе [.NET]!
Если НЕТ, укажите мне подходящее решение [.NET], даже если я не упомянул его в своих 6 решениях!
С уважением,