// личный канал‑лог
gavrilovlog
← все записи

Highload-шардирование - WTF?!

👁 582
Да ладно, все просто, если можно так сказать, суть в том, чтобы масштабировать систему горизонтально. Шардированием называем процесс разбиения данных на отдельные части, эти части в итоге распределяются на несколько серверов. А шардом называем сервер, который содержит фрагмент этих данных. Вообще шардирование принято относить к базам данных, но в целом этот термин можно применить к любой системе выполняющей обработку или хранение данных. Например распределение запросов между серверами, микросервисами и тд. Для чего это шардирование нужно? Это позволяет распределять нагрузку на несколько серверов и повышать производительность приложения, обрабатывающего эти данные. Также это повышает доступность системы, ведь распределение данных или запросов между серверами в случае отказа одного сервера могут быть обработаны другими серверами. Один из моих коллег говорил: Шардирование - это плохо! Не шардирование - тоже плохо! В целом процесс шардирования это достаточно трудоемкая задача, которая требует тщательного планирования и проектирования. Нужно учитывать типы запросов, распределение данных, количество серверов, доступность и так далее. Поэтому в некоторых случаях это может быть неэффективным, например когда у нас в запросах используется пересечение шардов, как в случае запроса пользователей и заказов. Хранить эти данных в разных базах не рекомендуется, так как это может замедлить обработку. Для этого обычно используют другие методы масштабирования. Многие базы данных дают возможность настроить шардирование из встроенных инструментов, MongoDB, Cassandra, CockroachDB. В общем и целом, шардирование - это инструмент оптимизации, но как известно _преждевременная оптимизация ведет к усложнению. Поэтому использовать инструменты нужно осознано, а не так чтобы влепить в “проекте с нуля” shards = n_ и все сделается само. 💪
421