Системный аналитик. Часть 4. Синхронные и асинхронные интеграции: REST, gRPC, Kafka, RabbitMQ
Конспект статьи. Автор оригинала: Николай (nick_oldman)
Обзор способов интеграции: файлы, общая БД, RPC, обмен сообщениями, API.
REST, JSON Schema, OpenAPI
Принципы REST: клиент-сервер, отсутствие состояния на сервере, кешируемость, уникальный URL ресурса, единый интерфейс через методы, осмысленные коды состояния. Идемпотентны GET, PUT, DELETE, HEAD, OPTIONS; POST — нет. JSON Schema описывает типы, обязательность и ограничения полей. OpenAPI — стандарт описания API: пути, методы, параметры (path, query, header, cookie), requestBody, responses, components и $ref.
gRPC
Протокол Google: контракт в .proto (Protobuf), транспорт HTTP/2, четыре режима (унарный, серверный, клиентский и двунаправленный поток). Оправдан при больших объёмах, высокой нагрузке и стриминге. Минус — бинарный формат сложнее логировать.
Брокеры
Продюсеры пишут, консюмеры читают, друг о друге не знают. Kafka — pull, RabbitMQ — push. Гарантии: at least once (дубли, нужна идемпотентность), at most once (потери), exactly once.
- Kafka: топики делятся на партиции, порядок — внутри партиции по offset, хранение по времени или объёму. Аналитик определяет формат, топики, хранение и ключ партиционирования.
- RabbitMQ: протокол AMQP, exchange типов direct, topic, fanout, headers; очереди classic, quorum, stream. Аналитик определяет payload, durable или transient, ключи маршрутизации.
WebSocket
Двусторонняя связь в реальном времени поверх TCP; начинается с HTTP-рукопожатия и ответа 101 Switching Protocols.
Автор: Николай (nick_oldman)
Это конспект, пересказ основных идей. Полный текст, иллюстрации и примеры читайте в оригинальной статье.