VShard - горизонтальное масштабирование в TarantoolГрид архитектура
Работает в Tarantool над разработкой серверной части. Занимался разработкой дискового движка и поддержкой движка в оперативной памяти. Разработал модуль горизонтального масштабирования, сделал первую версию слияния SQLite и Tarantool, разработал новый алгоритм обновления индексов на LSM-деревьях в дисковом движке. Разработал алгоритм смены мастера в репликационном кластере, алгоритм проксирования запросов внутри реплика-сета. Реализовал протокол Two-Phase Commit в Tarantool.
Презентация
До 2018 года единственным средством горизонтального масштабирования СУБД Tarantool был Shard - это модуль, реализующий шардинг - частный случай горизонтального масштабирования. Shard реализует шардирование по функции от первичного ключа, поддерживает изменение топологии кластера, ребалансировку. При этом у него есть три существенных недостатка:
- нет никакой возможности хранить логически связанные данные на одном узле, и ребалансировать их всегда вместе;
- ребалансировка либо успешно выполняется целиком, либо происходит ошибка, и все переносится заново;
- для ребалансировки требуется заново пересчитывать шард-функции от каждой записи в каждой таблице.
Эти минусы не позволили использовать Shard в одном из важных проектов. В начале года была завершена разработка нового модуля VShard - это альтернативная реализация шардирования. В ней ребалансировка выполняется поэтапно, можно задавать произвольную шард-функцию для обеспечения локальности связанных данных, результат вычисления шард-функции сохраняется в каждой записи и не перевычисляется.
В рамках доклада пойдет речь о внутреннем устройстве VShard, о его подсистемах и реализации, с примерами использования.