Таблица форматов и протоколов передачи данных
Формат
Технология |
Где используется |
Плюсы |
Минусы |
|---|---|---|---|
JSON |
Веб-API, мобильные приложения |
Лёгкий, читаемый, везде поддерживается |
Не самый компактный, нет строгой схемы |
XML |
Банки, гос-системы, старые SOAP-сервисы |
Гибкость, строгие схемы (XSD) |
Тяжёлый, многословный |
YAML |
Конфиги (Docker, Kubernetes, CI/CD) |
Читаемость, простота |
Не всегда удобен для парсинга, ошибки отступов |
CSV |
Импорт/экспорт таблиц, Excel, БД |
Простота, поддержка везде |
Нет вложенных структур |
Protobuf |
gRPC, микросервисы, высокие нагрузки |
Компактность, скорость |
Сложнее читать и отлаживать |
Avro |
Big Data (Kafka, Hadoop) |
Схемы, совместимость |
Специфичен, требует экосистемы |
Thrift |
Большие распределённые системы |
Быстрый, поддержка многих языков |
Сложность, редко применяется вне крупных компаний |
Протокол
Технология |
Где используется |
Плюсы |
Минусы |
|---|---|---|---|
REST (HTTP/HTTPS) |
Веб-API |
Простота, универсальность |
Избыточность запросов |
GraphQL |
Современные API (Facebook, GitHub) |
Гибкость, клиент запрашивает только нужное |
Более сложная настройка сервера |
WebSocket |
Чаты, биржи, игры (реальное время) |
Двусторонняя связь, быстрый обмен |
Нужно держать соединение |
gRPC |
Микросервисы, backend |
Очень быстрый, бинарный |
Требует Protobuf и поддержку HTTP/2 |
MQTT |
IoT (умные устройства, датчики) |
Лёгкий, оптимизирован для малых устройств |
Не подходит для больших данных |
AMQP (RabbitMQ, Kafka) |
Очереди сообщений, асинхронные системы |
Надёжность, масштабируемость |
Сложная настройка |