132
УК 03.011.01-2011 Учебный курс. Обучение. Паттерны обмена сообщениями.

ук 03.011.01 2011

Embed Size (px)

Citation preview

Page 1: ук 03.011.01 2011

УК 03.011.01-2011Учебный курс. Обучение.

Паттерны обмена сообщениями.

Page 2: ук 03.011.01 2011

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

• Каналы• Сообщения• Фильтры• Маршрутизация• Преобразование• Конечные точки

Page 3: ук 03.011.01 2011

Сообщение

• Как организовать обмен данными между приложениями?• Сообщение – атомарная единица переданной

информации.

Сообщение содержит:• Заголовок сообщения.

Служебная информация, используемая системой обмена сообщениями (СОС). Например, адрес отправителя, адрес получателя.

• Тело сообщения.Данные, передаваемые с помощью СОС.

Page 4: ук 03.011.01 2011

Канал сообщений

• Как передать сообщения от одного приложения к другому?

• Соединить приложения с помощью канала сообщений. Канал доставляет помещенные в него сообщения от отправителя к получателю.

Page 5: ук 03.011.01 2011

Фильтры сообщений

• Как сделать приложение гибким и независимым?• Надо разделить сложную задачу на последовательность

простых, независимых этапов (фильтров), объединенных с помощью каналов

Page 6: ук 03.011.01 2011
Page 7: ук 03.011.01 2011

Способы обработки

• Конвейерная обработка• Параллельная обработка

Page 8: ук 03.011.01 2011

Маршрутизатор сообщений

• Как передавать сообщения различным фильтрам, в зависимости от условий?

• Роутер сообщений.Специальный фильтр, который умеет извлекать сообщение из одного канала и помещать его в другой канал.

Page 9: ук 03.011.01 2011

Типы маршрутизаторов

• Фиксированный – один входящий и один исходящий канал

• Маршрутизаторы на основе содержимого• Маршрутизаторы на основе контекста

Пример, балансировка загрузки

• Динамический маршрутизатор

• Маршрутизаторы с поддержкой состояния• Маршрутизаторы без поддержки состояния

Page 10: ук 03.011.01 2011

Конечная точка СОС

• Как подключить приложение к системе обмена сообщениями?

• Конечная точка – клиент СОС, позволяющий приложению принимать и отправлять сообщения.

Page 11: ук 03.011.01 2011

Результаты

• Учитывает особенности конкретного приложения• Инкапсулирует СОС

Page 12: ук 03.011.01 2011

Транслятор сообщений

• Приложения используют разные форматы данных. Как организовать взаимодействие?

• Для преобразования использовать специальный фильтр – транслятор сообщений

Page 13: ук 03.011.01 2011

Уровни преобразованияУровень Объект Средство

Структуры данных Сущности, ассоциации Шаблоны структурного преобразования

Типы данных Имя поля, тип данных, ограничение, значение поля

Визуальные редакторы, XSLT, БД

Представление данных Кодировка, XML, JSON Анализаторы, API

Транспортный TCP/IP, HTTP, SOAP, JMS Адаптер канала

Page 14: ук 03.011.01 2011

КАНАЛЫ ОБМЕНА СООБЩЕНИЯМИ

Page 15: ук 03.011.01 2011

Основные вопросы

• Фиксированный набор каналов• Определение набора каналов• Однонаправленные каналы

• Отношения “один-к-одному” и “один-ко-многим”• Тип данных• Неверные и недоставленные сообщения• Защита от сбоев• Клиенты, не предназначенные для обмена сообщениями• Коммуникационная магистраль

Page 16: ук 03.011.01 2011

Канал “точка-точка”

• Как гарантировать, что документ или вызов будет получен только одним приложением?

Page 17: ук 03.011.01 2011

Канал “публикация-подписка”

• Как оповестить о событии всех заинтересованных получателей?

Page 18: ук 03.011.01 2011

Канал типа данных

• Как приложение должно отправлять данные, чтобы получатель знал как их обрабатывать?

Page 19: ук 03.011.01 2011

Канал недопустимых сообщений

• Что делать с сообщением, которое по каким-либо причинам не может быть обработано?

Page 20: ук 03.011.01 2011

