Передивився доки, бо давно то вже все було (і exactly once) схоже завезли з тих часів.

Так, можна досягти, що буде прочитане лише раз. Але Кафку тре буде відповідно приготувати.


Конс'юмера повинні бути в одній групі і слухати один торік. Також треба буде налаштувати партиції в топіку т.к. в Кафці одна партиція до одного конс'юмера. Якщо конс'юмер відвалиться, або з'являється новий, тоді відбувається реблансування задля уникнення дублікатів.

- https://www.confluent.io/resources/ebook/kafka-the-definitive-guide/ - дуже корисна книжка від чуваків, що на Кафці гроші заробляють
- https://medium.com/@aviksaha2007/exactly-once-processing-with-apache-kafka-4ae243ced107 - дядько пише куди дивитися в приготуванні Кафки для exactly once 

Сподіваюсь допоможе.

чт, 12 вер. 2024 р., 18:53 користувач Volodymyr Litovka <doka@funlab.cc> пише:
Привіт,

вірно я розумію, що Кафка (згаданим offset'ом) все ж таки може робити, що будь-яке повідомлення буде прочитано тільки один раз?

Наскільки я зрозумів з твоїх слов - офсет оновлюється автоматично й щоб повернутись до старого повідомлення, треба явно відмотати офсет назад.

Дякую.

On 9/12/24 18:46, Illia Lavrovskyi wrote:
Вітаю.

Підтверджую неадекватну поведінку кластеру кроля під суттєвим навантаженням.

Нажаль про альтернативу йому, щоб архітектурно була 1-до-1 я не знаю.

В якості черги є Kafka - https://kafka.apache.org/ (також є PaaS від Confluent), є Redpanda - https://github.com/redpanda-data/redpanda/, є клаунді рішення.
Kafka - це one love.
Redpanda виглядає дуже цікаво, але особисто так і не довелося з нею пожити.

Архітектурно у RabbitMQ бачу одну гарну річ - він може гарантувати шо певну повідомленні буде прочитане лише раз, не зважаючи скільки конс'юмерів слухають чергу.
З Kafka доведеться робити яку логіку саме не боці конс'юмерів (якщо їх більше одного).

Але Kafka дурнюща в сенсі швидкості і пропускної здатності. І вона по суті є логом повідомлення. Це означає, що якщо певне повідомлення все ще в лозі, але вже давно було опрацьоване - до нього можна легко повернутися (offset) і переопрацювати, чи просто на нього подивитися. В купі разів це було дуже при нагоді, коли щось не спрацювало, ти виправляєш баг, а потім просто скидаєш offset до потрібного і все пробігає вже як треба.


On Thu, Sep 12, 2024 at 6:08 PM Volodymyr Litovka via UANOG <uanog@uanog.one> wrote:
Я не захваті від ідеї використовувати БД як queue.

Одна з причин - у черги операція "взяв в обробоку" атомарна, тобто як тільки воркер забрав повідомлення, воно зникає й, відповідно, не попаде нікому іншому в обробку. У випадку з БД це процедура з щонайменше з двох кроків - "взяв в обробку, видалив з БД", тобто одне повідомлення може бути взято в обробку одразу декількома воркерами.

On 9/12/24 17:44, Mykola Ulianytskyi wrote:
Привіт

>  - якщо хтось юзає ребіт під навантаженням - що думає?

Дико тормозить при великої кількості (десятки тисяч) queues / streams / channels да так, що API лежить повністю.
Vertical scaling не вирішив проблему (32 ядра, 64GB RAM).

Переписали мікросервіс на MongoDB InMemory (Percona Memory Engine) та забули про всі проблеми з перфомансом.

--
Best regards,
Mykola


On Thu, Sep 12, 2024 at 6:30 PM Volodymyr Litovka via UANOG <uanog@uanog.one> wrote:
Привіт,

порадьте менеджер черг для високонавантажених систем, окрім RabbitMQ.
Про цього чувака я знаю, але колеги з розробки кажуть, що він косячить
під високим навантаженням. Я не можу ані підтвердити, ані спростувати це
твердження - я його користував тіко в комплекті з опенстеком, де у мене
не було ані навантаження, ані проблем.

Тому, насправді, питання два:
- порадьте менеджер черг для високонавантажених систем, окрім RabbitMQ
- якщо хтось юзає ребіт під навантаженням - що думає?

Дякую.

--
Volodymyr Litovka
   "Vision without Execution is Hallucination." -- Thomas Edison

_______________________________________________
UANOG mailing list -- uanog@uanog.one
To unsubscribe send an email to uanog-leave@uanog.one

-- 
Volodymyr Litovka
  "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________
UANOG mailing list -- uanog@uanog.one
To unsubscribe send an email to uanog-leave@uanog.one


--
Illia Lavrovskyi
e-mail: blackprowler@gmail.com

-- 
Volodymyr Litovka
  "Vision without Execution is Hallucination." -- Thomas Edison