BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс Современная архитектура хранилища данных » Apache Flink с нуля » Архитектура интеграции и коннектороры: Flink SQL, DataStream API и экосистема коннекторов

Архитектура интеграции и коннектороры: Flink SQL, DataStream API и экосистема коннекторов

В данной главе рассматриваются принципы архитектуры интеграции данных в Flink: как организуется потоковая передача данных между внешними системами и Flink, какие роли играют Flink SQL и DataStream API, и как коннекторы формируют мост между источниками и приемниками. Особое внимание уделяется проектированию устойчивых, масштабируемых и управляемых потоковых конвейеров, где обмен данными происходит без потерь и с нужной семантикой консистентности.

Современная стриминговая архитектура строится на сочетании декларативного описания потоков через Flink SQL и гибкости процедурного конвейера через DataStream API. Коннекторы обеспечивают доступ к внешним системам: источникам данных и сторонам вывода, форматам сериализации и метаданным через каталоги. В итоге достигается единое вычислительное окружение, способное обрабатывать события в реальном времени, поддерживая транзакционность, эволюцию схем и мониторинг на уровне всей цепочки интеграции.

 

Краткое содержание главы

  • Архитектура интеграции: слои коннекторов, форматы данных, каталоги и управление схемами.
  • Сравнение Flink SQL и DataStream API: конвертация между подходами, совместимость и схемы времени.
  • Экосистема коннекторов: выбор источников и приемников, форматы и каталоги, примеры типичных решений.
  • Управление состоянием и консистентностью в рамках коннекторной архитектуры: checkpointing, Exactly-Once, транзакционные коннекторы.
  • Архитектурные паттерны внедрения: CDC, потоковый ETL, обработка изменений и эволюция схем.

     

Архитектура интеграции: слои, коннекторы и каталоги

Архитектура интеграции в Flink опирается на четкое разделение ответственности между входами, преобразованиями и выходами. Источники (Sources) обеспечивают доставку данных в поток Flink; приемники (Sinks) - запись результатов обработки обратно в внешние системы. В рамках этой концепции коннекторы выполняют роль адаптеров между Flink и внешними инфраструктурами: они реализуют интерфейсы Source и Sink, абстрагируют форматы сообщений и схемы сериализации, поддерживают параметры задержки, пропускной способности и управления состоянием.

Особое внимание уделяется так называемым Каталогам (Catalogs) и Форматам (Formats). Catalogs управляют метаданными таблиц и схем, обеспечивая гибкость смены источников и приема без модификации логики обработки. Форматы данных (Parquet, Avro, JSON, Protobuf и др.) задают правила кодирования последовательностей событий и совместной эволюции схем. В реальных системах сочетание Catalog + Format позволяет поднимать новые источники данных и схемы без прерывания текущих конвейеров.

Типичный дизайн коннекторной архитектуры сочетает в себе Source-коннекторы, Sink-коннекторы и соответствующие форматы. В качестве примера можно указать Kafka как источник и как итоговый приемник: Kafka Source обеспечивает потоковую подачу событий в Flink, а Kafka Sink - запись обработанных результатов обратно в топики. Для файловой инфраструктуры часто применяют HDFS или S3 в роли Sink-коннекторов, используемых для журнала изменений или выгрузки витрин аналитики. Каталоги позволяют управлять схемами таблиц и переносить их между источниками без потери совместимости.

Преимущества такой архитектуры очевидны: независимость бизнес-логики обработки от конкретных источников данных, возможность замены источников/приемников без переработки пайплайна, поддержка эволюции схем и прозрачность мониторинга на уровне всей цепочки. В контексте реального мира это означает способность быстро адаптировать архитектуру к новым источникам данных, новым требованиям по латентности и новому формату данных без повторной реализации ных преобразований.

 

Flink SQL vs DataStream API: совместимость, конвертация и оптимизация

Flink предоставляет две парадигмы разработки потоковой обработки: декларативный Flink SQL (через Table API) и программную DataStream API. Обе подхода приводят к одному вычислительному графу (DAG), но предоставляют разный стиль моделирования и разные возможности оптимизации.

Flink SQL позволяет выразить бизнес-правила обработки данных через запросы к таблицам и потокам, поддерживая стандарт ANSI SQL и расширения, ориентированные на стриминг. Это облегчает внедрение аналитических сценариев, трансформаций и оконных агрегаций без написания кода на Java/Scala. В то же время DataStream API предоставляет полный контроль над потоковыми операциями, состоянием и пользовательской логикой обработки, что особенно ценно для сложных деловых процессов, требующих тонких гарантий последовательности и детальной обработки ошибок.