• Сообщения в канале не должны игнорироваться• Недопустимость сообщения определяется контекстом –

местом обработки сообщения

Page 21: ук 03.011.01 2011

Канал недоставленных сообщений

• Что делать с сообщениями, которые не удается доставить?

Page 22: ук 03.011.01 2011

Гарантированная доставка

• Как гарантировать, что сообщение будет доставлено, даже в случае возникновения сбоя системы обмена сообщениями?

Page 23: ук 03.011.01 2011

• Приводит к снижению производительности• Степень надежности 99,999%

Page 24: ук 03.011.01 2011

Адаптер канала

• Как подключить изолированное приложение к системе обмена сообщениями?

Page 25: ук 03.011.01 2011

Виды адаптеров

• Адаптер интерфейса пользователя• Адаптер бизнес-логики• Адаптер базы данных

Page 26: ук 03.011.01 2011

Мост обмена сообщениями

• Как связать несколько различных систем обмена сообщениями?

Page 27: ук 03.011.01 2011

Шина сообщений

• Как организовать согласованную работу приложений, не поставив их в зависимость друг от друга?

Page 28: ук 03.011.01 2011

• Состоит из:– Стандартная коммуникационная инфраструктура– Адаптеры– Стандартная инфраструктура команд

Page 29: ук 03.011.01 2011

СООБЩЕНИЯ

Page 30: ук 03.011.01 2011

Основные сообщения

• Цель отправки сообщения• Возвращение ответа• Большие объемы данных• Медленный обмен сообщениями

Page 31: ук 03.011.01 2011

Сообщение с командой

• Как использовать обмен сообщениями для вызова процедуры другого приложения?

Page 32: ук 03.011.01 2011

Сообщение с данными документа

• Как использовать сообщения для обмена данных между приложениями?

Page 33: ук 03.011.01 2011

Сообщение о событии

• Как использовать обмен сообщениями для передачи событий из одного приложения в другое?

Page 34: ук 03.011.01 2011

• Модель проталкивания• Модель вытягивания– Обновление– Запрос о состоянии– Ответ о состоянии

Page 35: ук 03.011.01 2011

Запрос-ответ

• Как организовать обмен сообщениями, чтобы отправитель сообщения получал на него ответ?

Page 36: ук 03.011.01 2011

• Подходы к получению ответа:– Синхронная блокировка– Асинхронный обратный вызов

Page 37: ук 03.011.01 2011

Варианты запросов и ответов

• Удаленный вызов процедуры с помощью обмена сообщениями.– Запрос – сообщение с командой, описывающее функцию, которую

надо вызвать– Ответ – сообщение с данными документа

• Запрос с помощью обмена сообщениями– Сообщение, с текстом запроса– Ответ – результирующий набор данных, отправленный в виде

цепочки сообщений

• Уведомление/подтверждение– Запрос – сообщение о событии– Ответ – сообщение с данными, подтверждающими получение

сообщения

Page 38: ук 03.011.01 2011

Виды ответов

• Пустой ответ• Результат• Исключение

Page 39: ук 03.011.01 2011

Обратный адрес

• Куда отправлять сообщение с ответом

Page 40: ук 03.011.01 2011

Идентификатор корреляции

• Как инициатору запроса, получившему сообщение узнать, к какому запросу оно относится?

Page 41: ук 03.011.01 2011

Цепочка сообщений

• Как передавать большие объемы данных?

Page 42: ук 03.011.01 2011

Срок действия сообщения

• Как получатель узнает, что сообщение уже устарело?

Page 43: ук 03.011.01 2011

Индикатор формата

• Как спроектировать формат сообщения, чтобы предусмотреть возможность изменений в будущем?

Подходы:1. Номер версии2. Внешний ключ3. Документ с описанием формата

Page 44: ук 03.011.01 2011

МАРШРУТИЗАЦИЯ СООБЩЕНИЙ

Page 45: ук 03.011.01 2011

Классификация

Page 46: ук 03.011.01 2011

Маршрутизатор на основе содержимого

Page 47: ук 03.011.01 2011

Фильтр сообщений

Page 48: ук 03.011.01 2011

• Фильтры с сохранением и без сохранения состояния• Фильтры vs маршрутизатор на основе содержимого

