Примерные данные по кластеру:
1 сервер - Балансировщик приложении
2 сервера - Сервер приложении
2 сервера - Сервер БД
1 сервер - Сервер поиска и хранении
Детальной разницы и преимущества не знаю, поэтому хотелось бы узнать у более компететных участников форума.
Что можно почитать на эту тему? Куда смотреть?
Ответ
Тема слишком обширная. Много чего можно посоветовать. Но банально.
Есть у вас 1 сервер БД, к примеру. Что будет, если он упадёт? Всё плохо. Во-первых, вы данные потеряете (по крайней мере данные с прошлого бекапа). Во-вторых, ваши сервисы остальные работать не смогут без базы.
Теперь же, предположим, у вас 3 ноды базы в кластере и настроена репликация (то есть, дублирование данных). Если 1 нода выйдет из строя, то кластер продолжит работу. Если у вас 5 нод, то кластер может выдержать потерю 2 нод.
Это, если кратно. Естественно, всё зависит от архитектуру СУБД. Что хорошо для riak, то не очень для mongodb и т.п. Но в целом кластеризация помогает сохранить работоспособность даже при потере каких-то узлов в системе.
Плюс, это даёт распределение нагрузки, если хорошо всё связать с loadbalancer'ом.
В плане репликации в целом там обычно две модели:
master-master. Сложно реализуемый вариант. Обычно при этом попираются принципы ACID. У нас, к примеру, использует RethinkDB, там как раз master-master. Как даунсайд - отсутствие транзакций и т.п. плюшек, которые обычно есть в реляционных базах. В таком варианте все ноды могут писать данные, от этого все проблемы.
master-slave. Проще реализовать. Пишет только master и пушит в слейвы. Со слейвов можно только читать. Отсюда простота реализации. Если выходит из строя мастер, то обычно слейвы голосует за то, кто будет новым мастером. Если всё удачно, то слейв становится мастером, а все остальные слейвы переключаются на него.
Книги могу посоветовать в большей степени только на английском:
Highscalability (:
NoSQL Guide от Мартина Фаулера.
Best practices по архитектуре в облаке от Amazon
Ещё советую читать статьи про конкретные реализации (по конкретной СУБД). Поможет этот сайт.
Как уже сказал, лучше читать статьи про конкретные реализации: всё про репликацию в MaridDB, репликация и кластеризация в Postres
Про Scalability
Комментариев нет:
Отправить комментарий