Больше чем одно ядро: как Tarantool стал многопоточным
Программный комитет ещё не принял решения по этому докладу
Целевая аудитория
Тезисы
Масштабируемость является одним из важнейших аспектов любой современной СУБД, причём пользователи ожидают от СУБД как возможности масштабироваться вертикально, в рамках одной машины, так и горизонтально, на кластере.
Исторически, проект Tarantool позиционировался как сервер приложений с СУБД на борту, способный "выжать" максимум из одного ядра процессора, а для масштабируемости, в том числе на одной машине, предлагалось использовать шардирование — подход, который обычно ассоциируется с горизонтальным масштабированием. Такое решение позволило избежать классических проблем производительности, возникающих при вертикальном масштабировании, таких как lock convoy и false sharing, но в то же время ограничило сферы применения и усложнило конфигурацию приложений на базе Tarantool.
В этом докладе я расскажу о том, как мы сняли изначальное ограничение Tarantool на один поток исполнения, предоставив приложениям возможность масштабироваться в пределах одного процесса. Мы рассмотрим подход к многопоточности, выбранный для Tarantool, и причины выбора этого подхода, расскажем, как мы обошли типичные проблемы, связанные с созданием многопоточных приложений, а также приведём примеры сценариев использования Tarantool, которые открываются с появлением новой функциональности.
Впервые познакомился с внутренним устройством современных СУБД в 2016 году, когда устроился на работу разработчиком в команду Tarantool. С тех пор удалось поучаствовать в развитии практически всех подсистем этого проекта, начиная с дискового движка хранения данных и заканчивая репликацией и шардированием.
Видео
Другие доклады секции
Базы данных и системы хранения