Лучший дизайн для распределенных баз данных - PullRequest
2 голосов
/ 05 мая 2011

У меня есть проект, в котором у нас есть одна центральная система, которая предоставляет API поверх MySQL.Теперь нам нужно реплицировать один и тот же сервис локально на несколько разных блоков (их может быть более 50).Мы хотели иметь локальный кеш БД на каждом из этих блоков, чтобы обеспечить быстрые ответы и аварийное переключение, если «центральная» система выйдет из строя.

Есть идеи, каков лучший дизайн для этого?Я думал о настройке главного / подчиненного, но я не уверен, что это работает с 50+ серверами.Я не уверен, что лучший подход.

Ответы [ 2 ]

1 голос
/ 05 мая 2011

А как насчет собственного решения MySQL для репликации ?Если вы уже исключили это, вы должны сказать, почему.

0 голосов
/ 05 мая 2011

С репликацией, которую я видел, у вас есть хозяин и раб. Если мастер падает, один из рабов вступает во владение. С более чем 50 рабами у вас будет длинная (и запутанная) цепочка мастеров.

Не зная ничего о типе данных, которые у вас есть, или процентах чтения / записи, я бы предложил один из следующих:

  1. Кэшировать статические данные локально (memcache и т. Д.). Чтения будут локальными, а записи возвращаются мастеру mysql. Это работает в основном для статической информации о конфигурации. У меня сейчас 6 серверов с этой настройкой.
  2. Осколки ваших данных. Имея 50 серверов, установите их в 25 пар «главный / подчиненный» и поместите 1/25 данных на каждый шард. Получите еще один сервер для резервирования N + 1.

Надеюсь, это поможет.

...