Роль потребителя кафки, отдельного сервиса или компонента Django?

Я разрабатываю аналитику веб-журнала.

И я нашел архитектора с Django (Back-end & Front-end) + kafka + spark.

Я также нашел ту же систему по этой ссылке: http://thevivekpandey.github.io/posts/2017-09-19-high-velocity-data-ingestion.html с приведенным ниже архитектором

введите здесь описание изображения

Но меня смущает роль кафки-потребителя. Это будет служба, независимая от Django, верно?

Итак, если я хочу отображать данные в реальном времени на графике внешнего интерфейса, как я подключаюсь к Django.

Будет слишком нелепо, если я размещу и kafka-consumer, и производителя в Django. Запрос от sdk поступает в Django путем перехода в топик kafa (производитель) и возвращает Django (потребитель) для процесса. Почему мы не идем прямо. Выглядит проще и лучше.

Пожалуйста, помогите мне понять роль потребителя кафки, где она должна быть? и как подключиться к моему интерфейсу.

Спасибо и с наилучшими пожеланиями,

Джеймс


person Jame H    schedule 28.11.2017    source источник


Ответы (1)


В статье упоминается вариант использования без Kafka:

Мы видели, что во время пиковой нагрузки прием данных не работал должным образом: подключение к MongoDB занимало слишком много времени, а время ожидания запросов истекало. Это приводило к потере данных.

Таким образом, основная цель введения Kafka и Kafka Consumer — избежать слишком большой нагрузки на уровень БД и изящно справляться с ней с промежуточным уровнем обмена сообщениями. Честно говоря, в данном случае можно использовать любую очередь сообщений, не только Kafka.

Kafka Consumer может быть частью веб-уровня. Это было бы не оптимально, потому что вам нужно разделение задач (что делает систему более надежной в случае сбоев) и возможность независимого масштабирования.

Лучше реализовать Kafka Consumer как отдельную службу, если проблемы, упомянутые выше, действительно имеют значение (масштабируемость и надежность) и вам легко это сделать в оперативном режиме (поскольку вам нужно развернуть, отслеживать и т. д. новую службу прямо сейчас). В конце концов, это классическая дилемма между монолитом и микросервисами.

person sap1ens    schedule 28.11.2017
comment
Большое спасибо. В случае отдельного потребителя кафки, если я использую python, как я могу создать службу для потребителя кафки (которая просто слушает, получает данные и помещает в базу данных). И могу ли я использовать pyspark для потоковой передачи в этом случае. Пожалуйста, помогите мне, я новичок в микросервисах, я использовал докер для создания kafka, но я не знаю, как создать сервис как kafka-consumer. - person Jame H; 29.11.2017
comment
Я предлагаю начать с базового потребителя, используя github.com/confluentinc/confluent-kafka-python. Вы также можете взглянуть на Kafka Connect (docs.confluent.io/current/connect /intro.html) - person sap1ens; 29.11.2017
comment
PyKafka github.com/parsely/pykafka будет проще интегрировать с Django, поскольку у него более питонический API. и более четкая документация. - person Emmett Butler; 28.02.2018
comment
Я знаю, что это 2019 год, но, поскольку никто не упомянул об этом, вы можете рассмотреть возможность использования PushPin, который действует как потребитель Kafka, который вы связываете с Server-Sent-Events (SSE), чтобы вы могли передавать обновления на свой веб-клиент. otago.ac.nz/its/forms/otago604826.html - person Cameron Kerr; 08.06.2019