Обработка потока GoKa для Kafka


В Go появилась новая библиотека для написания приложений с распределенной потоковой обработкой, поддерживающих их данными в Kafka. GoKa стремится упростить создание высокомасштабируемых и высокодоступных микросервисов.

Kafka – это проект Apache, который можно использовать для создания конвейеров данных в реальном времени и потоковых приложений. Он горизонтально масштабируемый, отказоустойчивый, быстрый и работает в тысячах компаний. Goka использует Kafka для передачи сообщений, отказоустойчивого хранилища состояний и разделения рабочей нагрузки.

Goka связывает таблицу состояний с группами потребителей Kafka и сохраняет их в Kafka. Таблица группы Гока представляет состояние группы. Микрослужба изменяет и обслуживает содержимое таблицы, используя два дополнительных типа объектов: процессоры и представления.

Процессор – это набор функций обратного вызова, которые изменяют групповую таблицу при поступлении сообщений. Процессоры также могут отправлять сообщения в другие темы. Goka распределяет разделы входных тем по всем экземплярам процессоров в группе процессоров, чтобы обеспечить масштабирование и отказоустойчивость. Если экземпляр процессора выходит из строя, его разделы и состояние переназначаются оставшимся работоспособным членам группы процессоров.

Представление – это постоянный кэш групповой таблицы, который подписывается на обновления всех разделов групповой таблицы и поддерживает синхронизацию локального дискового хранилища с темой группы. Представления предоставляют доступ только для чтения к групповым таблицам и могут использоваться для предоставления внешних сервисов.

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

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

Goka находится на GitHub с примерами и хорошей документацией.


Добавить комментарий