Проверка/фильтрация данных
Модуль проверки или фильтрации данных отбрасывает некоторые переданные данные в потоке. Например, следующая рабочая функция отбрасывает все непростые числа.
Обрати внимание, что каждая из двух реализаций используется в одном из последних двух примеров, показанных ниже.
Обслуживание/сохранение данных
Как правило, модуль обслуживания или сохранения данных является последним или последним модулем вывода в системе потока данных. Рассмотрим простой воркер, который печатает каждый фрагмент данных, полученных из входного потока.
Сборка системы потока данных
Теперь давай воспользуемся указанными выше рабочими функциями модуля для сборки нескольких систем потоков данных. Сборка системы потока данных — это просто создание нескольких воркеров из разных модулей и указание входных потоков для каждого воркера.
Пример системы потока данных 1 (линейный конвейер).
Вышеупомянутая система потока данных изображена на следующей диаграмме.
Пример системы потока данных 2 (направленный конвейер ациклического графа).
Вышеупомянутая система потока данных изображена на следующей диаграмме.
Более сложная топология потока данных может представлять собой произвольные графы. Например, система потока данных может иметь несколько конечных выходов. Но системы потоков данных с топологией циклического графа редко используются в реальности.
Из приведенных выше двух примеров мы можем сделать вывод, что создавать системы потоков данных с каналами очень просто и интуитивно понятно.
Из последнего примера мы можем обнаружить, что с помощью агрегаторов легко реализовать fan-in и fan-out для количества воркеров для указанного модуля.
Фактически, мы можем использовать простой канал, чтобы заменить роль агрегатора. Например, в следующем примере два агрегатора заменяются двумя каналами.
Модифицированная система потока данных изображена на следующей диаграмме.
Важно понимать, что приведенные выше объяснения для систем потоков данных не учитывают, как закрывать потоки данных.
Рекомендуем изучить дополнительные материалы по теме: