У меня есть приложение, которое потребляет в виде потока все действия пользователя, и я хочу, например, подсчитать, сколько раз он видел домашнюю страницу и так далее и тому подобное. Я материализовал count в постоянное хранилище ключей и значений. Я хочу иметь доступ из другого приложения к этому хранилищу ключей и значений и получать данные из этого хранилища, потому что я хочу поделиться этой статистикой через конечную точку отдыха. Является ли это возможным?
I want to have access from a different application to this key-value store and get data from this store because I want to share these statistics via rest endpoint. Is it possible?
Да, это возможно. Эта функция называется интерактивные запросы в Kafka Streams. Существует также демонстрационное приложение под названием Кафка Музыка, которое вы можете использовать в качестве отправной точки.
Ваше первое приложение использует Kafka Streams для непрерывного вычисления состояния, и оно также должно предоставлять что-то вроде REST/Thrift/... API, которое ваше второе приложение может запрашивать. Ваше второе приложение может быть любым: это может быть приложение Python, приложение JavaScript, даже инструмент командной строки, такой как curl
— это не обязательно должно быть еще одно приложение Kafka Streams.
Вы должны вручную реализовать «API» вашего первого приложения с помощью любых инструментов REST и т. д., которые вы предпочитаете использовать, точно так же, как и для любого другого приложения Java, которому необходимо реализовать REST API. Kafka Streams предоставляет с помощью вышеупомянутой функциональности интерактивные запросы все необходимые методы для доступа и предоставления данных в ваших хранилищах состояния Kafka Streams через ваш DIY API. (Kafka Streams намеренно не предоставляет «REST API» или «gRPC API» и т. д. сам по себе, поскольку потребности разработчиков часто сильно различаются.)