---
title: Передача данных
questionDates:
  q-transfer-0304: '2026-10-01'
seo:
  description: >-
    Тема «Передача данных» для собеседования Data Engineer. Что такое XCom?
    Какие методы передачи данных вы используете в распределенных системах?
  title: Передача данных — Data Engineer
---

[Все темы Data Engineer](/prep/data-engineer)

## <strong>Что такое</strong> <code>XCom</code><strong>?</strong> [#q-14bee738d69b81a39720c5f9e6f22666]

XCom (Cross Communication) - это механизм в Apache Airflow, который позволяет передавать данные между задачами в рамках одного рабочего процесса. Он используется для обмена информацией между задачами, которые выполняются параллельно или последовательно в рамках одного DAG (Directed Acyclic Graph).

XCom позволяет задачам обмениваться данными в виде ключ-значение (обычно JSON-подобный объект). Эти данные могут быть использованы для передачи промежуточных результатов вычислений, обмена статусом выполнения задачи или любой другой необходимой информации.

Преимущества использования XCom включают удобство и гибкость обмена данными между задачами без необходимости использования внешних хранилищ данных или промежуточных файлов. Однако следует помнить, что XCom может быть неэффективным для передачи больших объемов данных или чувствительной к времени информации, так как данные передаются через базу данных метаданных Airflow.

:::note[Ссылки для изучения]

1. [XCom в Airflow 2: return задачи, xcom_pull и ссылки TaskFlow](https://khashtamov.com/ru/airflow-taskflow-api/)
1. [Airflow 3: SDK и изменения поведения XCom](https://docs.arenadata.io/ru/ADO/current/airflow3.html)
   :::

---

## <strong>Какие методы передачи данных вы используете в распределенных системах?</strong> [#q-14bee738d69b81ea8552eca4b44fcf36]

Передача данных в распределенных системах может быть реализована с использованием различных методов&#58;

{/* prettier-ignore */}
1. <code>REST API</code>&#58;

    - Передача данных через HTTP/HTTPS с использованием JSON или XML.

1. <code>gRPC</code>&#58;

    - Высокопроизводительный RPC (Remote Procedure Call) протокол.

1. <code>Apache Kafka</code>&#58;

    - Потоковая передача данных в режиме реального времени.

1. <code>Apache Flink</code>&#58;

    - Потоковая обработка данных с низкой задержкой.

1. <code>RabbitMQ</code>&#58;

    - Система очередей сообщений для передачи данных.

1. <code>FTP</code><strong>/</strong><code>SFTP</code>&#58;

    - Передача файлов с использованием протоколов FTP или SFTP.

:::note[Ссылки для изучения]

1. [Передача данных между сервисами: HTTP/gRPC, очереди и потоки событий](https://learn.microsoft.com/ru-ru/azure/architecture/microservices/design/interservice-communication)
1. [Повторы, подтверждения и границы exactly-once в Kafka](https://habr.com/ru/companies/ydb/articles/972180/)
   :::

---

## <strong>Как вы обеспечиваете надежность и целостность данных при их передаче?</strong> [#q-14bee738d69b81b3a459ffb9b094e7ce]

Обеспечение надежности и целостности данных при передаче включает несколько методов&#58;

{/* prettier-ignore */}
1. <strong>Использование проверок целостности</strong>&#58;

    - Применение контрольных сумм (например, CRC) для проверки целостности данных.

1. <strong>Подтверждение доставки</strong>&#58;

    - Использование механизмов подтверждения доставки данных (например, ACK в TCP).

1. <strong>Повторная передача данных</strong>&#58;

    - Настройка механизмов повторной передачи данных при сбоях.

1. <strong>Шифрование данных</strong>&#58;

    - Шифрование данных для защиты от подмены и несанкционированного доступа.

1. <strong>Логирование и мониторинг</strong>&#58;

    - Логирование операций передачи данных и мониторинг состояния сети.

:::note[Ссылки для изучения]

1. [Передача данных между сервисами: HTTP/gRPC, очереди и потоки событий](https://learn.microsoft.com/ru-ru/azure/architecture/microservices/design/interservice-communication)
1. [Повторы, подтверждения и границы exactly-once в Kafka](https://habr.com/ru/companies/ydb/articles/972180/)
   :::

---

## <strong>Какие протоколы передачи данных вы считаете наиболее подходящими для больших данных?</strong> [#q-14bee738d69b81c99e66f80d9b4a31df]

Для передачи больших данных используются следующие протоколы&#58;

{/* prettier-ignore */}
1. <code>HTTP</code><strong>/</strong><code>HTTPS</code>&#58;

    - Протоколы для передачи данных по сети с использованием REST API.

1. <code>gRPC</code>&#58;

    - Высокопроизводительный протокол для передачи данных с низкой задержкой.

1. <code>Apache Kafka</code>&#58;

    - Протокол для потоковой передачи данных в режиме реального времени.

1. <code>FTP</code><strong>/</strong><code>SFTP</code>&#58;

    - Протоколы для передачи файлов между системами.

1. <code>WebSockets</code>&#58;

    - Протокол для двусторонней передачи данных в реальном времени.

:::note[Ссылки для изучения]

1. [Передача данных между сервисами: HTTP/gRPC, очереди и потоки событий](https://learn.microsoft.com/ru-ru/azure/architecture/microservices/design/interservice-communication)
1. [Повторы, подтверждения и границы exactly-once в Kafka](https://habr.com/ru/companies/ydb/articles/972180/)
   :::

---

## Как зафиксировать контракт новой интеграции данных? [#q-transfer-0304]

Контракт фиксирует владельцев, назначение, SLA по freshness и доступности, схему с правилами совместимости и grain. Отдельно описывают initial load, инкремент, ordering, deletes, timezone и идентификатор идемпотентности. Протокол задает retries, timeout, authentication и версионирование. Приемка включает reconciliation, мониторинг lag и качества, runbook сбоя и процедуру изменения контракта, а не только пример payload. Контракт описывает повтор, частичный сбой и сверку, а не только успешный пример одной поставки.

:::note[Ссылки для изучения]

1. [Дата-контракт интеграции: владельцы, SLA, качество и порядок изменения схемы на примере МТС](https://habr.com/ru/companies/ru_mts/articles/1061814/)
   :::