Совместимость между этими подходами обеспечивается посредством общих концепций времени и типов данных. В Flink существуют понятия rowtime (время события) и proctime (процессное время), которые применяются как в SQL, так и в DataStream API. Возможности конвертации между DataStream и Table/SQL позволяют перейти от быстрого прототипирования к продвинутой реализации без кардинальных изменений логики обработки. Это важный механизм миграции: начиная с декларативного SQL-запроса, можно постепенно встраивать более сложную логику через DataStream преобразования, не дискредитируя постановку задач.

Опционально полезно упоминать принципы оптимизации: планировщик Flink компилирует SQL-запросы в физический план, который затем разбирается на трансформации DataStream. Мониторинг времени задержки, латентности и пропускной способности помогает подбирать параметры конфигурации, такие как режим буферизации и размер окон. При переходе между SQL и DataStream следует уделять внимание вопросам согласованности времени и ограничений по порядку обработки сообщений, чтобы избежать неожиданной деградации производительности или нарушения семантики exactly-once на коннекторах.

 

Экосистема коннекторов: источники, форматы, каталоги

Экосистема коннекторов Flink выступает связующим звеном между внутренними вычислениями и внешними данными. Коннекторы реализуют два базовых аспекта: источник данных и приемник данных. В дополнение к ним Flink поддерживает форматы сериализации/десериализации и каталоги для управления метаданными таблиц и схемами.

Коннекторы можно рассмотреть как набор функциональных слоёв:

  • Source и Sink: доступ к системам очередей, базам данных, файловым хранилищам и другим источникам/приемникам.
  • Format: кодирование и декодирование данных при передаче между внешними системами и Flink.
  • Catalog: управление метаданными таблиц и схемами, поддержка схемной эволюции и совместимости между источниками.

Типичный набор примеров включает Kafka в роли Source и Sink, поскольку Kafka широко используется как распределённая очередь сообщений и платформа обмена событиями. В качестве файлового контура для хранения выдержанных данных зачастую применяются HDFS или S3 как источники/приемники, особенно для архивов и витрин аналитики. Форматы данных, такие как Parquet и Avro, обеспечивают эффективное сжатие, схематическую совместимость и эволюцию схем без блокирования пайплайна.

 

Ключевые паттерны выбора коннекторов включают:

  • Стабильность и зрелость окружения: целиться в коннекторы, которые широко поддерживаются сообществом и имеют устойчивые обновления.
  • Соответствие требованиям транзакционной целостности: выбор коннекторов с поддержкой Exactly-Once и, если требуется, 2PC режимов для внешних систем.
  • Эволюцию схем и совместимость форматов: применение Catalog и Format слоёв для плавной миграции.

В рамках этой главы упоминаются два конкретных примера открытых проектов: Kafka как источник/приемник и HDFS/S3 как файловое хранилище. Они иллюстрируют базовые паттерны интеграции и являются характерными сценариями внедрения в промышленных системах. При этом следует помнить, что сопутствующие форматы (Parquet, Avro) и каталоги (HiveCatalog, встроенный catalog Flink) дополняют коннекторную архитектуру и позволяют управлять метаданными и схемами без перерывов в работе конвейера.

 

Управление состоянием и консистентностью в рамках коннекторной архитектуры

Управление состоянием является фундаментом надёжности потоковых конвейеров, особенно в интеграции с внешними системами через коннекторы. Flink поддерживает механизм checkpointing и сохранение состояния задач, что обеспечивает устойчивость к сбоям и возможность восстановления до согласованного состояния. Коннекторы, работающие в связке с Checkpoint Barrier, синхронно сохраняют прогресс чтения/записи, позволяя последовательному восстановлению без потери данных.

Особое значение имеет Exactly-Once семантика, которая достигается за счёт координации между источниками и приемниками. Встроенные коннекторы, такие как Kafka Source/Sink, и внешние интеграции, поддерживающие транзакционные режимы, применяют такие принципы, как идентификаторы транзакций, координацию с журналом транзакций и корректную обработку нулевых ошибок. В ряде сценариев применяются паттерны двухфазной фиксации (2PC) для внешних систем, где требуется атомарная запись через коннектор; например, для некоторых баз данных или внешних критичных систем это становится ключевым условием для сохранения консистентности. Важно проектировать коннекторную архитектуру так, чтобы каждый вводимый источник мог корректно ранировать прогресс и не приводил к повторной обработке уже записанных данных.

