Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 March 26

IL

Ihor Levchenko in NodeUA - JavaScript and Node.js in Ukraine
Anton Revyako
ни разу не приходилось лазить в реббит :)
есть zeromq еще.

Кафка не может в констюмерский no-ack, она про стриминг. Это ближе к nats streaming и redis streams.

Вместо кафки есть repanda, они вроде как побыстрее
То есть в кафке нельзя отправлять сообщения в один конец не накапливая их в очереди? Правильно ли я понимаю no-ack?
источник

AR

Anton Revyako in NodeUA - JavaScript and Node.js in Ukraine
Ihor Levchenko
То есть в кафке нельзя отправлять сообщения в один конец не накапливая их в очереди? Правильно ли я понимаю no-ack?
Возможно, нужны эксперты по кафке, а не я, но, как мне кажется ответ «нет».

важно понять, что кафка - не очередь, а лог. из очереди можно достать и, если что, вернуть обратно.
если клиент взял сообщение и не сказал в ответ через некоторое время ACK (если упал) или если сказал NO-ACK (нешмогла), то сообщение остается в очереди.
т.е. если коньсьюмеров >1, то сообщение получит следующий. ну или оно проваляется в очереди, пока упавший не поднимется.

в случае с логом - ничего никуда не исчезает при чтении. есть лог и смещение в этом логе.

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

есть еще такой подход: https://en.wikipedia.org/wiki/Dead_letter_queue
источник

IL

Ihor Levchenko in NodeUA - JavaScript and Node.js in Ukraine
Anton Revyako
Возможно, нужны эксперты по кафке, а не я, но, как мне кажется ответ «нет».

важно понять, что кафка - не очередь, а лог. из очереди можно достать и, если что, вернуть обратно.
если клиент взял сообщение и не сказал в ответ через некоторое время ACK (если упал) или если сказал NO-ACK (нешмогла), то сообщение остается в очереди.
т.е. если коньсьюмеров >1, то сообщение получит следующий. ну или оно проваляется в очереди, пока упавший не поднимется.

в случае с логом - ничего никуда не исчезает при чтении. есть лог и смещение в этом логе.

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

есть еще такой подход: https://en.wikipedia.org/wiki/Dead_letter_queue
Спасибо за развернутый ответ.
Да, скорее всего мне дорога в AMQP протокол, все-таки бесконечно накапливать очередь и читать оттуда лишь смещениями - мне не очень подходит, но буду изучать еще это более детально.
источник

DH

Dima Haponov in NodeUA - JavaScript and Node.js in Ukraine
подходов очень много - можно и свой подход сделать
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Ihor Levchenko
То есть в кафке нельзя отправлять сообщения в один конец не накапливая их в очереди? Правильно ли я понимаю no-ack?
можно
источник

L

Leon in NodeUA - JavaScript and Node.js in Ukraine
Ihor Levchenko
Спасибо за развернутый ответ.
Да, скорее всего мне дорога в AMQP протокол, все-таки бесконечно накапливать очередь и читать оттуда лишь смещениями - мне не очень подходит, но буду изучать еще это более детально.
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
Ihor Levchenko
ОО, это вообще больная тема для меня.
Я два дня провел в исследованиях готовых решений.

Кафка да, слишком жирная и мне не нравится что при переподключении к той самой группе происходит ребалансировка которая занимает время.

MQTT (в частности mosquitto) тоже не подошёл ибо у него нет очереди.

Nats по той же причине отвалился ибо у него нет асинхронных очередей.

Реббит когда то очень давно использовал, вроде неплохо кроме того что он слишком заморочен с этими анонимными очередями и сам по себе медленный, плюс ерланг.. страшно использовать то, чего я не понимаю (yet!)

В итоге пока что как временное решение взял редис, ибо если консюмер отвалился и я получаю 0 от паблиша, я могу в очередь lpush-ем напихать сообщений, и потом консюмером разматывать пропущенное.

Может вы сможете дать совет - мне бы какой нибудь брокер, который можно развернуть на своей инфраструктуре, у которого низкий latency, который умеет ещё и отправлять месаги в очередь, а затем консюмер, получив месагу, должен подтвердить что она получена, чтобы больше ее не получать (удалить из очереди). Но при этом должна быть возможность и без очереди: просто слать в один конец без подтверждения (at most once)
Я уже почти сдался и почти сел на Го педалить свое решение.
а вы посмотрели xreadgroup в редисе? :)
источник

L

Leon in NodeUA - JavaScript and Node.js in Ukraine
Они сами крайне рекомендуют  использовать потоки, вместо pub/sub. Где-то в их Redis Best Practices это подробнее описано, но вот тут тоже. https://habr.com/ru/post/456270/
источник

IL

Ihor Levchenko in NodeUA - JavaScript and Node.js in Ukraine
Illya Klymov
а вы посмотрели xreadgroup в редисе? :)
благодаря вашему сообщению выше:)
я, собственно, редис пока что и использовал для своего решения.

но еще не со всеми нюансами разобрался, нужно больше потестировать (особенно если несколько паблишеров и несколько консюмеров)
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
я о том что там не надо думать на стороне паблишера
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
вы просто пихаете в очередь
источник

D

Dmitriy in NodeUA - JavaScript and Node.js in Ukraine
полезные чатик, много нового узнаю. Спасибо Вам)
источник

VS

Vlad Sobenko in NodeUA - JavaScript and Node.js in Ukraine
Dmitriy
Почему нет таких людей в пхп(
Вы просто сидели не в тех чатах, в чатике по симфони  очень много просветителей.  В лоравеле наверное всё плохо с этим.
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Vlad Sobenko
Лишь бы тут не распространяли эту болезнь.
А вы лишаетесь слова на 1 месяц за антикоммунизм, следующий раз вечный бан
источник

D

Dmitriy in NodeUA - JavaScript and Node.js in Ukraine
Vlad Sobenko
Вы просто сидели не в тех чатах, в чатике по симфони  очень много просветителей.  В лоравеле наверное всё плохо с этим.
Сижу в чате симфы, ну такое токссичность и стеб. С последних где я регулярно читаю (не реклама) канал Пыхтелка Валентина Удальцова, там да есть полезное, остальные чаты по пхп известные мне такое се
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
токсичность это к сожалению современные реалии СНГ-сообщества. меня это очень печалит
источник

D

Dmitriy in NodeUA - JavaScript and Node.js in Ukraine
хотя признаю пару раз приходил с вопросом который в доке есть в самом конце, там порцию помидоров в свой адрес я получил заслуженно)))
источник

IL

Ihor Levchenko in NodeUA - JavaScript and Node.js in Ukraine
Illya Klymov
токсичность это к сожалению современные реалии СНГ-сообщества. меня это очень печалит
у нас в ментальности какая-то излишняя категоричность и впадание в крайности, что-то ТОП, а что-то.. не буду произносить плохих слов:)

а на самом деле то, в каждое решение вкладывалось много много человекотрудов, и ребята пытались решать задачу:)
источник

IK

Illya Klymov in NodeUA - JavaScript and Node.js in Ukraine
мы еще и в дополнение к этому мало боремся с "токсичностью"
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Illya Klymov
токсичность это к сожалению современные реалии СНГ-сообщества. меня это очень печалит
Как эти люди могут хорошо писать тесты, если они считают, что коммунизм не прошел тестирование? Это как получив один провал теста сказать - все, мы прекращаем разработку, этот проект невозможно сделать.
источник