Size: a a a

Software Design/Architecture/Zen

2021 January 12

SP

Sergey Protko in Software Design/Architecture/Zen
это не сказать что частый кейс, обычно оптимистичные блокировки все разруливают так как ты и описал
источник

SP

Sergey Protko in Software Design/Architecture/Zen
ну то есть если вероятность того что ты ткнул что-то пошел оплачивать и за это время кто-то перетрет твое высокая - то тебе нужны локи
источник

MG

Max Grom in Software Design/Architecture/Zen
Требования "что бы не перетерли" это не те требования, которые должны заставлять делать 4 эндпоинта вместо одного и выносить транзакционность на уровень http
источник

SP

Sergey Protko in Software Design/Architecture/Zen
либо "выбор" партиции надо делать так что бы уменьшать вероятность конфликта
источник

MG

Max Grom in Software Design/Architecture/Zen
Ну так я и ткнул и у меня 2 минуты на оплатить. В чём несостыковка-то?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Max Grom
Требования "что бы не перетерли" это не те требования, которые должны заставлять делать 4 эндпоинта вместо одного и выносить транзакционность на уровень http
ну простой кейс - выбрал места в зале, надо оплатить (занимает время), пока ты платишь места зарезервированы за тобой.  

Reserve -> /start-editing
Purchase -> /change
Cancel Order -> /no-change
ну и если мы хотим максимально быстро высвобождать лок - /continue-editig
источник

SP

Sergey Protko in Software Design/Architecture/Zen
если нам ок что "2 минуты висеть будет" то можно не делать последний метод
источник

SP

Sergey Protko in Software Design/Architecture/Zen
но 3 метода всеравно будут
источник

SP

Sergey Protko in Software Design/Architecture/Zen
а еще было бы неплохо rate limit какой что бы веселые боты не лочили тебе все места и не отменяли заказы постоянно не давая обычным людям купить у тебя чего (приколы конкурентов)
источник

HH

Human Human in Software Design/Architecture/Zen
Max Grom
Требования "что бы не перетерли" это не те требования, которые должны заставлять делать 4 эндпоинта вместо одного и выносить транзакционность на уровень http
Ну если занято то другим челам показывается, что изменение расписания сейчас занято кем-то - и они не могут начать редактирование
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Human Human
Ну если занято то другим челам показывается, что изменение расписания сейчас занято кем-то - и они не могут начать редактирование
да важное уточнение
источник

MG

Max Grom in Software Design/Architecture/Zen
Sergey Protko
ну простой кейс - выбрал места в зале, надо оплатить (занимает время), пока ты платишь места зарезервированы за тобой.  

Reserve -> /start-editing
Purchase -> /change
Cancel Order -> /no-change
ну и если мы хотим максимально быстро высвобождать лок - /continue-editig
Так это описание системы, а не урлов под изменение.
Это можно завернуть в
* Schedule
* Start competition
* Graduate
Это просто разные сущности, разные бизнес-процессы. Так можно привести тысячу примеров трёх-шаговых утрированных алгоритмов. Человеку нужно гарантировать что изменения которые от него будут прилетать - будут от одного чувака (да помним что это заглушка от дурака но не столь важно)
Если он может обойтись одним эндпоинтом с ttl на доступ, то в почему нельзя это использовать?
источник

MG

Max Grom in Software Design/Architecture/Zen
Понимаю, что вы решили задачу через 3-4 эндпоинта. Мне непонятно зачем такой оверинжиниринг
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Max Grom
Так это описание системы, а не урлов под изменение.
Это можно завернуть в
* Schedule
* Start competition
* Graduate
Это просто разные сущности, разные бизнес-процессы. Так можно привести тысячу примеров трёх-шаговых утрированных алгоритмов. Человеку нужно гарантировать что изменения которые от него будут прилетать - будут от одного чувака (да помним что это заглушка от дурака но не столь важно)
Если он может обойтись одним эндпоинтом с ttl на доступ, то в почему нельзя это использовать?
другой пример - ты открываешь документ (start editing), тусишь себе там (continue editing) и может меняешь чего (change) (не факт что нужно лочить, вдруг ты там с CRDT играешься). И смысл только в том что бы челы с другой стороны видели плашку "эту страницу сча редактирует такой-то перец"
источник

HH

Human Human in Software Design/Architecture/Zen
Max Grom
Так это описание системы, а не урлов под изменение.
Это можно завернуть в
* Schedule
* Start competition
* Graduate
Это просто разные сущности, разные бизнес-процессы. Так можно привести тысячу примеров трёх-шаговых утрированных алгоритмов. Человеку нужно гарантировать что изменения которые от него будут прилетать - будут от одного чувака (да помним что это заглушка от дурака но не столь важно)
Если он может обойтись одним эндпоинтом с ttl на доступ, то в почему нельзя это использовать?
Чет не понимаю, что ты имеешь ввиду. Типа лочить только на определенное время? 2 минуты прошло и все - другой может перехватить его?
источник

MG

Max Grom in Software Design/Architecture/Zen
Сергей, я понимаю примеры. Мне непонятна сверх сложность для этого решения. Аргументы в решение за 4 эндпоинта я услышал. Приведите аргументы против одного эндпоинта с ttl на доступ?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
у меня например есть и такой кейс - только там не надо с локами заморачиваться (версии, лайв апдейты, если есть конфликт то человек разрулит но по воркфлоу люди в разных секциях одного документа работают но им надо знать где кто)
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Max Grom
Сергей, я понимаю примеры. Мне непонятна сверх сложность для этого решения. Аргументы в решение за 4 эндпоинта я услышал. Приведите аргументы против одного эндпоинта с ttl на доступ?
ну тот факт что с твоим решением плашка "чел редактирует" будет висеть пока не закончится TTL
источник

SP

Sergey Protko in Software Design/Architecture/Zen
а если TTL уменьшить до времени типа 10 секунд то тебе нужен будет continue editing
источник

SP

Sergey Protko in Software Design/Architecture/Zen
иначе первый чел не успеет доделать дела когда второй заберет ресурс
источник