Каталог решений - 1c + kafka.apache

1c + kafka.apache

1c + kafka.apache

В наличии

Пример построения микросервисов с использованием apache kafka. Данная статья будет полезна интеграторам, программистам. Версия и релиз технологической платформы не имеет значения.

Категория:

Описание

Пример построения микросервисов с использованием apache kafka.

Задача:

Построить событийную архитектуру между приложениями(микросервисы)(не только 1с).

Общая логика решения задачи():

1. Приложение А генерирует событие                                                         

2. Другое приложение Б(В, Г..) "слушает"  кафка (подписывается на событие)(если коротко)

3. Приложение А отправляет данные кафка (Поставщик)

4. кафка отправляет данные всем кто подписан на это событие (Потребитель)

5. Приложение Б(В, Г..)  получает данные

Технологии:

1. 1с (поставщик,  потребитель, tcp клиент)

2.  Разнородный бэкенд (python,  и тд) (поставщик,  потребитель)

3. с++ 1с вк native (транспорт для tcp клиента 1с)

4. apache kafka (шина данных) https://kafka.apache.org

5. flask (python micro web сервер) http://flask.pocoo.org

6. tcp сервер (python)

7. KafkaConsumer, KafkaProducer  (python) https://github.com/dpkp/kafka-python

Общая принцип работы(модули):

1с(1):

При запуске 1с стартует tcp клиент (вк native)(3) .Устанавливает соединение с tcp сервером(6) (передавая ид пользователя из 1с). Подписывается на событие вк native. При наступления события уходит в контекст 1с через ОбработкаВнешнегоСобытия для последующей обработки. Для генерации событий выполняет гет, пост запросы на  веб сервер(5).

tcp сервер(6):

Хеш таблица открытых сокетов(активных соединений) и ид пользователя. Подписывается на события шины данных для отправки клиенту 1с. При наступлении событий отправляет данные в сокет(клиенту 1с). Генерирует события при авторизации(установка сокета), выхода(разрыв, закрытие сокета) в шину данных.

web сервер(5):

Обрабатывает запросы со стороны 1с(прокси для кафка) и отправляет в шину данных. Также подписывается на события сторонних приложений требующих отправку данных для 1с(изменился статус звонка asterisk, прилетел тригер для обновления формы, перегнать что то с &НаСервере на &НаКлиенте , и тд).

Шина данных(4):

Управляет оркестром приложений(упорядоченная очередь). При наступлении события маршутизирует подписчикам, если подсписчиков нет, хранит у себя, доставит потом когда появятся.

Разнородный бэкенд(2):

Подписывается, генерирует события в шину данных.(например web app time line(журнал записи), asterisk ami client(автообзвон, фонер), из предыдущих статей)

Шаг 1. tcp сервер 

 

has been added to your cart:
Оформление заказа