VK Docs logo
Помощь
Обновлена 18 февраля 2026 г. в 10:27

Архитектура

Данная статья описывает взаимодействие клиента и брокера сообщений TQE(MQ) на разных уровнях и раскрывает архитектурные особенности и взаимодействия системы. На самом высоком уровне клиент взаимодействует с TQE(MQ) и публикует или читает сообщения.

Архитектура нулевого уровня

Брокер TQE(MQ) состоит из двух компонентов:

  • модуль API – предоставляет интерфейс для взаимодействия с очередью посредством gRPC-протокола;
  • ядро – выполняет функцию хранилища и представляет собой кластерное приложение на Tarantool.

Пользователь — внешний клиент (сервис или человек), инициирует запросы на публикацию или чтение сообщений по протоколу gRPC. Система принимает запросы, выполняет маршрутизацию и возвращает ответ. Общение внутри системы происходит по протоколу IPROTO.

Архитектура верхнего уровня

С точки зрения логики инфраструктуры, TQE(MQ) cодержит следующие узлы:

  • Узел TQE gRPC API. Он принимает все входящие запросы и включает в себя 2 сервиса:
    • Producer — отвечает за публикацию сообщений;
    • ConsumerService — отвечает за чтение сообщений.
  • Узел TQE Ядро. Ядро поддерживает две логические роли:
    • roles.tqe-router — хранение конфигурации шардирования;
    • roles.tqe-storage — хранение сообщений и управление очередями.
Архитектура второго уровня

Порядок обработки запроса:

  1. Запрос от пользователя поступает в gRPC API.
  2. API вычисляет целевой шард.
  3. API перенаправляет запрос в роль roles.tqe-storage соответствующего шарда.

Роли могут быть развернуты как на одном узле, так и на разных.

Архитектура второго уровня расширенная

Взаимодействие в кластере: шардирование и репликация.

На уровне gRPC API сервис Producer направляет сообщения в шарды, тогда как ConsumerService отвечает за запросы на получение сообщений из шардов.

На уровне TQE Router (роль roles.tqe-router) обеспечивается хранение конфигурации шардирования. Кластер строится по схеме мастер-реплика:

  • Мастер — обработка изменений конфигурации;
  • Реплика — обработка запросов чтения, резерв.

На уровне TQE Storage (роль roles.tqe-storage) обеспечивается хранение сообщений. Данные распределяются по шардам. Каждый шард содержит:

  • Мастер, обеспечивающий запись и чтение сообщений.
  • Реплики, ответственные за чтение сообщений и синхронизацию с мастером.
Архитектура третьего уровня расширенная

В кластере TQE(MQ) можно выделить следующие типы взаимодействия:

  1. Получение маршрутов: из gRPC API на мастер или реплику roles.tqe-router.
  2. Публикация: из Producer в мастер шарда roles.tqe-storage.
  3. Чтение: из ConsumerService в мастер или реплику roles.tqe-storage.

Более подробную информацию о сценариях взаимодействия с системой см. в руководстве по администрированию.