Будущий проверяющий код клиент-сервер?
У нас есть веб-клиент-серверный продукт. Ожидается, что клиент будет использовать более 1 млн пользователей (его будет использовать известная компания).
Наш сервер настроен в облаке. Один из главных вопросов при разработке - как сделать всю программу будущей. Сказать:
- Облачный провайдер отключается, затем автоматически переходит на резервное копирование в другое облако
- Переход на другой сервер и т. Д.
Варианты, которые мы думали до сих пор:
- DNS: запуск DNS-сервера имен в облаке самостоятельно.
- Сервер каталогов - сервер каталогов также живет в облаке
- Пусть наш сервер вернет клиенту будущие перемещения, будущие URL-адреса и т. Д., Причем клиент специально разработан для обработки этих сценариев.
Так как это должно быть обычной проблемой, какое же решение лучше? Поскольку наша компания очень маленькая, мы ищем наименее технически и финансово дорогое решение (скажем, вариант 3 и т. Д.)?
Может ли кто-нибудь дать несколько указателей на то же самое?
К
3 ответа
Я бы выбрал вариант сервера каталогов. Он наиболее гибкий и дает вам максимальный контроль над тем, что происходит в данной ситуации.
Чтобы сам каталог не становился единой точкой отказа, у меня было бы три или четыре из них, работающие в разных местах с разными провайдерами. Пусть клиентское приложение случайным образом выберет один из URL-адресов директории при запуске и проработает их все, пока не найдет тот, который работает.
Для того, чтобы это было действительно в будущем, вам, вероятно, понадобится простой протокол для динамического обновления списка серверов каталогов - но будьте осторожны, если это плохо реализовано, вы оставите своих клиентов открытыми для всевозможных атак со спуфингом.
Число рейнольдса DNS: запросы могут кэшироваться, и для распространения изменений может потребоваться некоторое время (от часов до дней).
Я бы пошел на список приоритетных IP-адресов, которые могут быть обновлены на клиенте. В случае сбоя одного IP-адреса клиент попытается выполнить второй, третий и т. Д.
Я не уверен, что на 100% понял ваш вопрос, но если я это сделаю, это сводится к следующему: если мой сервер перемещается, как мои клиенты могут найти его?
Именно это и сделал DNS почти за последние три десятилетия.
Каждая возможная система, которую вы можете выбрать, должна быть загружена с начальными рабочими данными: адрес для сервера каталогов, адрес рабочего сервера для получения обновленного списка адресов и т. Д. Это то, для чего нужны корневые DNS-серверы, и поставщики ОС будут делать это. начальная часть для вас.
Конечно, DNS-запросы могут быть кэшированы, вот как это должно работать и как он масштабируется до размера Интернета. Вы управляете кэшированием (читайте о TTL) и обычно можете поддерживать его на нормальных значениях (не имеет смысла сокращать его до абсолютного минимального времени, необходимого для повторного развертывания сервера в другом месте).