Kafka: отличный выбор для брокеров сообщений в микросервисах
Опубликовано: 2022-11-19Kafka — это распределенная стриминговая платформа. Он часто используется для агрегирования журналов, потоковой обработки в реальном времени и поиска событий. В последнее время Kafka набирает популярность как брокер сообщений для микросервисов. Kafka — это не традиционная очередь сообщений, такая как ActiveMQ или RabbitMQ. У него нет центрального сервера, на котором хранятся все сообщения. Вместо этого он использует модель публикации-подписки. Сообщения хранятся в темах, и каждая тема может иметь несколько разделов. Kafka отличается высокой доступностью и масштабируемостью. Он может обрабатывать миллиарды сообщений в день. Кафка также очень быстр. Он может обрабатывать сообщения в режиме реального времени. Kafka — отличный выбор для создания брокера сообщений для микросервисов. Он высокодоступен, масштабируем и быстр.
Kafka, система обмена сообщениями в реальном времени, делает это возможным. Потоки данных защищены от помех и могут быть распределенными или отказоустойчивыми. Kafka Data Integration Bus — это протокол обмена данными, который позволяет широкому кругу производителей и потребителей обмениваться данными. Возможности Kafka аналогичны MongoDB и RDS, которые служат буфером данных в конце вашего приложения.
KSQL, язык сценариев на основе SQL, используется для анализа и обработки потоковых данных в режиме реального времени в Apache Kafka . KSQL включает интерактивную платформу для потоковой обработки, которая предназначена для того, чтобы вы могли выполнять действия потоковой обработки, такие как агрегация данных, фильтрация, объединение, создание сеансов, работа с окнами и т. д.
Как показал Apache Kafka, это больше, чем просто отличный брокер сообщений. Реализация платформы имеет ряд функций, подобных базе данных, которые делают ее пригодной для использования в базе данных. В результате теперь он служит записью бизнес-событий, а не зависит от реляционных баз данных.
Приложение Kafka экономит время и энергию за счет простой и эффективной потоковой передачи данных из MongoDB. MongoDB требуется предприятиям для публикации больших объемов данных другим подписчикам, а также для управления несколькими потоками данных. Служба Kafka MongoDB Connection позволяет разработчикам создавать несколько асинхронных потоков с помощью MongoDB — популярного отраслевого инструмента.
В базе данных Apache Kafka служит моделью. Сотни компаний используют его для предоставления гарантий ACID и выполнения критически важных задач. Однако в большинстве случаев Kafka не так конкурентоспособна, как другие базы данных.
Какой тип базы данных у Kafka?
Kafka — это тип базы данных, который используется для хранения и извлечения сообщений. Это распределенная система, которая спроектирована так, чтобы быть масштабируемой и отказоустойчивой.
Это платформа потоковой обработки с открытым исходным кодом, написанная на Scala и Java, которая является частью проекта Kafka Apache Software Foundation. Поток в информатике — это набор информационных элементов, которые становятся доступными с течением времени. Потоки можно определить как элементы на конвейерной ленте, обрабатываемые по одному. Потоки, в своей самой простой форме, могут быть сериями, казалось бы, не связанных между собой событий. Концепции источника событий отличаются от концепций хранилища данных и анализа данных, к которым привыкли разработчики. Как использовать Kafka в качестве базы данных? Blue — это компания, которая соглашается на сделку.
По мнению Team Red, программисты совершают огромную ошибку, когда переходят с обычных баз данных на Kafka. По словам Мартина Клеппманна, сообщение Team Red о том, что Кафка для всех, носит снисходительный характер. Проблема, с которой Team Red сталкивается с Kafka и потоками, заключается в том, что у них есть проблема с разработчиками, которые выбрасывают RDMS. Когда представлен постоянный журнал событий, он всегда будет иметь свой исторический контекст, что упрощает его аудит. Администрирование баз данных имеет множество преимуществ, но это также и один из самых сложных аспектов. Традиционная база данных работает двумя совершенно разными способами: она объединяет операции чтения и записи. Для программистов очень важно поддерживать и синхронизировать дублированные данные в нескольких таблицах.
Масштаб меняет шаблон по мере продвижения. Потоки отличаются четким разграничением интересов читателей и авторов. Нет никакой зависимости между тем, как быстро Kafka записывает в файл, и тем, как быстро Elastic Search может отправлять в него обновления. В результате пользователи Kafka обрабатывают журналы для создания различных материализованных представлений. Использование материализованных представлений в качестве удобного механизма кэширования требует некоторых предварительных затрат. Материализованные представления, помимо хранения собственных данных и масштабирования, являются важными компонентами инфраструктуры. Для 99% предприятий СУБД являются лучшей основой.
Ваше приложение может относиться к этой категории, и вы можете иметь право на новую архитектуру, основанную на вашем опыте. Многие важные функции будут потеряны, если вы замените базы данных журналами. Функции включают в себя ограничения внешнего ключа, атомарные транзакции (все или ничего) и методы процедурной изоляции, помогающие решать проблемы параллелизма. Арджун предполагает, что целостность вашего приложения всегда поддерживается. Основные функции, которые большинство людей считают само собой разумеющимися, становятся дополнительными обязанностями при работе с потоками. Крайне важно отделить намерение от письменного заявления. Распространенной конфигурацией является использование Kafka вместе с системой отслеживания измененных данных.
По мнению Team Red, функции обеспечения целостности данных в базах данных имеют решающее значение для достижения контроля над данными. Транзакции должны быть изолированы от обычных баз данных, чтобы их можно было учитывать. В результате один текст может стоить дорого. Если ваше приложение с трудом справляется с объемом дорогостоящих операций записи, возможно, вам придется перейти на более обычную базу данных. Team Red не упоминает, что использование базы данных перед Kafka снижает ее лучшие возможности.
Преимущества этой конструкции значительны по сравнению с традиционными системами обмена сообщениями. Первое преимущество Kafka заключается в том, что она может обрабатывать большое количество запросов. Кроме того, поскольку данные записываются на диск только тогда, когда это необходимо, Kafka может обрабатывать огромные объемы данных.
SQL Server — это инструмент базы данных, который относится к категории инструментов. Это портативное устройство является универсальным и надежным, но иногда его использование может быть затруднено. Kafka и Azure — очень функциональные платформы, но масштаб Kafka увеличивается, а Azure — уменьшается.
SQL Server — отличный инструмент для предприятий, которым требуется хранение больших объемов данных, но он может быть не лучшим выбором для тех, кому требуется быстрое масштабирование или высокая пропускная способность. Для предприятий, которым необходимо обрабатывать большие объемы данных без ущерба для производительности, Kafka — лучший выбор, чем SQL Server.
Kafka: распределенная система хранения для телеметрии временных рядов
Распределенная система хранения Kafka, в которой используется тематическая модель, хранит данные. Данные могут храниться в топической модели базы данных Kafka, а не в реляционной базе данных. Он ведет себя аналогично очереди в Kafka Topic , хотя и не так, как очередь. Он может хранить большое количество временных рядов в структуре Kafka, а не в базе данных временных рядов.
В чем разница между Кафкой и Монгодб?
Это распределенная, разделенная и реплицированная служба журнала фиксации, основанная на распределенной системе. Несмотря на свой уникальный дизайн, это важный компонент системы обмена сообщениями. MongoDB, с другой стороны, описывается как «база данных гигантских идей».
Поскольку Kafka не поддерживает организацию очередей из коробки, вы должны внедрить ее в потребительскую версию системы. Если требуется реляционная база данных, может оказаться более полезным другой инструмент. MongoDB — отличный выбор по целому ряду причин, включая простоту использования и гибкость. Доступна поддержка пользователей Apache. У Confluent есть Kafka (если он готов платить), который был создан в Linkedin в то же время, что и проект Kafka. Очень удобно иметь поставщика, который выполняет автоматическое резервное копирование и автоматически масштабирует кластер. Если у вас нет системного администратора или администратора баз данных, которые знают MongoDB, рекомендуется использовать третью сторону, которая специализируется на хостинге MongoDB.
Kafka в своей самой простой форме предназначена для того, чтобы мы могли ставить сообщения в очередь. Механизм хранения Cassandra обеспечивает постоянную запись ваших данных, независимо от того, насколько они велики. MongoDB предоставляет настраиваемую реализацию map/reduce, а также встроенную поддержку Hadoop для аналитики, тогда как Cassandra этого не делает. Не имеет значения, размещается ли он у вас или у другого провайдера, потому что стоимость обычно разумна.
Кафка Против. Традиционные системы баз данных
Важно отметить, что между Kafka и традиционной системой баз данных есть несколько отличий.
Поскольку Kafka является потоковой платформой, она может обрабатывать высокую скорость приема данных, не требуя значительной предварительной обработки.
При работе Kafka данные потребляются при чтении хвоста, а не при чтении с диска.
Использование кэширования страниц снижает потребность в двусторонних посещениях базы данных для Kafka.
Для отправки данных нижестоящим клиентам Kafka использует обмен сообщениями pub/sub.
Что такое база данных Кафка
Kafka — это база данных, которая часто используется для хранения потоковых данных. Это распределенная система, которая спроектирована так, чтобы быть масштабируемой и отказоустойчивой. Kafka часто используется для создания конвейеров данных в реальном времени и потоковых приложений. Он может работать с высокой пропускной способностью и низкой задержкой.
В последние годы популярность брокера сообщений, такого как Kafka, возросла. По мнению сторонников, Kafka — это смена парадигмы в управлении данными. Важно помнить, что использование Kafka в качестве основного хранилища данных не обеспечивает вам изоляции. Каждая проблема, с которой сталкиваются системы баз данных, будет решена в будущем. Хакеры могут украсть данные, используя недостатки в автономных архитектурах. Если два пользователя попытаются приобрести один и тот же товар одновременно, они оба добьются успеха, и у нас не будет инвентаря для них обоих. Эти архитектуры, использующие функции перемещения во времени при работе устройств газлайтинга, основаны на архитектурах, управляемых событиями.
Управление большими объемами данных — отличное применение Kafka. Транзакции по-прежнему должны быть изолированы с использованием традиционной СУБД. Используйте базы данных OLTP для управления доступом, CDC для генерации событий и моделируйте последующие копии по мере появления представлений, чтобы вывернуть вашу базу данных наизнанку.
Kafka также можно использовать для хранения больших объемов данных и их ежедневной обработки. Возможность обработки больших данных в пакетном или потоковом режиме является преимуществом перед другими методами. Процесс Kafka можно использовать для извлечения файлов журнала с нескольких серверов и сохранения их, например, в базе данных или поисковом индексе. Также доступен потоковый API, который можно использовать для обработки данных в режиме реального времени.
Кафка против Sql
В целом Kafka и MySQL делятся на два типа: очереди сообщений и приложения базы данных. Большинство разработчиков считают Kafka высокопроизводительным, распределенным и масштабируемым решением, тогда как MySQL считается наиболее популярным из-за его простоты, производительности и простоты использования.
Обмен сообщениями Pub-Sub на Kafka — это распределенная отказоустойчивая система с высокой пропускной способностью, способная обрабатывать большие объемы данных. MySQL — самая популярная в мире база данных с открытым исходным кодом, предназначенная для использования в критически важных и высоконагруженных производственных системах. Разработчики считают Kafka более мощным, чем MySQL, из-за его высокой пропускной способности, распределенной архитектуры и масштабируемости; тогда как SQL, Free и Easy являются основными причинами, по которым пользователи MySQL предпочитают его. Я рекомендую PostgreSQL, если вы хотите получить практический опыт работы с системами управления базами данных (СУБД). В Vital Beats мы в основном используем Postgres, потому что он позволяет нам достичь желаемого баланса между эффективным управлением данными и резервным копированием, сохраняя при этом поддержку командной строки. Если вы планируете разместить свою базу данных локально или в облаке, в первую очередь вам следует обратиться к базам данных PaaS (платформа как услуга). Поскольку MongoDB записывает данные на том же уровне, что и один документ, согласованность без транзакций затруднена.
Хранилища документов, такие как в Amazon DynamoDB и AWS RedShift, сильно отличаются от пар «ключ-значение» (или хранилищ столбцов) в MongoDB. Выполнять запросы с помощью базы данных #Nosql быстрее и проще, поскольку время разработки сокращается. Как начинающий сотрудник в сфере недвижимости, я хотел бы выбрать базу данных, которая со временем будет очень продуктивной. Если вы запускаете Aurora Postgres на AWS с развертыванием в одном регионе, это одна из лучших платформ, которые я рекомендую. Если вы используете PostgreSQL в трех облачных средах, репликация в нескольких регионах будет более эффективной. Если вы настроите их правильно, любая из этих трех баз данных будет работать эффективно, масштабируемо и надежно в долгосрочной перспективе. Uber перешел с Postgres на MySql по разным причинам, включая потребность в более гибкой и надежной системе передачи данных.
Технический директор OPS Platform заявил, что Postgres был наиболее эффективным долгосрочным выбором для их продукта из-за его скорости и простоты использования. По сравнению с MySQL 7.x транзакции в MySQL 8.0 обрабатываются быстрее. Является ли база данных более безопасной? Можно ли случайно изменить ключ шифрования? MySQL и MongoDB — две самые популярные базы данных с открытым исходным кодом. Помимо простоты хранения данных, MongoDB можно использовать для хранения больших объемов входящих данных через сеть распространения контента (CDN). Основным преимуществом Postgres перед другими объектно-реляционными базами данных является упор на расширяемость и соответствие стандартам.
Могут быть созданы обычные B-деревья и хэш-индексы, а также индексы Expression и Partial (те, которые влияют только на часть таблицы). Основное различие между Redis и Kafka заключается в использовании ими корпоративных сред обмена сообщениями. Я ищу облачную технологию, когда выбираю ее. Помимо обнаружения служб, NATS можно использовать для замены балансировки нагрузки, глобальных мультикластеров и других операций. Единственное, чего Redis не делает, так это не служит чистым брокером сообщений (на момент написания). В результате это больше похоже на обычное хранилище ключей и значений в памяти. Несмотря на обширную фонотеку, мои песни часто длятся более двух часов.
Проблема с хранением аудиофайлов в строке базы данных в течение нескольких часов заключается в том, что их нелегко найти. Если вы предпочитаете, рассмотрите возможность хранения аудиофайлов в облачном хранилище, таком как Backblaze b2 или AWS S3. Есть ли решение, использующее MQTT Broker в IoT World? Он размещен в одном из дата-центров. В настоящее время мы обрабатываем его для целей, связанных с предупреждениями и тревогами. Нашей основной целью является использование более легких продуктов, которые снижают эксплуатационную сложность и затраты на техническое обслуживание. Было бы идеально, если бы мы могли интегрировать Apache Kafka с этими дополнительными сторонними вызовами API.
Приложение RabbitMQ — отличный выбор как для повторных попыток, так и для постановки в очередь. Если вам не нужно, чтобы каждое сообщение обрабатывалось более чем одним пользователем, вы можете использовать RabbitMQ. Нет смысла использовать Kafka для доставки системы с подтверждениями. Диспетчер состояний событий Kafka, как и диспетчер состояний сохраняемых событий, позволяет преобразовывать и запрашивать различные источники данных с помощью потокового API. Фреймворк RabbitMQ идеально подходит для индивидуального издателя или подписчика (или потребителя), и я считаю, что разветвленный обмен можно настроить для включения нескольких потребителей. Проект Pushnami демонстрирует, как перенести оперативные данные из одной базы данных в другую. Поскольку каждый интерфейс (Angular), серверная часть (Node.js) и внешний интерфейс (MongoDB) являются собственными, обмен данными был намного проще.
Чтобы избежать слоя перевода, я пропустил реляционную часть в иерархическую. Крайне важно сохранять конечный размер объектов MongoDB и использовать правильные индексы. Еще в 1960-х годах некоторые из первых электронных медицинских карт (EMR) использовали MUMPS, базу данных, ориентированную на документы. MongoDB, в которой хранится до 40% всех больничных записей, считается надежной медицинской базой данных. Тем не менее, было несколько очень умных методов для выполнения геозапросов, не поддерживаемых изначально, которые в долгосрочной перспективе чрезвычайно медленны. Amazon Kinesis обрабатывает сотни тысяч файлов данных в секунду из сотен тысяч источников. RabbitMQ упрощает отправку и получение сообщений из любого приложения. Apache ActiveMQ работает быстро, поддерживает широкий спектр многоязычных клиентов и является надежным языком сценариев. Данные Hadoop обрабатываются с помощью быстрого механизма обработки общего назначения под названием Spark.
Кафка против Mongodb
MongoDB — это мощная база данных, ориентированная на документы, которая имеет множество функций, которые делают ее хорошим выбором для различных приложений. Kafka — это высокопроизводительная платформа потоковой передачи, которую можно использовать для создания конвейеров данных в реальном времени и потоковых приложений.
Переносы из MongoDB в качестве источника в другие источники MongoDB или другие источники MongoDB могут быть беспрепятственными с помощью приложения Kafka to MongoDB. С помощью MongoDB Kafka Connector вы научитесь эффективно передавать данные. С помощью этой функции вы можете создать совершенно новый конвейер ETL для своей организации. Confluent предлагает множество соединителей, которые действуют как источник и приемник, позволяя пользователям передавать данные между ними. Коннекторы Debezium MongoDB — это один из таких механизмов подключения, который позволяет пользователям Kafka MongoDB подключаться к базе данных MongoDB. Прежде чем вы сможете запустить Confluent Kafka, вы должны сначала убедиться, что он работает в вашей системе. Используя такие функции, как KStream, KSQL или любой другой инструмент, например Spark Streaming, вы можете анализировать данные в Kafka.
Для ввода данных в хранилище требуются ручные сценарии, а также пользовательский код. Платформа конвейеров данных Hevo без кода позволяет создавать простые системы конвейеров данных без программирования. Платформа прозрачного ценообразования Hevo позволяет вам видеть каждую деталь ваших расходов на ELT в режиме реального времени. Пробный период длится 14 дней и включает поддержку 24×7. Сквозное шифрование выполняется с использованием самых строгих сертификатов безопасности. Hevo можно использовать для безопасной передачи данных Kafka и MongoDB в 150 различных источников данных (включая 40 бесплатных источников).
Что такое Кафка и Монгодб?
Соединитель MongoDB Kafka — это проверенный Confluent соединитель, который хранит данные из тем Kafka в качестве приемника данных в MongoDB и публикует изменения в этих темах в качестве источника данных.
Плюсы и минусы использования Kafka в качестве базы данных
Какая база данных подходит для Kafka? В принципе, Kafka можно использовать для создания базы данных. Результатом станет исследование каждой крупной проблемы, которая десятилетиями досаждала системам управления базами данных. Система управления базами данных (СУБД) — это тип программного обеспечения, которое упорядочивает и запрашивает данные. Они необходимы для крупномасштабных приложений и для хранения данных, к которым должны обращаться несколько пользователей. СУБД подразделяются на два типа: реляционные и нереляционные. Реляционная модель — это стандартный метод представления информации в реляционной СУБД. Они популярны, потому что просты в использовании, и их можно использовать для хранения данных, организованных в виде таблиц. СУБД, не использующая пользовательские реляционные модели, не так мощна, как СУБД, использующая другие модели. Данные также хранятся в форматах, отличных от таблиц, для более эффективной организации, например, в виде потоков данных. Модель Kafka используется для создания базы данных, которую можно использовать для различных целей. Потоковая обработка лежит в основе Kafka, новой модели представления данных. Системы управления данными (DMS) являются важнейшим компонентом управления данными. Однако иногда использование Kafka в качестве базы данных может быть затруднено. Одними из наиболее распространенных проблем, с которыми сталкиваются СУБД, являются производительность, масштабируемость и надежность. Джордж Фрейзер, генеральный директор Fivetran, и Арджун Нараян, генеральный директор Materialise, написали пост в соавторстве.
База данных Kafka Persistence
Базы данных сохраняемости Kafka предоставляют способ хранения данных в кластере kafka высокодоступным и масштабируемым образом. По умолчанию kafka будет использовать базу данных в памяти для хранения данных, но это не подходит для производственных развертываний. База данных постоянства kafka может использоваться для обеспечения более надежного варианта хранения данных kafka.
LinkedIn создала Apache kaffef с открытым исходным кодом в 2011 году. Эта платформа позволяет передавать данные в режиме реального времени с чрезвычайно низкой задержкой и пропускной способностью. В большинстве случаев данные можно импортировать и экспортировать через Kafka Connect из внешних систем. Новые решения могут помочь в решении таких проблем, как неэффективная производительность хранилища и недостаточное использование дисков. Несмотря на сложности архитектуры, локальная флэш-память — отличный выбор для систем Kafka. Поскольку к каждой теме в Kakfa можно получить доступ только на одном диске, будет увеличиваться неполная загрузка. Синхронизация также может быть затруднена, что приводит к проблемам с затратами и эффективностью.
Когда SSD выходит из строя, данные с него должны быть полностью восстановлены. Эта трудоемкая процедура снижает производительность кластера. Kafka лучше всего подходит для хранения на основе NVMe/TCP, поскольку сглаживает компромисс между надежностью и производительностью.
Kafka — фантастическая система обмена сообщениями, но не идеальное решение для хранения данных
Kafka — отличная система обмена сообщениями, которую можно использовать для хранения данных. Одним из вариантов хранения Kafka является время хранения -1, которое относится к пожизненному сохранению. Однако надежность Kafka далеко не соответствует надежности традиционной базы данных. Важно отметить, что Kafka хранит данные на диске, контрольной сумме и реплицирует для отказоустойчивости, поэтому накопление большего количества сохраненных данных не замедляет работу. Kafka можно использовать для отправки и получения сообщений, но это не лучший выбор для хранения данных.
Что такое Кафка
Kafka — это быстрая, масштабируемая, надежная и отказоустойчивая система обмена сообщениями с публикацией и подпиской. Kafka используется в производстве такими компаниями, как LinkedIn, Twitter, Netflix и Airbnb.
Кафка имеет простой и понятный дизайн. Это распределенная система, которая работает на кластере машин и может масштабироваться горизонтально. Kafka предназначена для работы с высокой пропускной способностью и низкой задержкой.
Kafka используется для создания конвейеров и приложений потоковой передачи данных в реальном времени. Его можно использовать для обработки и агрегирования данных в режиме реального времени. Kafka также можно использовать для обработки событий, ведения журнала и аудита.
LinkedIn запустил Kafka в 2011 году для обработки потоков данных в реальном времени. Сегодня Kafka используют более 80% компаний из списка Fortune 100. Kafka Streams API — это мощная и легкая библиотека, разработанная для обеспечения обработки «на лету». Помимо популярных распределенных баз данных, Kafka включает в себя абстракцию распределенного журнала фиксации. В отличие от очередей обмена сообщениями, Kafka — легко адаптируемая, отказоустойчивая распределенная система с высокой масштабируемостью. Например, его можно использовать для управления сопоставлением пассажиров и водителей в Uber или для предоставления аналитики в реальном времени в British Gas. Многие микросервисы полагаются на Kafka. Облачный, полный и полностью управляемый сервис Confluent превосходит сервис Kafka. Confluent упрощает создание совершенно новой категории современных приложений, управляемых событиями, путем объединения исторических данных и данных в реальном времени в один унифицированный источник достоверной информации.
С помощью Kinesis вы можете обрабатывать широкий спектр потоков данных, что делает его мощной и универсальной платформой для потоковой обработки. Это популярная платформа из-за ее скорости, простоты и совместимости с широким спектром устройств. Благодаря своей надежности это одна из самых популярных потоковых платформ. Он может обрабатывать большие объемы данных без каких-либо проблем благодаря своей долговечности. Кроме того, поскольку это хорошо известная платформа, которая широко используется и поддерживается, найти партнера или интегратора, который поможет вам начать работу с ней, несложно. Если вы ищете мощную и надежную потоковую платформу, Kinesis — отличный выбор.
Kafka: система обмена сообщениями, которая заменяет базы данных
Потоки данных в реальном времени можно настроить так, чтобы они адаптировались к изменяющейся среде данных, используя Kafka, систему обмена сообщениями для создания конвейера и приложений потоковой передачи данных в реальном времени. Большие данные обрабатываются через потоки событий в реальном времени с помощью Kafka, написанного на Scala и Java. Соединение Kafka можно расширить из одной точки в другую, а также использовать для отправки данных между источниками. Платформа потоковой передачи событий предназначена для обеспечения прямой трансляции событий. Несправедливо сравнивать базы данных с решениями для обмена сообщениями, такими как Kafka. Благодаря функциям Kafka базы данных больше не требуются.
Кафка — это не база данных
Kafka не является базой данных, но часто используется вместе с ней. Это брокер сообщений, который можно использовать для отправки сообщений между различными компонентами системы. Он часто используется для разделения различных частей системы, чтобы они могли масштабироваться независимо друг от друга.
Можно заменить Apache Kafka базой данных, но не делайте этого ради удобства. Эпизод Top Gear, в котором главные герои получили по 10 000 долларов каждый за покупку подержанного итальянского суперкара со средним расположением двигателя, напомнил мне старый эпизод Top Gear, в котором главные герои получали по 10 000 долларов каждый. В 2011 году LinkedIn выпустил Kafka, и в том же году вышел этот эпизод. Это позволяет вам выполнять минимальный постоянный обмен сообщениями, не вкладывая средства в полнофункциональную платформу обмена сообщениями. Фундаментальная предпосылка состоит в том, что существует основное правило. Создайте таблицу (или корзину, коллекцию, индекс и т. д.) для каждого события, которое было записано в процессе создания. Регулярно опрашивайте базу данных из экземпляра потребителя, обновляя состояние потребителя по мере его обработки.
Чтобы модель работала должным образом, производители и потребители должны иметь возможность работать одновременно. Рассмотрите возможность использования книги Кафки в качестве руководства и хранения записей на неопределенный срок, а не просто их чтения. Непересекающиеся группы потребителей, с другой стороны, могут быть реализованы путем дублирования записей при вставке и последующего удаления записей после потребления. Kafka использует постоянные смещения, чтобы обеспечить настраиваемое пользователем разветвление данных и поддержку нескольких непересекающихся потребителей. Чтобы прекратить использование этой функции, вы должны разработать службу с нуля. Реализовать концепцию очистки по времени несложно, но необходимо поддерживать логику мусорщиков. В Kafka есть детальный контроль над всеми действующими лицами (потребителями, производителями и администраторами).
Он может без проблем обрабатывать миллионы записей в секунду на стандартных и облачных серверах. Kafka оптимизирована для обеспечения высокой пропускной способности как на стороне производителя, так и на стороне потребителя в нефункциональном смысле. Используя Kafka, это распределенный журнал только для добавления, который не имеет себе равных в этой области. В отличие от традиционных брокеров сообщений, которые удаляют сообщения на этапе потребления, Kafka не очищает сообщения после их использования. Пропускная способность и задержка базы данных почти наверняка должны быть значительно улучшены за счет использования специализированного оборудования и целенаправленной настройки производительности. Отказ от брокера может показаться привлекательным на первый взгляд. Когда вы используете платформу потоковой передачи событий, такую как Kafka, вы извлекаете выгоду из огромных инженерных усилий, затраченных на ее создание.
Чтобы гарантировать, что любое решение, которое вы решите развернуть сегодня, может поддерживаться, вы должны быть уверены, что оно может поддерживаться на высоком уровне. Большинство функций в хранилище событий можно реализовать только с помощью базы данных. Не существует универсального магазина событий; любое нетривиальное хранилище событий в большинстве случаев почти наверняка является заказной реализацией, поддерживаемой одной или несколькими готовыми базами данных. Вы можете использовать базы данных в области организации данных для эффективного поиска, но вам следует избегать их использования для распространения данных (почти) в реальном времени.