Size: a a a

Архитектура ИТ-решений

2019 August 20

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Сейчас с моими нагрузками справляется и rmq. Который дает мне внятную семантику "обработал". А не считал.
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
По ядру на партицию. С корутинами не работал. Но сомневаюсь, что они дают мне гарантии - позже считанное сообщение будет обработано строго позже, чем ранее считанное.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Ну, значит нагрузки низкие, можно и по одной записи читать и даже fsync ждать. Впрочем, на rmq ты гарантий не получишь вообще
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Leonid Vygovskiy
По ядру на партицию. С корутинами не работал. Но сомневаюсь, что они дают мне гарантии - позже считанное сообщение будет обработано строго позже, чем ранее считанное.
Если тебе важен порядок, то ты не можешь обработать сообщение в пачке, если раньше был сбой. И тут тебе никакая очередь не поможет, включая rmq.
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Phil Delgyado
Ну, а какие варианты для лог-бэйзед очереди. На пульсаре тоже самое будет
Насколько я читал, pulsar предоставляет семантику "обработано". А это ключевое, чего мне не хватает в кафке
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Нет в rmq гарантий обработки. И нигде нет и не может быть )
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Phil Delgyado
Если тебе важен порядок, то ты не можешь обработать сообщение в пачке, если раньше был сбой. И тут тебе никакая очередь не поможет, включая rmq.
Мне важен порядок комита офсета
источник

PD

Phil Delgyado in Архитектура ИТ-решений
В смысле 'порядок коммита'?
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Ну чтобы офсет был строго закомичен только после хорошей обработке
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Порядок обработки при этом важен?
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Я пишу про семантику "обработано". Когда я подтверждаю ack'ом обработку одного сообщения. В кафке семантика коммита офсета - прочитано. Потому как изначально она была спроектирована для использования с данными, допускающими потерю
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Phil Delgyado
Порядок обработки при этом важен?
В случае кафки важен. Для логики - нет
источник

PD

Phil Delgyado in Архитектура ИТ-решений
В Кафке ты сам управляешь моментом, когда и где делать оффсет. Можешь при чтении, можешь при обработке.
Если порядок не важен - то заводи побольше партиций, читай по одной записи, настраивай масштабирование как хочешь.
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
В кафке вы либо берете из партиции строго поочередно и значит не можете взять в одновременную работу сообщений больше чем партиций, либо до пускает потерю сообщений.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Ты можешь одним консумером читать из кучи партиций. Собственно, число консумеров не может быть больше числа партиций, но меньше - легко.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
А сколько тебе нужно одновременно? Если rmq справляется, то хватит и 100.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Ну или взять пачку, после обработки часть вернуть обратно. И это вполне надёжно
источник

PD

Phil Delgyado in Архитектура ИТ-решений
С учётом транзакций внутри Кафки можно и более сложные логики делать. Но обычно не надо.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Все реальные гарантии rmq я построю на Кафке, только с большей производительностью.
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Я знаю как работает кафка досточно хорошо)) И именно это знание заставляет меня искать альтернативы. Если мой проект будет допускать потерю данных - возьму кафку. Таких областей много.
источник