Введение в Apache Pulsar, систему обмена сообщениями с публикацией и подпиской

искусственный интеллект Командная строка Apache электронная книга
Введение в Apache Pulsar, систему обмена сообщениями с публикацией и подпиской
Эта статья написана [Передовая линия ИИ] Оригинал, исходная ссылка:t.cn/RTzihsu


Руководство по передовой ИИ:Apache Pulsar (проект-инкубатор) — это система обмена сообщениями корпоративного уровня с публикацией-подпиской (pub-sub), первоначально разработанная Yahoo с открытым исходным кодом в конце 2016 года, а теперь являющаяся проектом-инкубатором Apache Software Foundation. Pulsar работает в производственной среде Yahoo уже более трех лет, поддерживая основные приложения Yahoo, такие как Yahoo Mail, Yahoo Finance, Yahoo Sports, Flickr, рекламную платформу Gemini и распределенный магазин ключей Yahoo Sherpa.


Понятия и термины, связанные с пульсарами

Приложения, которые отправляют данные в Pulsar, называются производителями, а приложения, которые считывают данные из Pulsar, называются потребителями. Иногда потребителей также называют подписчиками. Тема — основной ресурс Pulsar.Тема может рассматриваться как канал, потребители отправляют данные в этот канал, а потребители извлекают данные из этого канала.

В

Рисунок 1: Производители, потребители и темы

Pulsar был создан для поддержки сценариев использования с несколькими арендаторами. Механизм множественной аренды Pulsar состоит из двух ресурсов: ресурсов и пространств имен. Активы представляют арендаторов в системе. Если предположить, что кластер Pulsar используется для поддержки нескольких приложений (как это делает Yahoo), каждый актив в кластере может представлять организационную команду, основную функцию или линейку продуктов. Ресурс может содержать несколько пространств имен, а пространство имен может содержать любое количество тем.

Рисунок 2: Взаимосвязь между различными компонентами Pulsar

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

  • местный (местный)- Локальные пространства имен видны только внутри кластера.

  • Глобальный—— Пространство имен видно нескольким кластерам, которые могут быть кластерами в одном центре обработки данных или кластерами в региональных центрах обработки данных. Эта функция зависит от того, включена ли репликация кластера.

Хотя локальные и глобальные пространства имен имеют разные области действия, они оба могут совместно использоваться разными группами или организациями. Если у приложения есть разрешение на запись в пространство имен, оно может записывать данные во все темы в этом пространстве имен. Если написанной темы не существует, она будет создана.

Каждое пространство имен может содержать одну или несколько тем, у каждой темы может быть несколько подписчиков, и каждый подписчик может получать все сообщения, опубликованные в этой теме. Чтобы сделать приложения более гибкими, Pulsar предлагает три типа подписки, которые могут сосуществовать по одной и той же теме:

  • Эксклюзивная подписка- Одновременно может быть только один потребитель.

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

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

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

Рис. 3. Различные типы подписок Pulsar

раздел данных

Данные, записываемые в тему, могут занимать всего несколько мегабайт или несколько терабайт. Итак, в некоторых случаях пропускная способность топика очень низкая, а иногда и очень высокая, полностью зависящая от количества потребителей. Так что же делать, если одни темы имеют высокую пропускную способность, а другие — низкую? Чтобы решить эту проблему, Pulsar распределяет данные темы по нескольким машинам, так называемым разделам.

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

После создания темы раздела Pulsar может автоматически разбивать данные, не затрагивая производителей и потребителей. То есть приложение записывает данные в топик, и после того, как топик разбит на разделы, код приложения не нужно модифицировать. Разбиение на разделы — это просто операция по эксплуатации и обслуживанию, и приложению не нужно заботиться о том, как выполняется разбиение.

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

В

Рисунок 4: Распространение темы среди нескольких брокеров

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

  • один раздел- Производитель случайным образом выбирает раздел и записывает данные в этот раздел. Эта стратегия обеспечивает те же гарантии, что и неразделенные темы, но может быть полезна, если несколько производителей пишут в одну и ту же тему.

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

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

  • пользовательский раздел—— Производитель использует пользовательскую функцию для создания значения, соответствующего разделу, а затем записывает сообщение в соответствующий раздел в соответствии с этим значением.


Упорство

После того, как брокер Pulsar получит и подтвердит сообщение, он должен гарантировать, что сообщение не будет потеряно ни при каких обстоятельствах. В отличие от других систем обмена сообщениями, Pulsar использует Apache BookKeeper для обеспечения надежности. BookKeeper обеспечивает постоянное хранилище с низкой задержкой. После получения сообщения Pulsar отправляет сообщение нескольким узлам BookKeeper (в зависимости от коэффициента репликации), и узлы записывают данные в журнал упреждающей записи и одновременно сохраняют копию в памяти. Узлы принудительно записывают журналы в постоянное хранилище перед подтверждением сообщений, поэтому данные не теряются даже в случае сбоя питания. Поскольку брокер Pulsar отправляет данные нескольким узлам, он отправит сообщение подтверждения производителю только после того, как большинство узлов (кворум) подтвердят, что запись прошла успешно. Таким образом Pulsar гарантирует, что данные не будут потеряны даже в случае сбоя оборудования, сбоя сети или другого сбоя. В следующей статье мы углубимся в детали этого.


Практика производственной среды

В настоящее время Pulsar поддерживает основные приложения Yahoo, такие как Yahoo Mail, Yahoo Finance, Yahoo Sports, рекламную платформу Gemini и распределенный магазин ключей Yahoo Sherpa. Многие сценарии требуют надежных гарантий надежности, таких как нулевая потеря данных, при этом требуется высокая производительность. Pulsar был развернут в производственной среде с 2015 года и в настоящее время запущен в масштабе производства в Yahoo.

  • Pulsar развернут более чем в 10 центрах обработки данных с возможностью полной репликации сетки.

  • Обрабатывает более 100 миллиардов сообщений в день

  • Поддерживается 1,4 миллиона тем

  • Общая задержка публикации сообщения составляет менее 5 мс.


Суммировать

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

Посмотреть исходный английский текст:поток class.IO/blog/intro-…

Следите за нами в WeChat"Передовая линия ИИ", ответьте "AI" в фоновом режиме, чтобы получить серию электронных книг в формате PDF "AI Frontline".