Перейти к основному содержимому

2.09. Прочие фреймворки

Всем

Прочие фреймворки

MessagePack — это бинарный формат сериализации, который является альтернативой JSON. Он разработан для компактного и быстрого обмена данными между системами.

Данные кодируются в бинарном виде. Допустим, у нас есть JSON-объект:

{
"name": "Alice",
"age": 30,
"is_active": true
}

Он будет закодирован в бинарном виде:

83 A4 6E 61 6D 65 A5 41 6C 69 63 65 A3 61 67 65 1E A9 69 73 5F 61 63 74 69 76 65 C3

Это занимает меньше места, чем JSON, и быстрее для парсинга и передачи данных. Как можно заметить, уже и не человекочитаемо.

OpenAPI (Swagger) — это стандарт для описания RESTful API. Он предоставляет формальный способ документирования API, что упрощает взаимодействие между разработчиками и автоматизацию процессов.

OpenAPI предоставляет описание эндпоинтов (указываются URL, методы GET, POST, PUT, DELETE и параметры запроса), описание схемы данных (входных и выходных данных), что позволяет разработчикам понять, как использовать API.

А Swagger UI позволяет тестировать API прямо из браузера.

RESTful подразумевает, что приложение использует архитектурный стиль REST.

Примеры RESTful API:

  • GET /users - получить список пользователей.
  • POST /users - создать нового пользователя.
  • PUT /users/{id} - обновить пользователя с указанным ID.
  • DELETE /users/{id} - удалить пользователя с указанным ID.

RSocket — это протокол для асинхронного обмена данными, который используется для реактивных систем. Использует бинарный формат (например, Protobuf или JSON) и применяется в чатах, биржах. Поддерживает четыре основных типа взаимодействий:

  • Request-Response (запрос-ответ) - клиент отправляет запрос и получает один ответ.
  • Fire-and-Forget (выстрелил и забыл) - клиент отправляет запрос без ожидания ответа.
  • Request-Stream (запрос-поток) - клиент отправляет запрос и получает поток данных.
  • Channel (канал) - двунаправленный обмен данными.

Есть ещё одна платформа, достойная внимания. Это не фреймворк.

IBM MQ (Message Queue) — это корпоративная платформа для асинхронного обмена сообщениями между приложениями, сервисами и системами. Сообщения хранятся в очередях до тех пор, пока не будут обработаны. Использует различные протоколы - JMS, AMQP, MQTT, и даже собственный протокол IBM MQ.

IBM MQ использует модель «производитель-потребитель» через промежуточное хранилище — очередь (queue). Производитель отправляет сообщение в очередь и продолжает работу, не дожидаясь ответа от потребителя.

Message Producer отправляет сообщения в очередь. Он может быть любым приложением или системой. Queue Manager управляет очередями и маршрутизацией сообщений.

Message Consumer получает сообщения из очереди и обрабатывает их согласно логике приложения. Очереди бывают:

  • локальные очереди, которые хранят сообщения на одном сервере.
  • удалённые очереди, которые пересылают сообщения между разными серверами.

IBM MQ широко используется в крупных организациях, таких как банки, страховые компании и телекоммуникационные компании. Требует лицензирования.

Service Mesh — это инфраструктура для управления взаимодействием между микросервисами. Она предоставляет такие функции, как маршрутизация, балансировка нагрузки, мониторинг и безопасность.

Основные компоненты:

  • Sidecar-прокси : прокси-серверы, внедренные в каждый под (например, Envoy).
  • Контроллер : управляет конфигурацией и политиками (например, Istio, Linkerd).

Sidecar-прокси — это дополнительный контейнер, который размещается в том же поде, что и основное приложение в Kubernetes. Он используется для выполнения вспомогательных задач, таких как маршрутизация трафика, балансировка нагрузки, мониторинг или шифрование. В Service Mesh (например, Istio) sidecar-прокси (обычно Envoy) автоматически внедряется в каждый под для управления взаимодействием между микросервисами. Jaeger — это система распределенной трассировки, созданная для анализа взаимодействия между микросервисами.

Zipkin — это еще одна система распределенной трассировки, аналогичная Jaeger. Она используется для анализа производительности и диагностики проблем в микросервисах.

Envoy — это высокопроизводительный прокси-сервер и коммуникационная шина для распределенных систем. Он часто используется как sidecar-прокси в архитектурах микросервисов.

Linkerd — это легковесный Service Mesh, разработанный для Kubernetes. Он фокусируется на простоте использования и производительности и позволяет автоматически добавлять прокси в поды, при этом обеспечивая шифрование трафика.

Istio — это Service Mesh, который предоставляет инструменты для управления трафиком, безопасности и наблюдаемости в микросервисной архитектуре.