Помимо транзакционной целостности, важны вопросы схемной эволюции и совместимости. Каталоги позволяют управлять изменениями схем без деградации работы пайплайна. В частности, поддержка схем evolution в формате Avro/Parquet и соответствие evolutions в HiveCatalog обеспечивает плавную адаптацию к новым полям, типам и значениям без необходимости полной переработки конвейера. Принципы устойчивого проектирования требуют документирования версий схем и BK-контроля совместимости между источниками/приёмниками, чтобы изменения в инфраструктуре данных не приводили к неожиданному падению производительности или ошибок выполнения.

 

Архитектурные паттерны и сценарии внедрения

В рамках практических сценариев архитектура интеграции Flink применяется по нескольким общим паттернам. Один из наиболее распространённых случаев - CDC (change data capture), когда внешняя база данных передает изменения в режим реального времени через коннектор в Flink для последующей агрегации, коррекции витрин и обновления индексов. В таком сценарии Flink действует как потоковый примыкатель к данным источника изменений, обеспечивая фильтрацию, агрегацию и коррекцию ошибок, прежде чем данные попадут в целевые системы.

Другой часто встречающийся сценарий - потоковый ETL: извлечение из источников данных, трансформация и загрузка в витрины аналитики. В этом случае архитектура может сочетать SQL-запросы для простых трансформаций и DataStream-операции для более сложной логики обработки. Ввод и спрос на данные оптимизируются за счёт оконных функций и времени события, что обеспечивает точечную актуализацию витрин без задержек, а также поддержку повторной обработки при необходимости.

Разделение ответственности между слоями коннекторов и логикой обработки - важная практическая рекомендация. Источники и приемники должны быть независимы от бизнес-логики, что упрощает эволюцию архитектуры, замену источников и адаптацию к новым требованиям SLA. В условиях больших объемов данных и высокой пропускной способности особое внимание уделяется параметрам параллелизма конвейера и настройкам согласованности между источниками и приемниками, чтобы избежать перегрузок и коллизий в доступе к внешним системам.

С точки зрения внедрения следует применять поэтапную стратегию:

  • начать с базового набора коннекторов (например, Kafka Source/Sink, файловые форматы) для быстрого старта и верификации латентности;
  • затем расширять архитектуру за счёт дополнительных коннекторов и форматов, используя Catalog для управления схемами;
  • в конце - внедрять транзакционные режимы и паттерны 2PC для критичных сценариев и обеспечения Exactly-Once.

     

Key takeaways

  • Коннекторы в Flink образуют устойчивый мост между внешними системами и вычислительным движком, обеспечивая источники, приемники, форматы и каталоги.
  • Flink SQL и DataStream API дополняют друг друга: декларативный подход ускоряет внедрение аналитики, процедурный - позволяет тонко настраивать обработку и контроль времени.
  • Catalog и Format слои позволяют управлять схемами, эволюцией и кодированием данных без прерывания пайплайна.
  • Exactly-Once и транзакционные режимы требуют грамотной архитектуры коннектора и координации между источниками и приемниками.
  • Архитектура паттернов CDC и потокового ETL обеспечивает гибкость внедрения и устойчивость к изменениям в источниках данных.
  • Выбор коннекторов и форматов должен основываться на зрелости экосистемы, требованиях к задержке и потребности в совместимости схем.
  • Мониторинг, наблюдаемость и управление версиями схем являются критическими для долгосрочной поддержки интеграции.

     

FAQ

  1. Что такое Flink SQL и чем он полезен для интеграции данных?

Flink SQL обеспечивает декларативный подход к потоковой обработке, позволяя описывать преобразования и агрегации через SQL-запросы. Это ускоряет внедрение аналитических пайплайнов, повышает читаемость кода и облегчает сотрудничество между аналитиками и инженерами. Однако для сложной обработки и специфической логики трансформаций может понадобиться DataStream API, которое предоставляет полный контроль над состоянием, обработкой ошибок и пользовательской логикой.

 

  1. Как выбрать между источниками и приемниками в контексте проекта?

Выбор коннекторов следует основываться на требуемой пропускной способности, задержке и устойчивости к сбоям. Обычно начинается с Kafka как источника/приемника из-за широкой экосистемы и зрелости, затем добавляются файловые хранилища (HDFS/S3) для архивирования и витрин. Catalog выполняет роль слоя абстракции над схемами, позволяя плавно менять источники без изменений бизнес-логики.

 

  1. Какие преимущества дают Catalog и Format слои?

