Введение 0:01 Монс Андерсон и Игорь Латкин представляют проект "Тарантул" - систему для хранения и обработки данных. Тарантул обладает возможностью писать код внутри базы данных, что делает его более эффективным.
Реализация проекта 1:58 Проект занимается хранением и рефрешем вау-стокинов, а также авторизацией через другие почтовые сервисы. В 2013 году проект был реализован с использованием простых сущностей и рефрешеров. Проблемы начались, когда токины перестали обновляться, что привело к 25% аунду.
Решение проблем 5:16 В 2015 году проект столкнулся с проблемой нехватки ресурсов из-за быстрого роста. Было решено использовать новый Тарантул с мастер-мастер-репликацией. Однако возникла проблема с увеличением количества запросов на провайдер из-за реплик.
Решение проблемы с помощью Рафта 9:57 Рафт - простой консенсус-алгоритм, который позволяет выбрать лидера и работать с ним до перевыборов. В Тарантуле изначально нет Рафта, но можно использовать готовый модуль из поставки. После реализации Рафта каждая нода становится лидером или фолловером.
Реализация кворума в распределенной системе 10:59 В видео объясняется, как реализовать кворум в распределенной системе, используя ло. Код прост и понятен, но требует дополнительных объяснений.
Проблема потери связи между нодами 12:36 Если одна из нод теряет связь с другими, система продолжает работать, используя алгоритм рафта. Рефрешеры продолжают работать, но могут быть направлены только на одну ноду.
Восстановление целостности системы после потери связи 14:00 Рефрешеры могут продолжать работать, даже если одна из нод потеряла связь с другими. После восстановления связи между нодами, система снова становится целостной.
Работа с аксе-токенами и рефреш-токенами 15:35 Аксе-токены живут один час и могут быть получены из рефреш-токенов. Рефреш-токены могут быть рефрешены даже если одна из нод потеряла связь с другими.
Проблема с ЦП 18:50 Видео обсуждает проблему с ЦП, которая возникает из-за использования шардинга. Шардинг - это способ разделения данных на несколько частей, каждая из которых реплицируется.
Реализация шардинга 19:16 Шардинг может быть реализован на клиенте или внутри базы данных. Внутри базы данных шардинг сложнее, но клиенты становятся проще. Ре-шардинг становится проще, когда база данных полностью отвечает за свои данные.
Пример шардинга 22:03 В примере пользователь запрашивает ключ, который лежит на первом шарде. База данных знает, кто является лидером и фолловером, и перенаправляет пользователя к нужному шарду.
Решение проблемы с соединениями 24:04 Проблема с соединениями решается с помощью добавления прокси-шардов. Прокси-шарды вычисляют ключ и определяют, кто является лидером в шарде, а рафт-кластеры остаются замкнутыми в себе.
Итоговая схема 25:58 Итоговая схема включает фронты, рефрешеры и адресные книги, которые работают на разных кластерах. Это позволяет избежать проблем с ЦП и репликацией данных.
Создание очереди для токенов 26:56 В видео рассказывается о создании очереди для токенов в системе, которая позволяет рефрешить токены, когда они истекают. Это делается для того, чтобы избежать проблем с ауттейчами и обеспечить горизонтальное масштабирование.
Использование базы данных для очереди 33:25 Вместо использования сторонних очередей, можно использовать базу данных для хранения токенов и их обработки. Это позволяет сэкономить ресурсы и упростить логику работы с базой данных.
Преимущества использования базы данных 34:18 Использование базы данных позволяет сэкономить ресурсы и упростить логику работы с очередью. Это особенно важно для систем с высокой нагрузкой и большим количеством соединений.
Заключение 36:03 В заключение, автор рекомендует использовать базы данных для хранения и обработки данных, особенно в системах с высокой нагрузкой и большим количеством соединений. Тарантул - это удобный и производительный инструмент для работы с базами данных.
Обновление логики в Тарантуле 36:57 В Тарантуле обновления логики хранятся в глобальном таблице. При обновлении кода, Тарантул загружает новый образ и выполняет его в старом скоупе, сохраняя старые функции.
Добавление шардов 38:45 Шарды добавляются через код, список шардов хранится в конфиге Lua. В случае выпадения кластера, обновление кода через код позволяет перезагрузить конфликт.
Валидация и тестирование 41:48 Проблемы возникали, но были решены через дебаг и тестирование. Тарантул доказал корректность алгоритма выборов, проблемы были в имплементации.
Балансировка трафика между прокси 44:16 Используется простой коннекшн пул для балансировки трафика между прокси. Прокси - это Тарантулы, не несущие данных.
Реализация интерпретатора 45:11 Интерпретатор встроен в Тарантул, используется Lua. Фифа используется для подключения бизнес-логики.