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

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

31 ответов

24 просмотра

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

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

из заголовка выглядит как 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- Автор вопроса

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

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

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

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

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Карта сайта