У нас есть сервис, который работает в 6 AWS регионов и у нас есть некоторые предпосылки, которые должны быть выполнены:AWS чтения реплики архитектуры
- Латентность запросов к базе данных должна быть очень низким
- It поддержки высокая пропускная способность запросов
- Было замечено, что процесс обновления базы данных имеет интенсивность ввода-вывода, поэтому увеличивается время ожидания запросов из-за блокировки db.
- Задержки в порядке секунд приемлема между обновлением и читать
Архитектуры, что мы обсуждали имели одну услуги, которая обновляет мастер-БД и один ведомый в каждом регионе (всего 6 рабов).
Мы нашли некоторые проблемы и возможные решения с тем, что:
- Существует ограничение 5 реплик для чтения с помощью AWS инфраструктуры.
Для решения этой проблемы мы, тем не менее, создаем прочитанные реплики прочитанных реплик. Это должно дать нам 25 случаев.
- В AWS существует ограничение на то, что вы не можете создать прочитанную реплику прочитанной реплики из другого региона.
Для решения этой проблемы мы, тем не менее, внутри приложения, обновляем 2 основные базы данных.
- Этот подход создаст проблему, которая в течение определенного периода времени может быть непоследовательной.
В реализации сервиса мы всегда можем воссоздать данные. Таким образом, есть работа, которая повторно обновляет данные от времени до времени (это одна из причин того, что обновление интенсивно в IO).
У кого-то есть аналогичная проблема? Как вы справляетесь с этим? Можем ли мы избежать создания и поддержания баз данных самим?
Мы используем MySQL, но мы довольно открыты для использования других совместимых БД.
1 для кэширования; Я использовал эластичный кэш с redis, прост в использовании и отлично –