Как начинался VK Teams и что у него под капотом
VK Teams начинался как корпоративный мессенджер для внутреннего использования и за 10 лет превратился в мощное решение для командной работы. Всё это время под капотом системы шли серьезные доработки и эволюция технологий.
В самом начале мы создали для VK Teams собственное хранилище KUST (Customizable Storage). Это встраиваемая key-value-база, оптимизированная под чтение и работу с HDD-дисками. Она обеспечивала надежность и потоковый дамп логов, но при переходе к On-Prem-внедрению мы решили, что клиентам нужно больше контроля над СУБД.
Сейчас большая часть сервисов работает на
Tarantool — промежуточном ПО для работы с данными, которое ускоряет цифровые сервисы и снижает нагрузку на core-cистемы. Этот переход увеличил скорость работы, улучшил управляемость и повысил удобство для пользователей On-Prem-решений.
Как сервисы общаются между собой
Для коммуникации сервисов мы используем бинарный протокол IPROTO, дополненный контроллером Ctlr. Он реализует Service Discovery и управляет потоками данных. Так появился IPROS.
Ctlr хранит разряженную карту шардирования, следит за состоянием всех ячеек, управляет их топологией и перемещением. При этом трафик через контроллер не проходит, поэтому сбой не влияет на работу системы — даже в процессе решардинга сервисы автоматически перенаправляют запросы по новым адресам.
Как мы добились отказоустойчивости
Каждая пара «экземпляр сервиса — БД» всегда имеет активную реплику, готовую взять на себя нагрузку. При переносе ячейки между серверами процесс занимает всего несколько сотен миллисекунд. Даже если контроллер временно выйдет из строя, отказоустойчивость сохранится — старые узлы просто перенаправят трафик на новые.
Почему мы работаем с ячейками
Простота управления — работать с одной сущностью легче, а при масштабировании достаточно выполнить шардирование.
Локализованность контекста — всегда понятно, куда поступает запрос и где возникла ошибка.
Минимальное влияние сети — сервис и БД размещены рядом, что снижает задержки.
Безопасность данных — взлом одной ячейки не даст злоумышленнику доступа ко всей системе.
#коммуникации #разработка
@digitize_IT — мнения и управленческий опыт ИТ-лидеров
Обсуждение 0
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram