Потоковые данные генерируются и доставляются непрерывно, бесконечно и с переменной скоростью. Он может быть двух типов: входящий или исходящий. Входящие потоковые данные могут поступать так быстро и иметь такой большой объем, что хранить их бесполезно, недостойно или невозможно. Практически невозможно регулировать структуру, целостность данных или контролировать объем и скорость генерируемых данных.
Это означает, что наше приложение должно извлекать знания из данных, как только они поступят. Другими словами, скорость имеет наибольшее значение при потоковой передаче больших данных, потому что ценность данных со временем уменьшается, если их не обрабатывать быстро.
Потоковая обработка
Потоковая обработка – это метод, используемый для обработки и анализа данных в движении.
Поскольку поток данных потенциально бесконечен и имеет любой размер, мы не можем быть уверены, что он будет соответствовать объему имеющейся у нас памяти. Чтобы решить эту проблему, мы используем метод скользящего временного окна. Мы всегда смотрим на данные, которые поступили за последние N секунд или около того.
Конечно, нам нужно принять меры предосторожности, чтобы быстро выполнить первый уровень обработки. Удобство использования страдает, если наша первоначальная обработка выполняется настолько медленно, что пропускает 80% данных в скользящем окне. Если мы не сможем выполнить это, нам нужно убедиться, что мы можем наверстать упущенное, используя методы кэширования.
Потоковая передача против пакетной обработки
Некоторые люди путают потоковую передачу с пакетной обработкой. Они оба предназначены для получения знаний из значительного объема данных как можно скорее.
Методы пакетной обработки данных требуют загрузки данных в виде пакетов перед их обработкой, сохранением или анализом. Напротив, потоковые данные поступают непрерывно и позволяют обрабатывать эти данные одновременно, в режиме реального времени, в секунду после их создания.
Если вам нужно знать еженедельные продажи вашей организации, нет смысла запускать пакетную обработку каждый час или применять потоковую обработку. Пакетную обработку запросов можно запланировать один раз в неделю, предпочтительно в воскресенье, чтобы получить результаты к утру понедельника.
С другой стороны, потоковая передача всегда в режиме реального времени. Это прямо здесь, прямо сейчас. Как мы объясняли ранее, обычно мы не можем позволить себе хранить их или откладывать их обработку.
Это действительно в реальном времени?
Системы реального времени можно разделить на жесткие системы реального времени и мягкие системы реального времени.
- Системы жесткого реального времени. Это системы, которые должны соответствовать определенным директивам по времени отклика. Если они этого не сделают, последствия могут быть огромными. Например, эти системы часто используются в медицинской технике, например, в кардиостимуляторах, или в системах защиты, например, в системе противоракетной защиты.
- Системы мягкого реального времени. Это системы, которые должны немедленно реагировать на триггер, но не ограничивая его определенными временными окнами.
Однако это не означает, что SLA отсутствуют. Нарушение их не поставит под угрозу чью-либо жизнь, но они, скорее всего, будут классифицированы как UX или снижение производительности.
SLA могут по-прежнему работать в обычном режиме, если они не укладываются в срок, а это означает, что единственная проблема будет заключаться в снижении производительности.
Некоторые примеры потоковой передачи данных
- Мониторинг устройств. Все устройства пограничного облака отправляют пульсирующий сигнал каждые несколько миллисекунд. Получатель обрабатывает поток и выдает оповещения, если количество сердцебиений уменьшается за последнюю минуту.
- Обнаружение мошенничества. Все платежи, которые происходят в Интернете каждую секунду, немедленно анализируются на предмет мошенничества. Эти системы выдают предупреждения о любых подозрительных платежах.
- Мониторинг цен на акции. Клиент разместил ордер на продажу акции, когда она достигает определенной цены. Анализатор потока наблюдает за потоком ценовых колебаний, чтобы действовать, когда цена совпадает.
- Популярные статьи. У нас есть новостной сайт и бот, который публикует в Твиттере все статьи, имеющие в базе данных пометку «Популярные». У нас есть алгоритм, применяемый в потоке просмотров, и мы помечаем их как трендовые, когда количество зрителей превышает определенный порог.
Широко используемая платформа потоковой передачи данных в реальном времени
- Апач Кафка
- Апач Флюм
- Искра потокового
- Апачская буря
Апач Кафка
Apache Kafka — одна из самых известных потоковых платформ. Первоначально он был создан LinkedIn, а через несколько лет был передан в дар Apache Foundation.
Kafka — это распределенная стриминговая платформа. Мы можем использовать его как систему обмена сообщениями в реальном времени с высокой отказоустойчивостью. Другими словами, это означает, что наши сообщения будут доставлены быстро, и в случае сбоя мы сможем быстро в этом разобраться. Сообщение может быть чем угодно: от строки до сериализованного объекта или большого двоичного объекта.
Kafka также очень известна своей масштабируемостью. Несмотря на свои многочисленные возможности, Kafka широко используется для соединения разнородных приложений по принципу «многие ко многим».
Например, когда система получает новую цену акций, она отображается в пользовательском интерфейсе, обновляет базу данных новым значением и сохраняет событие изменения в HDFS или любом используемом нами озере данных. Мы можем сделать это, если несколько потребителей, также называемых соединителями, прочитают сообщение и воздействуют на него.
Kafka имеет различные подкомпоненты, такие как Kafka Streams и KafkaSQL, каждый из которых имеет свою специализацию.
Апач Флюм
Flume — это распределенный, надежный и доступный сервис для эффективного сбора, агрегирования и перемещения больших объемов данных. Обычно эти данные относятся к лог-файлам. Например, представьте себе запуск веб-приложения с использованием нескольких серверов, и мы хотим получить журналы в одном месте. Это был бы идеальный вариант использования Apache Flume.
Он имеет простую и гибкую архитектуру, основанную на потоковых потоках данных. Flume надежен и отказоустойчив, с настраиваемыми механизмами надежности и множеством механизмов аварийного переключения и восстановления.
Искра потокового
Он является частью основного API Spark и соответствует философии «единственного и неповторимого инструмента для обработки больших данных». Потоковая передача Spark обеспечивает возможности потоковой передачи с высокой пропускной способностью и отказоустойчивым способом.
Он принимает входные данные из множества различных типов источников, таких как Kafka или HDFS, и передает данные на уровень сохраняемости в потоковом режиме.
Апач Шторм
Apache Storm изначально был создан в Twitter для обработки сообщений в реальном времени и может быть похож на Kafka. Однако, в отличие от Kafka, он фокусируется на вычислениях, а не на доставке.
Kafka — это в основном очередь, тогда как Storm может выполнять несколько типов вычислений над данными.
Надеюсь, эта статья даст вам обзор потоковой передачи и различных инструментов, доступных на рынке, чтобы начать работу, до следующего раза, Adios!