Page 49: ук 03.011.01 2011

Динамический роутер

Page 50: ук 03.011.01 2011

Стратегии разрешения кофликтов

• Игнорировать управляющие сообщения, которые конфликтуют с существующими правилами

• Отправить сообщение первому получателю с подходящими критериями

• Отправить сообщение всем получателям с подходящими критериями

Page 51: ук 03.011.01 2011

Список получателей

Page 52: ук 03.011.01 2011

Надежность

• Одна транзакция• Постоянный список получателей• Идемпотентные получатели

Page 53: ук 03.011.01 2011

• Динамический список получатеоей• Эффективность с точки зрения сети• Список получателей vs канал “публикация-подписка” с

фильтрами сообщений

Page 54: ук 03.011.01 2011

Разветвитель

Page 55: ук 03.011.01 2011

• Итеративный раветвитель• Статический разветвитель• Упорядоченные или неупорядоченные дочерние

сообщения

Page 56: ук 03.011.01 2011

Агрегатор

Page 57: ук 03.011.01 2011

Вопросы при реализации:1. Корреляция. Какие входящие сообщения связаны друг с

другом?2. Условия полноты. Когда агрегатор готов опубликовать

итоговое сообщение?3. Алгоритм агрегации. Как скомпоновать полученные

сообщения в одно итоговое сообщение?

Page 58: ук 03.011.01 2011

Стратегии агрегации

1. Ожидать всех.2. Время ожидания.3. Первый – лучший.4. Время ожидания с досрочным завершением.5. Внешнее событие.

Page 59: ук 03.011.01 2011

Условие полноты агрегата

1. Выбор “лучшего” ответа.2. Сжатие данных.3. Сбор данных для дальнейшей оценки.

Page 60: ук 03.011.01 2011

Преобразователь порядка

Page 61: ук 03.011.01 2011

Вопросы реализации:

1. Порядковый номер2. Буфер для хранения сообщений3. Борьба с переполнением буфера.

Page 62: ук 03.011.01 2011

Обработчик составного сообщения

Page 63: ук 03.011.01 2011

Рассылка сборка

Page 64: ук 03.011.01 2011

Варианты реализации

1. Распределение с помощью списка получателей2. Аукцион. Рассылка-сборка через “публикация-подписка”.

Page 65: ук 03.011.01 2011

Карта маршрутизации

Необходимо провести сообщение через несколько этапов обработки, при этом на момент разработки системы последовательность этапов неизвестна и может отличаться для каждого сообщения

Необходимо обеспечить:• Эффективное продвижение сообщений (сообщения должны

проходить только через необходимые этапы обработки)• Эффективное использование ресурсов• Гибкость (маршрут должен легко поддаваться изменениям)• Простота поддержки

Page 66: ук 03.011.01 2011
Page 67: ук 03.011.01 2011

Область применения

1. Цепочка бинарных этапов проверки2. Каждый этап обработки представляет собой

преобразование без сохранения состояния3. На каждом этапе происходит сбор данных, но не

принимаются решения

Page 68: ук 03.011.01 2011

Диспетчер процессов

• Как провести сообщение через несколько этапов обработки, если на момент проектирования системы требуемые этапы обработки неизвестны и необязательно будут выполняться последовательно друг за другом?

Page 69: ук 03.011.01 2011
Page 70: ук 03.011.01 2011

Аспекты реализации

• Управление состоянием• Экземпляры процесса• Корреляция• Сохранение состояния в сообщениях

Page 71: ук 03.011.01 2011

• Создание определения процесса

Page 72: ук 03.011.01 2011

Брокер сообщений

• Как отделить пункт назначения сообщения от его отправителя, сохраняя централизованный контроль над сообщениями?

Page 73: ук 03.011.01 2011
Page 74: ук 03.011.01 2011

ПРЕОБРАЗОВАНИЕ СООБЩЕНИЙ

Page 75: ук 03.011.01 2011

Оболочка конверта

• Система обмена сообщениями существующего приложения предъявляет особые требования к формату сообщения

Page 76: ук 03.011.01 2011

Процесс упаковки сообщения в конверт

1. Исходное приложение публикует сообщение в необработанном виде.

2. Упаковщик принимает необработанное сообщение и преобразует его в формат, удовлетворяющий требованиям системы обмена сообщениями.

3. Система обмена сообщениями передает упакованное сообщение в пункт назначения

4. Доставленное сообщение попадает к распаковщику.5. Распакованное сообщение доставляется получателю.

Page 77: ук 03.011.01 2011

Расширитель содержимого

Как обеспечить взаимодействие с другой системой, если отправитель сообщения предоставил не все данные?

Page 78: ук 03.011.01 2011

Источники расширения

1. Вычисления2. Среда3. Другая система

Page 79: ук 03.011.01 2011

Фильтр содержимого

Как упростить работу с большими сообщениями, если получателя интересует лишь малая часть содержащихся в них данных?

Page 80: ук 03.011.01 2011

• Удалить лишнее• Упрощение структуры

Page 81: ук 03.011.01 2011

Квитанция

Как сократить объем передаваемых данных, но не потерять их?

Page 82: ук 03.011.01 2011

Этапы обработки

1. Прибывает сообщение с данными2. Регистрация багажа генерирует уникальный ключ для

информации, содержащейся в сообщении.3. Регистрация багажа извлекает данные из сообщения и

помещает данные в постоянное хранилище4. Данные помещенные в хранилище удаляются из

сообщения. Вместо них отправляется квитанция.5. Расширитель содержимого на основании квитанции

извлекает данные из хранилища.

Page 83: ук 03.011.01 2011

Выбор ключа

1. В теле сообщения уже может содержаться ключ.2. Можно использовать идентификатор самого сообщения.3. Генерировать уникальный ключ.

Page 84: ук 03.011.01 2011

Специальные вопросы

• Использование ключа для сокрытия информации• Использование квитанции с диспетчером процессов

Page 85: ук 03.011.01 2011

Нормализатор

• Обработка входящих сообщений эквивалентных по смыслу, но различных по формату

Page 86: ук 03.011.01 2011

Каноническая модель данных

Минимизация зависимостей при интеграции приложений, использующих различные форматы данных

Page 87: ук 03.011.01 2011

Способы преобразования

1. Изменить формат данных, используемый внутри приложения

2. Внедрить в приложение преобразователь обмена сообщениями

3. Использовать внешний транслятор сообщений

Page 88: ук 03.011.01 2011

Результаты

1. Двойное преобразование данных2. Сложность разработка канонической модели3. Зависимости между форматами данных

– Индикатор формата

Page 89: ук 03.011.01 2011

КОНЕЧНЫЕ ТОЧКИ ОБМЕНА СООБЩЕНИЯМИ

Page 90: ук 03.011.01 2011

Шлюз обмена сообщениями

• Скрыть доступ к системе обмена сообщениями, скрыв его от остальных частей приложения

Page 91: ук 03.011.01 2011

Виды шлюзов

1. Блокирующий (синхронный) шлюз обмена сообщениями2. Событийно управляемый (асинхронный) шлюз обмена

сообщениями

Page 92: ук 03.011.01 2011

Вопросы реализации

1. Соединение шлюзов в цепочки для обеспечения уровней абстракции

2. Обработка исключений системы обмена сообщениямиПреобразование исключений системы обмена сообщениями в

исключения, специфичные для предметной области

3. Генерация кода шлюзов– Web-сервисы– WCF

4. Использование шлюзов в процессе тестирования

Page 93: ук 03.011.01 2011

Преобразователь сообщения

Перемещение данных между объектами предметной области и элементами системы обмена сообщениям, не нарушая их независимость?

Page 94: ук 03.011.01 2011

Вопросы реализации

1. Упрощение кодирования– Дублирование кода

2. Преобразователь + транслятор для канонической модели данных

Page 95: ук 03.011.01 2011

Транзакционный клиент

• Как клиенту управлять транзакциями при взаимодействии с системой обмена сообщениями?

Page 96: ук 03.011.01 2011

• Гарантируют, что сообщение либо будет добавлено в канал, либо не будет

• Гарантируют, что либо будет считано из канала, либо не будет

• Транзакционный отправитель – сообщение не будет добавлено в канал до тех пор, пока отправитель не подтвердит выполнение транзакции

• Транзакционный получатель – сообщение не будет удалено из канала до тех пор, пока получатель не подтвердит выполнение транзакции.

