Резюме
В этой статье я начну с того, зачем нужны очереди сообщений, приведу два небольших примера и расскажу вам о некоторых текущих сценариях использования очередей сообщений.
Например, разделение очередей сообщений в сложных системах, таких как очереди сообщений и сцена с высоким уровнем одновременного использования. Если вы позволите потоку стать более мягким.
Затем я познакомлю вас с некоторыми важными терминами Kafka, такими как темы, брокеры, разделы и т. д.
Обратите внимание, что Kafka — это не только промежуточное ПО для сообщений, но и отличная платформа для обработки распределенных потоков, но в этой статье основное внимание уделяется применению и принципу Kafka в очередях сообщений.
1. Сценарии использования
Прежде чем мы узнаем о Kafka, давайте подумаем, где нам нужно использовать промежуточное программное обеспечение для сообщений.
Затем я приведу два небольших примера, чтобы кратко рассказать о сценариях использования промежуточного программного обеспечения сообщений.
1.1 Развязка
Например, в одной системе нам нужно вызывать много других систем, конечно, мы можем вызывать другие системы одну за другой в этой системе. Но возникает вопрос: если другие системы, в которые нам нужно позвонить, изменились, например, добавились новые системы или некоторые системы больше не предоставляют услуги, что нам делать? Изменить код системного вызова и снова выйти в интернет?
Таковы особенно неприятно, но также так, чтобы соединить эту систему и другие системы полностью вместе.
Таким образом, мы можем инкапсулировать наш «служебный вызов» в сообщение и отправить его промежуточному программному обеспечению сообщений.
Для других систем вам нужно только перейти к этому промежуточному программному обеспечению сообщений, чтобы получить нужные вам сообщения, а затем обработать их.
Кроме того, для пользователя нет необходимости ждать столь долгое время, пока система кидает сообщение в мидлвар сообщения, оно может вернуться, что обеспечивает более высокую скорость отклика.
Это то, что мы называем развязкой: одна система просто отправляет данные в промежуточное ПО, а другая система просто получает данные от промежуточного ПО и обрабатывает их.
1.2 Снятие пиков и заполнение впадин
Как только он открыл рот, он понял, что Лао Гао был одновременно.
Нам знаком этот термин, но если вы будете искать по таким ключевым словам, как «высокий параллелизм» и «seckill», вы обязательно найдете такие результаты.
Ключ к наполненной пиками долине в том, что течение становится более пологим.
Возьмем в качестве примера «seckill».
Таким образом, для этого торгового центра вышестоящей услугой этой деятельности «seckill» является размещение заказа. И эта восходящая служба должна вызывать множество нижестоящих служб, таких как служба инвентаризации для создания запасов, служба заказов для создания заказов, платежная служба, а платежной службе может потребоваться вызвать сторонний платежный интерфейс и так далее. Проще говоря, это скорость обработки восходящего сервиса.намного больше, чемСкорость обработки нижестоящего сервиса.
В это время, если мы не наложим никаких ограничений на вышестоящие сервисы, а все запросы будут идти напрямую к нижестоящим сервисам, может зависнуть вся система.
Следовательно, мы можем использовать промежуточное программное обеспечение для сообщений, чтобы «срезать вершины и заполнять долины».
Вышестоящей службе нужно только передать необходимую информацию, такую как «определенный пользователь приобрел определенный продукт в определенное время», в промежуточное программное обеспечение сообщений, а затем нижестоящая служба извлекает информацию из промежуточного программного обеспечения сообщений на своей собственной скорости, а затем Потребление . Таким образом, обработка всей системы может быть упорядоченной.
Здесь я просто привел несколько небольших примеров и опустил многие детали. Реальный бизнес не так прост. Есть еще много вещей, которые нужно учитывать. Например, когда мы помещаем сообщение в промежуточное программное обеспечение сообщений, когда оно может быть использовано? Ну, буду ли я все время голоден, нужно ли мне снова отправить сообщение в это время?
Другой пример, если я отправлю сообщение еще раз, можно ли повторить потребление?
Или возможно ли, что информация, которую мы отправили, потеряна?
На самом деле таких проблем еще много, будем смотреть свысока на эти проблемы.
2. Концепция
После использования очереди сообщений я познакомлю вас с несколькими именами нарицательными в Kafka.
Но есть одно замечание, хотя в этой статье и даже в этом цикле статей я, возможно, говорю оочередь сообщенийЭта концепция, но Кафка не простосистема обработки сообщений, он все равно отличныйПлатформа распределенной потоковой обработки.
Просто возможности и знания автора ограничены, поэтому мы можем только сначала изучитьочередь сообщенийсодержание в этом отношении.
2.1 Производители и потребители
Это легко понять, производитель — это объект, который отправляет сообщение.
Производитель отвечает за отправку сообщения или записи, которые необходимо обработать, в очередь сообщений, а все остальное не имеет к нему никакого отношения.
Потребители — это объекты для обработки сообщений.
Потребители несут ответственность за извлечение ожидающих сообщений из очереди сообщений и их последующую обработку.
2.2 Темы
В приведенном выше содержании я говорил только о «забрасывании сообщений в очередь сообщений» и «вытягивании сообщений из очереди сообщений», поэтому теперь нам нужно решить проблему:
-
Как я узнаю, куда я должен отправить сообщение/где я должен его получить?
-
Если есть разные типы потребителей, не будут ли сообщения перепутаны?
На самом деле, если будет только один вид новостей, то такой проблемы не будет. Но если есть разные типы сообщений, например, у меня есть сообщения о заказах и сообщения журнала, будет ли ситуация, когда служба заказов получит сообщения журнала? Должен ли я настраивать несколько Kafka?
Так что есть тема у Кафки.
Прежде чем объяснять принцип, вы можете понять, что топик соответствует очереди. Когда мы отправляем сообщение, мы выбираем соответствующую тему и отправляем сообщение в эту тему.
Производитель отправляет сообщение в заданную тему, а потребитель отвечает за извлечение сообщения из определенной темы и последующую его обработку.
Таким образом, наша очередь сообщений может обрабатывать более широкий спектр сообщений.
2.3 Broker
Выше мы упомянули производителей и потребителей, их называют клиентами Kafka.
Поскольку есть клиент, должен быть и сервер, о чем мы упоминали в этом разделе.Broker.
Брокер эквивалентен серверной части Kafka. Вы можете понять это как место, где существует очередь.Производитель отправляет сообщение брокеру, а потребитель получает сообщение от брокера.
2.4 Разделение
Как мы упоминали выше, в Broker есть несколько тем, производители отправляют информацию в тему в Broker, а потребители извлекают информацию из темы в Broker.
Тогда мы легко обнаружим, что эта очередь сообщений имеет узкое место в производительности.
Здесь скорость ввода-вывода компьютера, на котором находится брокер, может привести к тому, что эта очередь сообщений будет иметь узкое место в производительности.
Предполагая, что на нашем Брокере много топиков, в это время, если скорости ввода-вывода не хватает, производитель может не успеть отправить сообщение брокеру вовремя, а потребитель может не вытащить сообщение от брокера вовремя.
Итак, существует понятие раздела, означающее, что мы можем разделить тему на множество частей. Однако, когда производитель отправляет сообщение в топик, он не отправляет сообщение в топик.Все разделы, но будет отправлено в эту темуопределенный разделВниз.
Иными словами, разделение здесь — это понятие расширения, а не понятие копии. Поэтому разделы здесь также называются разделами данных и осколками данных.
Кроме того, эти разделы можно развернуть на разных машинах, а производительность повышается в несколько раз.
2.5 Replica
Концепция «высокой доступности» также очень важна в Интернете.
Обычно доступность достигается за счет избыточности.
Выше мы упомянули концепцию разделов, с помощью которых тема делится на несколько частей для расширения.
Но если зависает определенный раздел, не много ли информации по этой теме теряется?
Поэтому естьReplicaэто понятие. Проще говоря, это резервное копирование нескольких копий каждого раздела, то есть реплика — это концепция копии. Вообще говоря, у понятной нам реплики есть один лидер и несколько фолловеров, и вообще лидер отвечает за запись, а фолловеры — за чтение. Однако в Kafka это не то же самое, что в MySQL: в Kafka ведомый используется только для избыточности, а все операции чтения и записи по-прежнему происходят на ведущем.
напиши в конце
Прежде всего, спасибо, что вы здесь.
В статьях из серии «Введение в Kafka» я стремился сделать сложные концепции максимально простыми и понятными, как в статьях из серии MySQL. Кроме того, я также немного углублюсь в принцип и постараюсь узнать, как он реализован и почему он максимально разработан при его использовании.
В течение этого периода, если я что-то не понимаю или объяснение неправильное, пожалуйста, оставьте сообщение, чтобы исправить меня!
Еще раз спасибо за то, что вы здесь!
PS: Если у вас есть другие вопросы, вы также можете найти меня на официальном аккаунте, добро пожаловать и поиграйте со мной~