Будущий проверяющий код клиент-сервер?

У нас есть веб-клиент-серверный продукт. Ожидается, что клиент будет использовать более 1 млн пользователей (его будет использовать известная компания).

Наш сервер настроен в облаке. Один из главных вопросов при разработке - как сделать всю программу будущей. Сказать:

  1. Облачный провайдер отключается, затем автоматически переходит на резервное копирование в другое облако
  2. Переход на другой сервер и т. Д.

Варианты, которые мы думали до сих пор:

  1. DNS: запуск DNS-сервера имен в облаке самостоятельно.
  2. Сервер каталогов - сервер каталогов также живет в облаке
  3. Пусть наш сервер вернет клиенту будущие перемещения, будущие URL-адреса и т. Д., Причем клиент специально разработан для обработки этих сценариев.

Так как это должно быть обычной проблемой, какое же решение лучше? Поскольку наша компания очень маленькая, мы ищем наименее технически и финансово дорогое решение (скажем, вариант 3 и т. Д.)?

Может ли кто-нибудь дать несколько указателей на то же самое?

К

3 ответа

Решение

Я бы выбрал вариант сервера каталогов. Он наиболее гибкий и дает вам максимальный контроль над тем, что происходит в данной ситуации.

Чтобы сам каталог не становился единой точкой отказа, у меня было бы три или четыре из них, работающие в разных местах с разными провайдерами. Пусть клиентское приложение случайным образом выберет один из URL-адресов директории при запуске и проработает их все, пока не найдет тот, который работает.

Для того, чтобы это было действительно в будущем, вам, вероятно, понадобится простой протокол для динамического обновления списка серверов каталогов - но будьте осторожны, если это плохо реализовано, вы оставите своих клиентов открытыми для всевозможных атак со спуфингом.

Число рейнольдса DNS: запросы могут кэшироваться, и для распространения изменений может потребоваться некоторое время (от часов до дней).

Я бы пошел на список приоритетных IP-адресов, которые могут быть обновлены на клиенте. В случае сбоя одного IP-адреса клиент попытается выполнить второй, третий и т. Д.

Я не уверен, что на 100% понял ваш вопрос, но если я это сделаю, это сводится к следующему: если мой сервер перемещается, как мои клиенты могут найти его?

Именно это и сделал DNS почти за последние три десятилетия.

Каждая возможная система, которую вы можете выбрать, должна быть загружена с начальными рабочими данными: адрес для сервера каталогов, адрес рабочего сервера для получения обновленного списка адресов и т. Д. Это то, для чего нужны корневые DNS-серверы, и поставщики ОС будут делать это. начальная часть для вас.

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

Другие вопросы по тегам