Page 97: ук 03.011.01 2011

Сценарии транзакций

1. Отправка-получение пары сообщений.2. Группа сообщений.3. Сообщение – база данных4. Сообщение – рабочий поток

Page 98: ук 03.011.01 2011

Отправка-получение пары сообщений

1. РеализацияНачать транзакцию, получить и обработать первое сообщение,

отправить второе, подтвердить выполнение транзакции

2. РезультатПервое сообщение не будет удалено из своего канала, пока второе не

будет успешно добавлено в свой канал

3. Тип транзакцииЕсли оба сообщения отправляются по каналам одной системы, то

транзакция простая, в противном случае - распределенная

4. !Может применяться только получателем запроса

Page 99: ук 03.011.01 2011

Группа сообщений

1. РеализацияНачать транзакции, по очереди отправить или получить все

сообщения, после этого подтвердить выполнение транзакции.

2. РезультатПри отправке ни одно из них не будет добавлено в канал до тех пор,

пока они все не буду успешно отправлены. При получении сообщений ни одно из них не будет удалено из канала до тех пор, пока все не будут успешно получены.

3. Тип транзакцииПростая. Часто гарантируется, что будут получены в том же порядке, в

котором были отправлены.

Page 100: ук 03.011.01 2011

Сообщение – база данных

1. РеализацияНачать транзакцию, получить сообщение, обновить базу данных,

после этого подтвердить выполнение транзакции. Или обновить базу, отправить сообщение, подтвердить выполнение транзакции.

2. РезультатСообщение не будет удалено из канала до тех пор, пока не

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

3. Тип транзакцииРаспределенная транзакция.

Page 101: ук 03.011.01 2011

Сообщение – рабочий поток

1. РеализацияНачать транзакцию, открыть единицу работы, отправить сообщение с

запросом, подтвердить выполнение транзакции. Или начать другую транзакцию, получить сообщение с ответом, закрыть или аварийно завершить единицу работы, подтвердить выполнение транзакции.

2. РезультатЕдиница работы не будет успешно закрыта, пока запрос не будет

отправлен, или ответ не будет удален из канала, пока единица работы не будет обновлена.

3. Тип транзакцииРаспределенная транзакция

Page 102: ук 03.011.01 2011

Опрашивающий потребитель

Приложение должно потреблять сообщения только тогда, когда оно готово это сделать.

Явный запрос сообщений из канала.

Page 103: ук 03.011.01 2011

Событийно-управляемый потребитель

Автоматическое потребление сообщений по мере их поступления

Page 104: ук 03.011.01 2011

Составные части

1. Инициализация.2. Потребление.

Page 105: ук 03.011.01 2011

Конкурирующие потребители

Параллельная обработка сообщений одним клиентом

Page 106: ук 03.011.01 2011

Особенности

• Канал “точка-точка”• Каждый из потребителей выполняется в собственном

потоке• Скорость обработки сообщений определяется тем, как

быстро канал может распределять сообщения по потребителям

• Конкурирующие потребители могут быть опрашивающими, событийными или их комбинацией.

• Транзакционность может приводить к снижению конкурирующих потребителей

Page 107: ук 03.011.01 2011

Диспетчер сообщений

Согласованное распределение и обработка сообщений потребителями одного канала

Page 108: ук 03.011.01 2011

Составные части паттерна

• Диспетчер. Потребляет сообщения из канала, а затем раздает их.

• Исполнитель. Получает сообщение от диспетчера, а затем обрабатывает его.

Page 109: ук 03.011.01 2011

Избирательный потребитель

Потребитель сообщений выбирает сообщения, какие он хочет обработать.

Page 110: ук 03.011.01 2011

Компоненты

• Поставщик. Задает параметры выбора сообщения перед отправкой.

• Параметры выбора. Одно или несколько значений, заданных в сообщении, на основании которых потребитель принимает решение об обработке сообщения.

• Избирательный потребитель. Получает только те сообщения, которые соответствуют критериям отбора.

Page 111: ук 03.011.01 2011

Вопросы реализации

• Реализация цепочки избирательных потребителей – каждый отбирает сообщения по своему набору признаков.

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

