Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2021 March 26

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
У меня все же самые масштабные открытые лекции по js и ноде в русскоязычном интернете. Значит обучим новых. По DDD, но с одним отличием, без ООП в центре, мсесто объектной модели там декларативная схема (метаданные) которые в рантайме интерпретируются и пораждают схемы для фронта, базы, апи и всего остального
источник

AR

Anton Revyako in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
У меня все же самые масштабные открытые лекции по js и ноде в русскоязычном интернете. Значит обучим новых. По DDD, но с одним отличием, без ООП в центре, мсесто объектной модели там декларативная схема (метаданные) которые в рантайме интерпретируются и пораждают схемы для фронта, базы, апи и всего остального
Хорошо, когда на это силы есть. А в РФ за такое теперь и посадить могут, так что я пас )
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Anton Revyako
Хорошо, когда на это силы есть. А в РФ за такое теперь и посадить могут, так что я пас )
чего так?
источник

L

Leon in NodeUA - JavaScript and Node.js in Ukraine
Там же запретили преподавать без бумажки
источник

AR

Anton Revyako in NodeUA - JavaScript and Node.js in Ukraine
Timur Shemsedinov
чего так?
про посадить? закон тут приняли, о просвещении. запрещено теперь )
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
мои студенты совершенно спокойно тут с красным флагом ходят и ничего им не делается
источник

VS

Vitaliy Stoliarov in NodeUA - JavaScript and Node.js in Ukraine
Anton Revyako
кстати, если все-таки кафка, то рекомендую взглянуть на https://vectorized.io/redpanda/
протокол тот же, только на плюсах и быстрее
спасибо, посмотрю.
По поводу event streaming, разве kafka это не брокер сообщений как и rabbitMQ? (работал только с первым)
источник

L

Leon in NodeUA - JavaScript and Node.js in Ukraine
Это претензии не к студентам, а к преподавателям будут. При случае.
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Leon
Это претензии не к студентам, а к преподавателям будут. При случае.
Ну если меня тронут, то они КПИ сожгут )))
источник

AR

Anton Revyako in NodeUA - JavaScript and Node.js in Ukraine
Vitaliy Stoliarov
спасибо, посмотрю.
По поводу event streaming, разве kafka это не брокер сообщений как и rabbitMQ? (работал только с первым)
Нет, это разные вещи. Можно, прищурившись, прикинуться, что одно похоже на другое, но есть вещи, которые на кафке не сделать. Я не вот что бы эксперт, но там бай дизайн невозможно NO-ACK на стороне консьюмера сделать.
источник

L

Leon in NodeUA - JavaScript and Node.js in Ukraine
Vitaliy Stoliarov
спасибо, посмотрю.
По поводу event streaming, разве kafka это не брокер сообщений как и rabbitMQ? (работал только с первым)
На HighLoad все пользуются на довольно больших системах для шины событий редисом или тарантулом, Kafka избыточно массивный для не супер высоконагружненных задач, а Rabbit нагружает машины. Мопед не мой.
источник

AR

Anton Revyako in NodeUA - JavaScript and Node.js in Ukraine
Leon
Это претензии не к студентам, а к преподавателям будут. При случае.
Я к тому, что я никого учить не буду, я старый и больной. Это не моя война )
источник

DH

Dima Haponov in NodeUA - JavaScript and Node.js in Ukraine
А ссылочку на видео вчерашнего митапа можно ?
источник

VS

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

АП

Алексей Попов... in NodeUA - JavaScript and Node.js in Ukraine
Vitaliy Stoliarov
не уверен что это мой кейс, так как сам сервис А не нуждается в ответе об успешной операции от других сервисов, то есть транзакций нет. Самим сервисами В и С важно, чтобы они не пропустили ни одного события, и сервис А ничего не знает о них
Выгляди так, что нужен посредник, которого будет извещать А. Причём не посредством ивента, а прямым вызовом, потому что нет гарантии того, что ивент получат все, кто на него подписался. А этот посредник должен знать, кого известить, и там уже не важно как его реализовать - ивентами с ответом от получателей и контролем, что все ответили, или прямыми вызовами
А вообще переадресуй вопрос в группу молекуляра, ты же в ней есть
источник

MM

Maxim Manylov in NodeUA - JavaScript and Node.js in Ukraine
Aws kinesis можно глянуть
источник

IL

Ihor Levchenko in NodeUA - JavaScript and Node.js in Ukraine
Anton Revyako
Нет, это разные вещи. Можно, прищурившись, прикинуться, что одно похоже на другое, но есть вещи, которые на кафке не сделать. Я не вот что бы эксперт, но там бай дизайн невозможно NO-ACK на стороне консьюмера сделать.
ОО, это вообще больная тема для меня.
Я два дня провел в исследованиях готовых решений.

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

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

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

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

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

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

AR

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

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

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

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

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

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

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

Звучит именно так, что нужен клиентский ack/noack и тут amqp кажется победителем. кроме реббита есть еще брокеры, но я хз кто из них быстрее.
источник

IL

Ihor Levchenko in NodeUA - JavaScript and Node.js in Ukraine
Anton Revyako
Вот честно скажу, хз как работает pubsub в редисе, но полагаю, что так же как в постгре - если консьюмер упал, то все произошедшие за это время pub пропали.

Звучит именно так, что нужен клиентский ack/noack и тут amqp кажется победителем. кроме реббита есть еще брокеры, но я хз кто из них быстрее.
Именно так. Если sub упал, то как бы все улетает в космос.
Но там во время паблишинга прилетает респонс сколько sub-ов получили сообщение. Если никто не получил - тогда прилетает 0 и приходится это менеджить на своей стороне.

Есть конечно решение типа bullMQ которое поверх редис работает, но не хочется завязываться на ноду полностью.

Спасибо за комментарий. По ходу нужно повторно посмотреть на rabbit. Возможно, я зря его выбросил из виду испугавшись ерланга.

Но вот Кафка это вроде как всё может, но она слишком заморочена и тугая. Но я ее тоже не досконало изучил
источник

AR

Anton Revyako in NodeUA - JavaScript and Node.js in Ukraine
Ihor Levchenko
Именно так. Если sub упал, то как бы все улетает в космос.
Но там во время паблишинга прилетает респонс сколько sub-ов получили сообщение. Если никто не получил - тогда прилетает 0 и приходится это менеджить на своей стороне.

Есть конечно решение типа bullMQ которое поверх редис работает, но не хочется завязываться на ноду полностью.

Спасибо за комментарий. По ходу нужно повторно посмотреть на rabbit. Возможно, я зря его выбросил из виду испугавшись ерланга.

Но вот Кафка это вроде как всё может, но она слишком заморочена и тугая. Но я ее тоже не досконало изучил
ни разу не приходилось лазить в реббит :)
есть zeromq еще.

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

Вместо кафки есть repanda, они вроде как побыстрее
источник