У меня возник вопрос относительно глобальной доступности API и производительности. По сути, мы хотели бы создать API, который является центральным для нашего бизнеса, но он должен быть высокодоступным и производительным во всем мире, а это означает, что время отклика API должно быть минимальным, независимо от того, выполняется ли вызов в США, Китае или в любой другой стране мира. API фактически является интерфейсом к архитектуре микросервисов, управляемой доменом. В настоящее время мы используем Microsoft Azure в качестве нашего облачного провайдера для размещения этих микросервисов, но я хотел получить несколько предложений по созданию решения, которое сделает это продуктивным во всем мире. Нужно ли нам развертывать сервисы в нескольких регионах, чтобы это работало? Если да, то как мне направить входящий запрос в соответствующий регион?





Я бы разделил ваши данные по регионам, используя имя пользователя в качестве ключа раздела. Распространяйте свои микросервисы и базы данных по всему миру в подходящих местах, но сохраняйте единую центральную службу входа. Когда пользователи регистрируются в вашей центральной службе регистрации, вы назначаете им регион в зависимости от их домашнего адреса, IP-адреса или какого-либо другого географического показателя. Когда они возвращаются для входа во второй раз (используя центральную службу), вы аутентифицируете их и извлекаете их регион из центральной БД. Теперь вы можете направить весь дополнительный трафик в соответствующий регион для наилучшей производительности.
Вам нужно будет реализовать полный набор доменов в каждом регионе.
Боюсь, ваш единственный выход - это репликация всех данных. MS и AWS предлагают эту услугу. Вы можете выполнить поиск геоизбыточного хранилища Azure, чтобы узнать об их версии. Я не знаю, каково их SLA для репликации, но предполагаю, что это займет секунду или две.
Спасибо @Brad Irby. Я ценю помощь.
Спасибо за ваш комментарий. Что, если пользователям нужен доступ ко всем данным, а не только к данным, которые для них разделены?