• Если на одном канале разместить несколько избирательных потребителей, то можно заменить канал типа данных. Так делать нежелательно, если необходимо скрыть часть сообщений от некоторых приложений.

Page 112: ук 03.011.01 2011

Постоянный подписчик

Как избежать потери сообщений, если подписчик временно отключен от системы обмена сообщениями?

Page 113: ук 03.011.01 2011

Особенности

• Каналы “публикация-подписка”• Состояния подписчика:

– Подключен– Отключен– неактивен

Page 114: ук 03.011.01 2011

Идемпотентный получатель

• Что делать, если сообщение было доставлено несколько раз?

Стратегии:• Явное удаление дубликатов сообщений• Определение семантики сообщения с учетом

идемпотентностиПример: • Положить на счет 12345 еще 10 рублей.• Установить баланс счета 12345 равный 110 рублям.

Page 115: ук 03.011.01 2011

Активатор службы

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

Page 116: ук 03.011.01 2011

УПРАВЛЕНИЕ СИСТЕМОЙ

Page 117: ук 03.011.01 2011

Шина управления

Компоненты системы распределены, как ими управлять?

Page 118: ук 03.011.01 2011

Подсистемы

• Поток сообщений приложения• Шина управления

Page 119: ук 03.011.01 2011

Сообщения для шины

1. Конфигурационные сообщения. Каждый компонент должен иметь набор настраиваемых параметров:– Адреса каналов– Форматы данных сообщений– Тайм-ауты– И т.д.Также таблицы маршрутизации роутеров.

2. Пульсы.Может включать дополнительные сведения о компоненте: число

обработанных сообщений, объем оперативной памяти и т.д.

3. Тестовые сообщенияПолучить более подробную информацию о работе компонента, чем

предоставляет сообщение-пульс.

Page 120: ук 03.011.01 2011

4. Исключения.Информацию об исключениях можно дублировать в шину

управления, чтобы система могла оценить степень их серьезности.

5. Статистические сообщенияКак правило применяется канал с негарантированной доставкой или

с низким приоритетом.

6. Активная консольВсе действия объединяются в единой центральной консоли.

Page 121: ук 03.011.01 2011

Обходной путь

Сообщение проходит дополнительные этапы обработки с целью проверки правильности, отладки и тестирования.

Page 122: ук 03.011.01 2011

Отвод

Посмотреть содержимое сообщения, передаваемое по каналу “точка-точка”

Page 123: ук 03.011.01 2011

Вопросы реализации

• На примем и публикацию сообщения уходит время.• Исходное сообщение и сообщение-двойник могут иметь

разные идентификаторы, что усложняет обработку ответов.

• Сообщение менять не должно.

Page 124: ук 03.011.01 2011

Журнал доставки сообщений

Отладка маршрутов следования сообщений

Вопросы:• При прохождении сообщения через некоторые

компоненты идентификатор сообщения может меняться• На одно входящее сообщение может быть несколько

исходящих• Одно сообщение может являться результатом обработки

нескольких сообщений

Page 125: ук 03.011.01 2011

Стратегии организации журнала

• Дерево• Простой список• Журнал доставки “победившего” сообщения

Особенно полезен, если сообщение проходит ряд фильтров

Page 126: ук 03.011.01 2011

Хранилище сообщений

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

Page 127: ук 03.011.01 2011

Вопросы реализации

• Асинхронная обработка• Объем хранимых данных и нагрузка на есть• Очистка хранилища• Версионность данных

Page 128: ук 03.011.01 2011

Интелектуальный заместитель

Отслеживание сообщений, проходящих через службу, если ответ на каждое сообщение публикуется в канале, заданным обратным адресом

Page 129: ук 03.011.01 2011

Применение

• Отладка• Сбор метрик• Выполнение дополнительных действий

Page 130: ук 03.011.01 2011

Тестовое сообщение

Отладка, в случае если обработка сообщения выполняется неправильно

Page 131: ук 03.011.01 2011

Компоненты

• Генератор тестовых данных• Вбрасыватель тестовых сообщений• Отделитель тестовых сообщений• Верификатор тестовых данных

Page 132: ук 03.011.01 2011

Вентиль канала

Удалить лишние сообщения из канала, которые по каким-либо причинам остались в канале