Нужна помощь в построении логики для приложения kafka streams - PullRequest
0 голосов
/ 28 сентября 2019

Я новичок в kafka, мне нужна помощь в разработке подхода для работы с конкретным сценарием.

У меня есть две темы kafka, ПОЛЬЗОВАТЕЛИ и СОТРУДНИКИ.

USERS 
    key: userId
    value: [
        login: parkash,
        firstname: parkash,
        employee: 1
    ]


and 

EMPLOYEES. 
    key: employeeId
    value: [
        firstname: parkash
        lastname: kumar
    ]

У меня есть методкоторый исключает employee_id в качестве параметра и возвращает данные соответственно.

Я вхожу в приложение через идентификатор входа, указанный в темах USERS.Я хочу получить данные для зарегистрированного пользователя, но мой метод принимает employee_id в качестве параметра.Поэтому из-за этого мне нужно сначала получить идентификатор сотрудника из темы USERS, но здесь login_id также не является ключом в теме USERS, а является частью значения.Итак, как мне пойти на это.

Должен ли я сначала получить все данные из раздела USERS в магазине, затем выполнить итерацию по всему магазину, проверить значение входа в систему с предоставленным идентификатором входа и вернуть идентификатор сотрудника для объекта.Затем я должен найти идентификатор этого сотрудника в этой теме РАБОТНИКА.Правильно ли я здесь, если да, как лучше это реализовать?Может ли такой подход привести к проблемам с производительностью, так как я повторяюсь по всему магазину.

Я просто прошу подход (не любую реализацию), чтобы лучше понять потоки кафки, такие как создание магазина, манипулирование потоками кафки.

1 Ответ

0 голосов
/ 28 сентября 2019

Вам необходимо преобразовать тему USER, создав новую тему с нужным ключом раздела.В вашем случае employee id.Это необходимо для обеспечения того, чтобы ваши потребители / потоковые процессоры обращались к соответствующим сообщениям в случае, если у вас есть более одного раздела и более одного потребителя в группе потребителей [0].Если у вас есть две темы с одним и тем же ключом раздела, вы можете «объединить» обе темы с помощью объединения, например [1] [2].В вашем случае я бы предположил, что вас больше заинтересует KTable [3].

[0] Темы, разделы и ключи

[1] https://docs.confluent.io/current/streams/index.html

[2] https://docs.confluent.io/current/streams/concepts.html#joins

[3] https://docs.confluent.io/current/streams/concepts.html#ktable

...