Catalog управляет метаданными таблиц и схемами, поддерживает эволюцию схем и совместимость между источниками. Format слои определяют способ кодирования данных и позволяют эффективно обмениваться данными между различными системами. Вместе они уменьшают риск несовместимостей и ускоряют внедрение новых источников данных.

 

  1. Что означает Exactly-Once в контексте коннекторов Flink?

Exactly-Once гарантирует, что каждое событие будет обработано и записано ровно один раз в целевой системе, даже в случае сбоев. Реализация достигается через координацию между источником, обработкой и приемником, а при необходимости через двухфазовую фиксацию (2PC) для внешних систем. Это критично для транзакционных нагрузок и точной аналитики.

 

  1. Какие архитектурные паттерны применяются для CDC и потокового ETL?

CDC использует коннекторы изменений данных для передачи изменений из исходной базы в Flink, где они агрегируются и обновляют витрины или индексируются. Потоковый ETL комбинирует извлечение, преобразование и загрузку данных в реальном времени с использованием SQL-представлений и DataStream трансформаций для сложной логики.

 

  1. Как обеспечить эволюцию схем и совместимость форматов?

Важна стратегия управления схемами через Catalog: версионирование схем, совместимость между полями, умение обрабатывать добавление и удаление полей. Форматы данных (Parquet, Avro) предоставляют механизмы эволюции и совместимости, что снижает риск ошибок в пайплайне.

 

  1. Какие требования к мониторингу коннекторов в продакшене?

Требуется полноценная observability: метрики пропускной способности, задержек, ошибок коннектора и состояния транзакций. Мониторинг должен позволять трассировать источник данных, видеть точки возможной задержки и оперативно реагировать на перегрузки внешних систем.

 

  1. Какие типичные сложности возникают при миграции между SQL и DataStream API?

Основные сложности связаны с временем и семантикой обработки, особенно в части окон и таймингов. При миграции необходимо внимательно проверить обработку времени событий (rowtime) и процессного времени (proctime), а также корректно настроить конвертации между таблицами и потоками.

 

  1. Как масштабировать интеграцию в крупных организациях?

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

 

  1. Какие практики CI/CD полезны для Flink-коннекторов?

Важно автоматизировать тестирование коннекторов на совместимость схем, регрессионное тестирование трансформаций и мониторинг производительности. Использование инфраструктуры как кода для конфигураций коннекторов и сценариев развёртывания позволяет снизить риски при релизах и обновлениях.

 

Главу завершает обзор практических подходов к внедрению архитектуры интеграции и коннекторной экосистемы Flink: от выбора источников и форматов до управления схемами, транзакциями и мониторингом. В следующей главе будут разобраны конкретные кейсы: от оптимизации латентности в сценариях CDC до проектирования устойчивых витрин аналитики на основе Flink SQL и DataStream API.

← Предыдущая статья
Event sourcing и CQRS через Flink: принципы и примеры реализации
Следующая статья →
Реализация потоковых конвейеров на Kubernetes: развёртывание, управление и CI/CD

 

Узнать стоимость решенияЗапросить видео презентацию

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • НПФ «Будущее» — один из крупнейших негосударственных пенсионных фондов России, предоставляющий услуги по пенсионному обеспечению и накоплениям. Фонд активно внедряет цифровые технологии для повышения качества обслуживания клиентов.

  • ПАО «Банк Уралсиб» (Публичное акционерное общество «Банк Уралсиб») — российский коммерческий банк. В 2020 году входил в топ-20 банков РФ по размеру активов (рэнкинг рейтингового агентства Эксперт РА), в 2021 году — в топ-25 крупнейших банков страны по расчётам агрегатора Банки.ру

  • Авиакомпания NordStar (АО «АК «НордСтар») – работает под данным брендом с 2008 г. и сейчас входит в топ-15 крупнейших российских авиакомпаний (данные Росавиации) с пассажирооборотом более 1 млн человек в год. АО «АК «НордСтар» выполняет и внутренние, и внешние рейсы, а ее основные хабы - Домодедово, Пулково и Емельяново. С 2021 года компания является базовым перевозчиком аэропорта Норильск.

  • КАМИ – компания-лидер по поставкам тяжёлых станков в России, занимающаяся продажей и обслуживанием оборудования для обработки металла и дерева, изготовления мебели и не только. На сегодняшний день в компании работают более 1300 человек, запущено 10 обучающих центров, в продаже более 7000 единиц техники. 

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.