169 похожих чатов

А что он в этом толке предлагает взамен рест? Очереди?

31 ответов

59 просмотров

Нет) видео клевое

Как будто кроме реста ничего нету в этом мире

из заголовка выглядит как CQRS

лично мне импонирует AMQP based RPC 😊

хотя вроде одно другого не исключает https://lostechies.com/jimmybogard/2016/06/01/cqrs-and-rest-the-perfect-match/

В общих чертах его идея такая: 1) вместо rest сделать RPC-подобный протокол, то есть JSON с полями actions и params 2) все команды делятся на read-only и mutable 3) команды на чтение исполняются сразу, а на изменение уходят в кафку. В ответ на изменение приходит айди задачи, которую клиент будет трекать 4) фоновые воркеры разгребают кафку и пишут в задачу результат иили ошибку 5) в результате мы храним историю команд, ее можно переиграть. 6) За счет добавления новых воркеров система масштабируется, можно добавлять долгие задачи, например выгрузку истории, отправку писем, формирование PDF и другое

нет ли тут неудобства для маленьких проектов?

1 прям бальзам на душу, как же бесит традиционное обилие параметров разного типа напиханных куда только можно…

не ясно, как клиенту трекать задачу по пункту 3

в ответ на изменение сущности приходит json с полем job-id = xxxxxxxxxxx

это понятно технология треканья какая? сокеты? повторяющиеся http запросы? всё усложняется, если отвечающая сторона не может отправить ответ спрашивающей напрямую

почему-то не увидел это сообщение. Можно и вебсокеты, но если задан Keep alive, то обычные запросы будут так же работать

Aleksei- Автор вопроса

мы 1. применяли у себя, все запросы только POST в хидере токен, в тело - json со всеми параметрами, все. Например POST get-users, add-users и тд. Ощущения только положительные остались.

А почему только POST? Почему на рид команды не гет?

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

Aleksei- Автор вопроса

мы используем это для межсервисного взаимодействия, так что все клиенты сами микросервисы

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

Ну как раз CQRS. Комаеды кешировать не надо, конечно. А query пусть кешируются.

это неважно когда реализуешь протокол общения, то включать в него выбор между GET/POST по названию метода — избыточное усложнение

1. Читаем список 2. Выполняем команду на изменение списка 3. Перечитываем список как в 1, пусть кэшируется?

Aleksei- Автор вопроса

если я правильно понимаю вопрос, то POST

так тоже можно, если речь о сервисах. А если получатель это клиент, то как он оставит свой урл для нотификации? Только долбиться остается

вот и я ему так ответил, что «так проще»

ну, бывают же клиенты с постоянным подключением к чему-нибудь, на тех же вебсокетах

Aleksei- Автор вопроса

🤦‍♂️ ага, я тепреь понял, а сначала запутался)

можно и с лонг поллингом через прокси 😊

а зачем разные эндпойнты вообще?

Aleksei- Автор вопроса

чтобы было видно что торчит из микросервиса, описание было. Эндпоинты может support команда дернуть

а, ну только если для этого, так-то никто не мешает упаковать всё в одну json-ку

Aleksei- Автор вопроса

в больших проектах "в одну жсонку" это крайность. Везде нужен компромис

Я такое практикую.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта