Взаимодействие АБС Б2 с клиент-банком через платформу Apache Kafka

17 сент. 2020

[Взаимодействие АБС Б2 с клиент-банком через платформу Apache Kafka]

Использование Apache Kafka для взаимодействия АБС Б2 с новым-клиент банком – одно из значимых событий в череде реализуемых проектов компании CS. Почему эта новость достойна внимания, в чем ее важность? Зачем вообще это нужно банкам, какова текущая реализация и перспективы?

Для начала – пару слов о Kafka. Нет, не о всемирно известном писателе.

Apache Kafka – распределенная потоковая (стриминговая) платформа, этакий (определение из Википедии) программный брокер сообщений. «Брокер», то есть «посредник» – ключевое слово для понимания процесса. Грубо говоря, Kafka позволяет упорядочить множество (миллион плюс) сообщений (транзакций), выстраивая их в правильные очереди и оперативно обрабатывая. Основная функция Kafka – это управление параллельными потоками данных в реальном режиме времени с обеспечением надежной непрерывной передачи информации между системами и/или приложениями.

То есть если большие разветвленные системы генерируют огромное количество событий (транзакции, логи, данные мониторинга и доступа к ресурсам и прочее), то Kafka собирает соответствующие данные у издателей (producer), помещает их в свое распределенное хранилище сообразно категориям, или темам (topic), и раздает их подписчикам (consumer) согласно так называемым оформленным подпискам. Чем это отличается от других решений, предполагающих обработку очереди сообщений от издателя к подписчику? В чем здесь новаторство и прорыв?

Преимущества

Преимущества очереди сообщений Kafka:

  • Кластеризация (горизонтальная масштабируемость). Kafka работает как кластер на одном или нескольких серверах, которые могут охватывать разные центры обработки данных. Даже один Kafka-брокер – это кластер, и для того чтобы добавить второй, не требуется никаких особых настроек. При добавлении новой машины исключены простои, притом количество машин, добавляемых в кластер, не ограничивается.
  • Производительность и доступность. Пропускная способность Kafka – до миллиона сообщений в секунду. При этом обслуживание одной темы несколькими брокерами, дробление очередей на части и распределение их по кластеру позволяет существенно увеличить пропускную способность.
  • Хранение сообщений. Kafka хранит сообщения столько, сколько нужно  (по-умолчанию – неделю).Таким образом, подписываясь на тему в Kafka, можно получить и вчерашние, и позавчерашние сообщения и… В то время как другие брокеры сообщений удаляют сообщения после успешной доставки. Кроме того, Kafka автоматически сохраняет сообщения на диск – для этого не требуется отдельных настроек.
  • Журнал транзакций (коммитов). Для каждой темы (топика) кластер Kafka ведет журнал, который разбивается на разделы (partition). Каждый журнал представляет собой неизменную последовательность записей с идентификационным номером (в эту структуру можно только добавлять записи, удалять или изменять их невозможно). Строгая упорядоченная структура – сердцевина Kafka. Разделы журнала позволяют ему масштабироваться за пределы размера, который способен вместить один сервер.
Мы говорим «кластеризация», подразумеваем – надежность, безопасность и отказоустойчивость.
Кластер Kafka из нескольких узлов остается работоспособным, даже если пара узлов выйдет из строя.

Общая схема передачи информации с помощью Apache Kafka приведена на рисунке 1.

 

 

 

 

 

 

 

Рисунок 1. Передача информации с помощью Apache Kafka

А что у нас? Поставленная задача и текущая реализация

Итак, какую задачу мы решаем? Взаимодействие АБС Б2 с новым клиент-банком для передачи онлайн-сообщений о кредитах и депозитах физических лиц (из АБС Б2 клиент-банку передается информация, например, о транзакциях, состоянии счета и о других изменяющихся в динамике параметрах кредитных и депозитных сделок). Зачем нам для этого Kafka – уже понятно. Теперь о том, как именно мы используем возможности Kafka в работе банковской инфраструктуры.

Общий алгоритм передачи сообщений через потоковую платформу Kafka:

  • Генерация и отправка исходящих сообщений.

Для генерации исходящих сообщений реализован новый механизм, который при определенных действиях в АБС (создание/изменение объекта мониторинга – контрагента, сделки, счета и т.д.) генерирует соответствующие события и отправляет их в Oracle Advanced Queue. На эти события могут подписываться все, кому они интересны. Одним из таких подписчиков является подсистема взаимодействия через Kafka с клиент-банком, которая читает события из Oracle Advanced Queue и формирует сообщения. Для передачи сообщений используется приложение Java, которое получает сформированное сообщение из указанной подсистемы и записывает его в соответствующий топик Kafka.  Клиент-банк не отвечает на исходящие сообщения.

  • Обработка и прием входящих сообщений.

На стороне клиент-банка формируются сообщения, которые отправляются в АБС, – входящие сообщения. При этом они не проходят через Oracle Advanced Queue (см. предыдущий пункт). Для передачи входящих сообщений используется Java-приложение, которое читает сообщения из топиков Kafka и передает в АБС для обработки. АБС обрабатывает входящее сообщение и отправляет результат обработки в виде исходящего сообщения (с помощью описанного выше механизма отправки исходящих сообщений).

Кафка явно что-то знал…

«Истинный путь идет по канату, который натянут не высоко, а над самой землей».
Франц Кафка

Как мы видим, использование платформы Kafka для интеграции между различными банковскими системами позволяет упорядочить и существенно ускорить передачу информации, а также обезопасить банковскую инфраструктуру от технических форс-мажоров.

Подпишитесь на рассылку