Архитектура
Данная статья описывает взаимодействие клиента и брокера сообщений 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— хранение сообщений и управление очередями.
Порядок обработки запроса:
- Запрос от пользователя поступает в gRPC API.
- API вычисляет целевой шард.
- API перенаправляет запрос в роль
roles.tqe-storageсоответствующего шарда.
Роли могут быть развернуты как на одном узле, так и на разных.
Взаимодействие в кластере: шардирование и репликация.
На уровне gRPC API сервис Producer направляет сообщения в шарды, тогда как ConsumerService отвечает
за запросы на получение сообщений из шардов.
На уровне TQE Router (роль roles.tqe-router) обеспечивается хранение конфигурации шардирования.
Кластер строится по схеме мастер-реплика:
- Мастер — обработка изменений конфигурации;
- Реплика — обработка запросов чтения, резерв.
На уровне TQE Storage (роль roles.tqe-storage) обеспечивается хранение сообщений.
Данные распределяются по шардам. Каждый шард содержит:
- Мастер, обеспечивающий запись и чтение сообщений.
- Реплики, ответственные за чтение сообщений и синхронизацию с мастером.
В кластере TQE(MQ) можно выделить следующие типы взаимодействия:
- Получение маршрутов: из
gRPC APIна мастер или репликуroles.tqe-router. - Публикация: из
Producerв мастер шардаroles.tqe-storage. - Чтение: из
ConsumerServiceв мастер или репликуroles.tqe-storage.
Более подробную информацию о сценариях взаимодействия с системой см. в руководстве по администрированию.