Архитектура Сяо Гедань«Отказ» со всеми, высокопроизводительная пропускная способность на уровне триллионов сообщений Принцип конструкции Pulsar Нравится Нравится Нравится.
Обратите внимание на мой публичный номерСоломон Сяо Гедан АрхитектураПолучите больше отличного контента
Принцип построения MQ Pulsar с высокой производительностью и пропускной способностью триллионов сообщений
1. Базовое введение в MQ
1.1 Основные понятия
- Тема: Тема сообщения, тип сообщения первого уровня, которому производитель отправляет сообщения.
- Производитель: также известен как издатель сообщений, отвечает за создание и отправку сообщений в тему.
- Потребитель: также известный как подписчик сообщений, отвечающий за получение и использование сообщений из темы.
- Сообщение: комбинация данных и (необязательных) атрибутов, которые производитель отправляет в тему и в конечном итоге доставляет потребителю.
- Свойства сообщения: свойства, которые производители могут определить для сообщений, включая ключ сообщения и тег.
- Группа: тип производителя или потребителя. Этот тип производителя или потребителя обычно создает или потребляет сообщения одного и того же типа, и логика публикации или подписки на сообщения согласуется.
1.2 Типы сообщений
- Обычные сообщения: сообщения без функций в версии очереди сообщений RocketMQ, которые отличаются от сообщений с задержкой/задержкой, последовательных сообщений и сообщений транзакций с функциями.
- Обмен транзакционными сообщениями: реализует функциональные возможности распределенных транзакций, подобные X/Open XA, для достижения согласованности транзакций в конечном итоге.
- Сообщения с задержкой и сообщениями с задержкой. Разрешить производителям сообщений доставлять сообщения с задержкой в течение максимум 40 дней.
- Последовательные сообщения: разрешить потребителям сообщений использовать сообщения в том порядке, в котором они были отправлены.
1.3 Сценарии применения MQ
- Торговая система
- Шип красного конверта
- Закрыть неоплаченные заказы
- Регистрация информации о пользователе
- Дизайн онлайн-лотереи
- Дизайн системы миссии
- Обмен данными через частные сети
- Межрегиональная синхронизация данных
- Асинхронная развязка
- сбривание пиков и заполнение долин
- Распределенный обмен транзакционными сообщениями
- Анализ больших данных
- Синхронизация распределенного модульного кэша
- Жить в разных местах
- Асинхронное уведомление
- ........
1.4 Модель сообщений MQ
- пиринговый
- рабочая очередь
- Опубликовать/подписаться
- стратегия маршрутизации
- тема с фильтром
- RPC
Маршрут разработки продукта 1,5 MQ
1.6 Выбор сценария применения MQ
1.7 Сценарий MQ Cloud Native
1.8 Pulsar MQ
Pulsar — это межсерверная система обмена сообщениями с мультиарендностью, высокой производительностью и многим другим. Пульсар был первоначально созданYahooразработан, в настоящее времяApacheУправляется Фондом программного обеспечения.
1.8.1 Скопление пульсаров содержит
- Набор Брокеров (сервис публикации-подписки трафика)
- Pulsar Broker — компонент, отвечающий за получение и доставку сообщений
- Букмекер (магазин сообщений)
- Bookie — это сервер Apache BookKeeper, который обеспечивает постоянное хранение сообщений до их окончательного использования.
- Apache ZooKeeper, отвечающий за общую координацию и управление конфигурацией.
1.8.2 Основные особенности Pulsar следующие:
-
Один экземпляр Pulsar изначально поддерживает несколько кластеров, что можетчерез компьютерные комнатыРепликация сообщений выполняется беспрепятственно между кластерами.
-
Чрезвычайно низкая задержка публикации и сквозная задержка.
-
Плавное масштабирование до более чем одногомиллион тем.
-
Поддерживает несколько режимов подписки на тему (эксклюзивная подписка, общая подписка, отказоустойчивая подписка).
-
Предоставляется через Apache BookKeeperМеханизм постоянного хранения сообщенийГарантированная доставка сообщения.
-
по легкому весуserverlessВычислительная структураPulsar FunctionsРеализовать потоковую обработку данных.
-
на основеPulsar Functionsизserverless connectorРамкаPulsar IOУпрощает перемещение данных в Apache Pulsar и из него.
-
Многоуровневое хранилищеДанные могут быть перемещены изГорячее хранилище разгружается в холодное/долгосрочное хранилище(например, S3, GCS).
1.8.3 Собственная архитектура облака пульсара
Pulsar легко масштабируется, имеет низкую задержку, высокую пропускную способность и поддерживает многопользовательскую и межрегиональную репликацию. Самое главное, что архитектура разделения хранения и вычислений Pulsar может прекрасно решить проблему расширения и сжатия Kafka. Производитель Pulsar отправляет сообщение брокеру, а брокер записывает его в хранилище второго уровня BookKeeper через клиент букмекерской конторы.
Функции
-
Горизонтальное расширение: он может легко расширяться до сотен или тысяч узлов.
-
Высокая пропускная способность: проверено в Yahoo!, поддержка публикации-подписки (Pub-Sub) со скоростью миллионов сообщений в секунду.
-
Низкая задержка: Низкая задержка (менее 5 мс) все еще может поддерживаться при больших объемах сообщений.
-
Механизм сохраняемости: механизм сохраняемости Pulsar основан на Apache BookKeeper, который реализует разделение чтения и записи.
-
Разделение чтения-записи: модель ввода-вывода BookKeeper с разделением чтения-записи значительно повышает производительность последовательной записи на диск, относительно дружелюбна к механическим жестким дискам, а количество тем, поддерживаемых одним букмекерским узлом, не ограничено.
2. Обзор системы сообщений
2.1 Отправка продуктов блоками
Когда фрагментация включена (chunkingEnabled=true), если размер сообщения превышает максимально допустимый размер полезной нагрузки публикации, производитель разбивает исходное сообщение на фрагментированные сообщения и публикует их в брокере по отдельности и последовательно вместе с фрагментированными метаданными.
Обрабатывать разрозненные сообщения для одного производителя и одного подписавшегося потребителя.
Как показано на рисунке ниже, когда производитель отправляет в топик пакет сообщений с большими фрагментами и обычных сообщений без фрагментов. Предположим, что сообщение, отправленное производителем, — это M1, а M1 состоит из трех блоков M1-C1, M1-C2 и M1-C3.
- Брокер сохраняет все три блочных сообщения в реестре, которым он управляет, и распределяет их среди потребителей в том же порядке (режим монопольного/аварийного восстановления).
- Потребитель будет кэшировать все сообщения блоков в памяти до тех пор, пока все блоки сообщений не будут получены..Объединить эти сообщения в исходное сообщение M1, отправлено обработчику.
Несколько производителей и один производитель, обрабатывающий блочные сообщения
Как показано ниже, сообщение M1, опубликованное производителем 1, M1 состоит из трех блоков M1-C1, M1-C2 и M1-C3. Сообщение М2, опубликованное производителем 2, М2 состоит из трех блоков М2-С1, М2-С2 и М2-С3.Все фрагменты этих конкретных сообщений расположены в последовательном порядке.,Но это может не быть непрерывным в бухгалтерской книге. Этот путь принесет потребителям определенную нагрузку на память.потому что потребители будутОткрывайте буфер в памяти для каждого большого сообщения, чтобы объединить все заблокированные сообщения в исходное большое сообщение.
2.2 Структура темы
Название темы представляет собой хорошо структурированный URL-адрес.
{persistent(持久)|non-persistent(非持久)}://tenant(租户)/namespace(命令空间)/topic(主题)
-
Стойкие и непостоянные
- Тип сохраняемости темы по умолчанию, необходимо указать непостоянный.
- Для постоянных тем все сообщения будут сохраняться на диск (если брокер не находится в автономном режиме, сообщения будут сохраняться на нескольких дисках).
- Данные для непостоянных тем не будут сохраняться на диск.
- Тип сохраняемости темы по умолчанию, необходимо указать непостоянный.
-
жилец
- Тематические арендаторы в инстансах, которые имеют решающее значение для мультитенантности в Pulsar, распределяются по кластеру.
-
Пространства имен
- Управление связанными темами как группой является базовой единицей управления темами.
- Большинство топиков правильноеПространства именконфигурация .
- У каждого арендатора может быть одно или несколько пространств имен.
2.3 Удержание и истечение сообщения
По умолчанию Bulsar Broker выглядит следующим образом:
- Немедленное удаление потребителя подтвержденовсеИнформация
- В виде невыполненных сообщений,УпорствоВсе неподтвержденные сообщения
Pulsar имеет две функции, которые позволяют вам переопределить поведение по умолчанию, указанное выше.
- ИнформациярезервПозволяет хранить сообщения, подтвержденные потребителем
- ИнформациязрелостьПозволяет установить время жизни (TTL) для сообщений, которые еще не были подтверждены
Все сроки хранения и истечения срока действия сообщений управляются на уровне [пространство имен].
Следующая диаграмма иллюстрирует обе концепции:
-
На картинке выше показано сохранение сообщения.
- правила хранения будутИспользуется для всех тем в пространстве имен, указывая, какие сообщения будут сохранены, даже если они подтверждены. не былправила храненияПерезаписанные сообщения будут удалены.Если нет политики хранения, все подтвержденные сообщения будут удалены
-
Ниже сообщение истекло
- Некоторые сообщения были удалены, даже если они не были подтверждены. Потому что срок их действия истек в соответствии с TTL, установленным в пространстве имен. (Например, TTL составляет 5 минут, через десять минут сообщение не было подтверждено)
2.4 Дедупликация сообщений
Дедупликация сообщений гарантирует, что сообщение может быть обработано только сервером Pulsar.Упорствооднажды. Дедупликация сообщений — это дополнительная функция Pulsar, которая предотвращает ненужное дублирование сообщений и гарантирует, что даже если сообщение используется несколько раз, оно будет сохранено только один раз.
На следующем рисунке показан сценарий включения и отключения дедупликации сообщений:
-
В верхнем сценарии дедупликация сообщений отключена. Производитель публикует в теме сообщение 1. После того, как сообщение достигает брокера, оноУпорствок Бухгалтеру. Затем производитель снова отправляет сообщение 1 (вероятно, из-за некоторой логики повтора), и сообщение принимается и сохраняется в BookKeeper, что означает, что сообщение повторяется.
-
Во втором сценарии производитель отправляет сообщение 1, которое принимается брокером и сохраняется, как и в первом сценарии. Когда производитель снова отправляет сообщение, брокер знает, что сообщение 1 было получено, поэтому он не будет сохранять сообщение 1.
2.4.1 Идемпотентность производителя
Другой доступный метод дедупликации сообщений заключается в обеспечении того, чтобы каждое сообщениегенерируется только один раз. Этот метод обычно называютПродюсер идемпотент. Недостатком этого метода является то, что работа по дедупликации сообщений перекладывается на приложение. В Pulsar дедупликация сообщений включена.brokerПользователю не нужно изменять клиентский код. Вместо этого вы можете сделать это, просто изменив конфигурацию.
Включить дедупликацию на уровне пространства имен
$ bin/pulsar-admin namespaces set-deduplication \
public/default \
--enable # or just -e
Отключить дедупликацию на уровне пространства имен
$ bin/pulsar-admin namespaces set-deduplication \
public/default \
--disable # or just -d
2.5 Задержка доставки сообщений
Функция отложенного сообщения позволяет использовать сообщение через некоторое время, а не сразу после его публикации.
Как показано на рисунке ниже, проиллюстрирован механизм реализации отложенных сообщений:
Брокеры сохраняют сообщения без каких-либо проверок. Когда потребитель потребляет сообщение, если сообщение является задержанным сообщением, сообщение будет добавлено вDelayedDeliveryTrackerсреди. Механизм проверки подписки запустится сDelayedDeliveryTrackerПолучите сообщение о тайм-ауте и доставьте его потребителю.
3. Архитектура системы сообщений
Одиночное скопление пульсаровОн состоит из следующих трех частей:
- Один или несколько брокеров отвечают за обработку и балансировку нагрузки сообщений, отправленных производителями, и отправку этих сообщений потребителям; хранение сообщений в экземплярах BookKeeper (также известных как букмекеры); брокеры полагаются на кластер ZooKeeper для обработки определенных задач и т. д.
- За сообщение отвечает кластер BookKeeper, содержащий одну или несколько букмекерских контор.постоянное хранение.
- Кластер Zookeeper, который выполняет задачи координации между несколькими кластерами Pulsar.
3.1 Скопление пульсаров
На картинке нижеСкопление пульсаров:
3.1.1 Кластер
Кластер Pulsar состоит из N экземпляров Pulsar, включая
- Один или несколько пульсаровbrokers
- Координатор ZooKeeper для настройки и координации на уровне кластера.
- Набор BookKeeper Bookies для сообщенийпостоянное хранение
между кластерамигеорепликацияСинхронизировать сообщения
3.1.2 Хранение метаданных
Пульсар используетZookeeperХранит метаданные, конфигурацию кластера и информацию о координации. Содержит:
- Конфигурация и кворумное хранилище: Храните арендаторов, именованные домены и другие элементы конфигурации, которые должны быть глобально согласованы.
- Каждый кластер имеет свою независимуюZooKeeperСохраняйте внутреннюю конфигурацию кластера и информацию о координации, такую как информация об атрибуции, отчет о загрузке брокера, информация о реестре BookKeeper (это то, от чего зависит сам BookKeeper) и т. д.
3.1.3 постоянное хранилище брокеров
Функция букмекерских контор подходит для сценария применения Pulsar.
- Обеспечивает очень эффективное хранилище для последовательных данных, реплицированных по записи.
- Это обеспечивает согласованность чтения реестров, когда несколько систем зависают.
- Предоставляет возможность равномерного распределения IO среди разных букмекеров.
- Букмекерские конторы предназначены для одновременного размещения тысяч книг чтения и записи.
- Используйте несколько дисковых устройств, одно для ведения журнала, а другое для хранения, чтобы букмекеры могли отделить влияние операций чтения от задержки операций записи.
3.2 Механизм обнаружения сервиса Pulsar
клиентВозможность связи со всем экземпляром Pulsar с использованием одного URL-адреса. Pulsar предоставляет внутренний механизм обнаружения сервисов.
На следующем рисунке показан механизм обнаружения сервиса Pulsar:
4. Конструкция с высокой пропускной способностью
4.1 Тема раздела улучшает высокую пропускную способность
Обычные темы хранятся только у одного брокера,Это ограничивает максимальную пропускную способность темы.Разделенная тема — это тема особого типа, которая обрабатывается несколькими брокерами., что позволяет увеличить пропускную способность.
Тема разделана самом деле черезНижний слой имеет N внутренних тем для реализации, количество N равно количеству разделов.
- При отправке сообщений в секционированные темы каждое сообщение направляется одному из посредников. Pulsar автоматически распределяет разделы между брокерами.
Как показано выше: Тема Topic1 состоит из пяти разделов (от P0 до P4), разделенных на три агента. Поскольку разделов больше, чем количество посредников, есть два посредника для обработки двух разделов. Третий брокер обрабатывает только один (распределение разделов выполняется Pulsar автоматически).
-
Сообщения для этой темы рассылаются двум потребителям.
- режим маршрутизацииРешите, в какую внутреннюю тему следует отправить сообщение
режим отправки Description RoundRobinPartitionЕсли в сообщении не указан ключ, для достижения максимальной пропускной способности сообщения маршрутизируются во все разделы в циклическом режиме. Обратите внимание, что циклический перебор работает не с каждым отдельным сообщением, а с границами пакетов для отложенной обработки, чтобы обеспечить эффективное пакетирование. Если для сообщения указан ключ, сообщение, отправленное в раздел, будет хешировано производителем раздела в соответствии с ключом, а затем распределено по соответствующему разделу. Это режим "по умолчанию". SinglePartitionЕсли в сообщении не указан ключ, производитель случайным образом выберет раздел и отправит все сообщения.Если для сообщения указан ключ, сообщение, отправленное в раздел, будет хешировано производителем раздела в соответствии с ключом, а затем распределено по соответствующему разделу. CustomPartitionС помощью пользовательской маршрутизации сообщений вы можете настроить, как сообщения попадают в определенный раздел. можно использоватьJava clientили достичьMessageRouterинтерфейс для реализации пользовательских шаблонов маршрутизации. -
модель подпискиОпределить, какому потребителю должно быть доставлено сообщение
- Нет никакой разницы между секционированной темой и обычной темой в том, как работает модель подписки.
Примечание:
-
Шаблоны маршрутизации и подписки могут быть сформулированы отдельно. Требование к пропускной способности определяет способ разделения/маршрутизации.
-
Разделение определяет только то, что происходит в процессе обработки и подтверждения сообщений от производителей к потребителям.
Уведомление:
- непостоянное сообщениеДоставка, как правило, быстрее, чем постоянная доставка сообщений, потому чтоБрокер не сохраняет сообщения, который отправляет подтверждение обратно производителю, как только сообщение доставляется подключенному брокеру.
5. Репликация между машинными комнатами
Pulsar поддерживает создание и использование сообщений в разных географических точках.
Например, приложение публикует данные в одном регионе или на одном рынке, но ему необходимо обрабатывать и использовать данные в другом регионе или на другом рынке.
5.1 Как работает репликация между источниками
Процесс межрегиональной репликации Pulsar между разными кластерами:
-
На этой диаграмме всякий раз, когда производители P1, P2 и P3 публикуют сообщения в темах T1 в кластерах Cluster-A, Cluster-B и C, соответственно, эти сообщения немедленно реплицируются между кластерами. После репликации сообщений потребители C1 и C2 могут использовать эти сообщения из своих соответствующих кластеров. Без георепликации потребители C1 и C2 не смогут использовать сообщения, опубликованные производителями P3.
-
Включено для каждого арендатора в Pulsarгеорепликация, междоменная репликация управляется на уровне пространства имен
5.2 Локальное хранение и пересылка
-
Когда сообщение отправляется в тему Pulsar, сообщениесначала будет храниться в локальном кластере,ПотомЗатем он асинхронно перенаправляется на удаленный кластер..
- В нормальных условиях сообщения немедленно реплицируются и одновременно распространяются среди локальных потребителей.
-
Приложения могут создавать производителей и потребителей в любом кластере, а также могут создавать и потреблять сообщения в любом кластере экземпляра Pulsar.
-
Подписки доступны не только для локальных подписок кластера, что позволяетКопировать подпискуЗатем перенос между кластерами.После включения репликации подписки вы можете поддерживать синхронизированное состояние подписки.
-
Темы могут асинхронно реплицироваться в нескольких регионах. В случае сбоя потребители могут повторно использовать сообщения из этой точки сбоя в других кластерах.
Как показано выше:T1предмет вCluster-A,Cluster-Bа такжеCluster-CРепликация между тремя кластерами. Все сообщения, созданные любым из трех кластеров, доставляются всем подпискам в других кластерах. при этих обстоятельствах,C1а такжеC2потребитель получаетP1,P2а такжеP3Все сообщения опубликованы производителем.
5.3 Тематическая междоменная репликация
Междоменная репликация создается на уровне пространства имен, и любая тема, созданная производителем или потребителем в этом пространстве имен, будет реплицироваться во всех кластерах.
5.3.1 Выборочная репликация
Сообщения по умолчанию копируются в настроенное пространство имен.Все кластеры, который может быть получен путемВ сообщении указывается список целевых кластеров, которые необходимо реплицировать., для выборочной репликации данных в целевой кластер
ПостроитьMessageобъект может использоватьsetReplicationClustersметод для указания целевого кластера:
//限制复制集群
List<String> restrictReplicationTo = Arrays.asList(
"us-west",
"us-east"
);
//生产者
Producer producer = client.newProducer()
.topic("some-topic")
.create();
//发送消息
producer.newMessage()
.value("my-payload".getBytes())
.setReplicationClusters(restrictReplicationTo)
.send();
5.4 Подписки на репликацию
Поддержка пульсара
-
Копировать отношения подписки, поэтому статус подписки можно синхронизировать между различными кластерами менее чем за 1 секунду.
-
Контекстная информация по темеТакже возможна асинхронная репликация в нескольких физических регионах.
В случае сбоя после перезапуска потребителя другие кластеры могут начать потребление с точки, в которой потребление не удалось.
5.4.1 Включение подписок репликации
Подписки на репликацию отключены по умолчанию и могут быть запущены при создании потребителя.
//创建消费者
Consumer<String> consumer = client.newConsumer(Schema.STRING)
.topic("my-topic")//主题
.subscriptionName("my-subscription")//订阅名
.replicateSubscriptionState(true)//启用复制订阅
.subscribe();
6. Мультиарендность
Многопользовательские возможности Pulsar предназначены для удовлетворения следующих потребностей:
- Обеспечение соблюдения строгих SLA
- Гарантированная изоляция между разными арендаторами
- Применение квот на использование ресурсов
- Обеспечивает безопасность на уровне арендатора и системы
- Обеспечение малозатратных операций и максимально простого управления
Apache Pulsar удовлетворяет вышеуказанные потребности следующими способами:
- Обеспечьте необходимую безопасность с помощью аутентификации, авторизации и ACL (списков контроля доступа) для каждого арендатора.
- Применяется для каждого арендатораквота хранения.
- Все механизмы изоляции определяются как политики, которые можно изменять на лету, что снижает эксплуатационные расходы и упрощает управление.
6.1 Пространства имен
Пространство имен — это термин логического именования в арендаторе..
- Например, клиент с несколькими приложениями может создать отдельные пространства имен для каждого приложения.
- Пространство имен позволяет программамСоздавайте темы и управляйте ими в иерархическом порядкеТема
my-tenant/app1, - Его пространство имен
app1Для этого приложения соответствующий арендаторmy-tenant, вы можете создать любое количество тем в пространстве имен
- Пространство имен позволяет программамСоздавайте темы и управляйте ими в иерархическом порядкеТема
Pulsar с самого начала разрабатывался для поддержки мультиарендности. следовательноТемы могут быть организованы по двум ресурсам, связанным с мультитенантностью.: активы и пространства имен.
- ресурсыпредставляет системужилец,жилецв собственных активахНастройка нескольких пространств имен, каждыйпространство именможет содержатьлюбое количество тем.
-
пространство именкаждый арендатор в PulsarСамая основная единица управления
- ACL могут быть установлены для пространств имен
- Отрегулируйте настройку количества копий
- Управление мультирегиональной репликацией данных сообщений между кластерами
- Контроль срока действия сообщения
- .....
** Как показано ниже: ** Развертывание Pulsar содержит трех независимых арендаторов.
6.2 Подписка
Подписки — это именованные правила конфигурации, которые определяют, как сообщения доставляются потребителям.
- В Pulsar есть четыре модели подписки:
- эксклюзивный
- общий
- Стихийное бедствие
- обмен ключами
Как показано ниже: отношения модели подписки Pulsar 4
-
Потребители, использующие традиционныеПубликация-подписка на сообщения",Могудля каждого потребителяУкажите конкретное имя подписки, котороеэксклюзивный режим.
-
Потребительское удовлетворение"очередь сообщений"ЭффектУ нескольких потребителей будет одно и то же имя подписки.(Такие какРежим аварийного восстановления, общий режим,режим обмена ключами).
6.2.1 эксклюзивный режим
К подписке может присоединяться только один потребитель. Ошибка возникает, если несколько потребителей подписываются на тему, используя одну и ту же подписку на подписку.
На изображении ниже только потребителю A-0 разрешено использовать сообщения.
6.2.2 Отказоустойчивость
В режиме отработки отказа к одной и той же подписке можно подключить несколько потребителей, основной потребитель потребляет сообщения для каждого раздела в неразделенной теме или разделенной теме, а когда основной потребитель отключается, все (неподтвержденные и последующие) сообщения будут переданы. следующему потребителю в очереди.
На рисунке ниже Потребитель-B-0 является основным Потребителем, а Потребитель-B-1 — следующим Потребителем, который получает сообщения, когда Потребитель-B-0 отключен.
Примечание:
- Тема раздела
- Брокер согласнопотребительский приоритета такжеПоследовательность решения слов имени потребителяСортировать потребителей. Затем темы равномерно распределяются среди потребителей с наивысшим приоритетом.
- Неразделенные темы
- Брокер будет выбирать потребителей на основе порядка, в котором потребители подписываются на неразделенные темы.
6.2.3 Общий
существуетобщийилициклический режим, к одной и той же подписке можно подключить несколько потребителей. сообщение черезмеханизм кругового опросараспределены между различными потребителями,и каждое сообщение будет распространяться только на одного потребителя. Когда потребитель отключается, все сообщения, отправленные ему, но не подтвержденные, будут перепланированы и распределены среди других выживших потребителей.
На изображении ниже Consumer-C-1 и Consumer-C-2 могут подписаться на темы, а Consumer-C-3 и другие пользователи также могут подписаться.
Уведомление:
- Ограничения общего режима, порядок сообщений не гарантируется, и кумулятивные подтверждения не могут использоваться в общем режиме.
6.2.4 Ключ_Общий
существуетрежим обмена ключами, к одной и той же подписке можно подключить несколько потребителей. Сообщения доставляются потребителям распределенным образом, а сообщения с одним и тем же ключом или одним и тем же ключом заказа доставляются только одному потребителю. Независимо от того, сколько раз сообщение доставляется повторно, оно доставляется одному и тому же потребителю. Когда пользователь подключается или отключается, некоторые клавиши заставят пользователя службы изменить сообщение.
Уведомление:
- Ограничение режима обмена ключами, вам необходимо указать ключ или orderingKey для сообщения. Кумулятивное подтверждение нельзя использовать в режиме совместного использования ключей.
допустимыйbroker.configОтключить режим Key_Shared в .
6.3 Механизм Pulsar для реализации мультитенантности
** Основными средствами являются: ** Ограничение, устанавливающее объем прав для различных арендаторов, таких как: аутентификация и авторизация для достижения изоляции безопасности, посредством управления потоком, корректировки текущего ограничения и квоты хранилища для достижения изоляции общих физических ресурсов, и с помощью политик размещения для достижения изоляции физических ресурсов
безопасность
-
Авторизация управляется на уровне актива, а разрешения — на уровне пространства имен, то есть внутри актива.
-
Аутентификация и авторизация обеспечивают изоляцию между арендаторами, и арендаторы не могут получить доступ к разделам или выполнять операции, на которые у них нет разрешения. Реализуется через подключаемый механизм аутентификации и авторизации.
изолировать
- Изоляция соответствует требованиям безопасности
- Мультитенантные приложения также должны соответствовать соглашениям об уровне обслуживания, для которых Pulsar также изолирует их для обеспечения надежности и производительности.
-
мягкая изоляция
- Например:дисковая квота,управление потоком,Регулировка ограничения тока.
-
жесткая изоляция
- Например: изолируйте арендатора внутри подсети брокера, который предоставляет услуги, и используйте букмекерскую контору BookKeeper для достижения изоляции хранилища.
-
мягкая изоляция
7. Иерархическое хранилище
Архитектура Pulsar, ориентированная на сегменты, позволяет увеличивать объем невыполненных работ по темам без каких-либо ограничений. Однако со временем это может стать дорогостоящим, и один из способов сократить потребление — использовать многоуровневое хранилище (Tiered Storage) Благодаря многоуровневому хранилищу старые сообщения в невыполненной работе могут быть перемещены из BookKeeper в более дешевое хранилище, и клиенты по-прежнему будут иметь доступ к невыполненной работе без дальнейших проблем.По умолчанию данные, записываемые в BookKeeper, реплицируются тремя копиями физических машин. Однако после того, как BookKeep запечатывает сегмент, он становится неизменяемым и может быть реплицирован в долгосрочное хранилище. Долгосрочное хранение может достичь цели экономии затрат на хранение. используяReed-Solomon error correctionЭто также уменьшает количество физических резервных копий.
В настоящее время Pulsar поддерживает S3, Google Cloud Storage (GCS) и файловые системы для долгосрочного хранения.long term storeДанные могут быть выгружены в долгосрочное хранилище через REST API или интерфейс командной строки. Пользователи передают общий объем данных тем, которые они хотят сохранить в BookKeeper, и Broker скопирует все невыполненные данные в долгосрочное хранилище. Исходные данные в BookKeeper будут удалены (задержка настраивается, по умолчанию 4 часа).
твойСтавь лайк и следуйЭто постоянная движущая сила структуры Solomon_Xiaogedan.
Исторические Горячие Статьи
-
🔥Я не могу понять этот алгоритм! Как отображаются 9 изображений
-
🔥SpringBoot Mastery — Аннотации пользовательских условий (серия 1)
-
🔥Высокопроизводительный шлюз изначально был спроектирован так
-
🔥ОТДЫХАТЬ Я не могу понять это после прочтения, вы играете со мной!
-
🔥Как распределенная транзакция XID связывает все микросервисы
-
🔥Методические шаги по оптимизации производительности сайтов с миллиардным трафиком
-
🔥Microservice Nacos реализует ближайший доступ через CMDB для повышения производительности
-
🔥Микросервисная архитектура Принцип реализации регистрации и обнаружения DNS-сервиса