Size: a a a

Software Design/Architecture/Zen

2021 January 21

AN

Allan Nettzan in Software Design/Architecture/Zen
Добрый вечер.
Хощу сервера одной старой игры.
Делаю подбор игроков. (запросы, тикеты и тд)
Запросы на подбор игры собираюсь хранить в ин-мемори базе.
Это можно считать бизнес-логикой?
И правильно ли делать так с запросами и тикетами на подбор игр.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Allan Nettzan
Добрый вечер.
Хощу сервера одной старой игры.
Делаю подбор игроков. (запросы, тикеты и тд)
Запросы на подбор игры собираюсь хранить в ин-мемори базе.
Это можно считать бизнес-логикой?
И правильно ли делать так с запросами и тикетами на подбор игр.
Не оч понятен вопрос. Да, это может считаться бизнес логикой. In memory базы в целом норм, там вопрос сколько данных можно терять. Какой рэдис со снепшетами хорошо под такие задачи подходит
источник

AN

Allan Nettzan in Software Design/Architecture/Zen
Спасибо.
Вопрос безумно кривой...
Хранить записи о запросе на поиск игры мне не нужно.
источник

AN

Allan Nettzan in Software Design/Architecture/Zen
Поэтому и держу их в ин-мемори.
Мой выбор редис.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Ну если данные не представляют собой ценности, Аля если ты потеряешь данные за несколько секунд то это не повлияет на логику, то в целом почему нет.
источник

AN

Allan Nettzan in Software Design/Architecture/Zen
Понял.
Спасибо большое.
источник
2021 January 22

AN

Allan Nettzan in Software Design/Architecture/Zen
Добрый день.
Ситуация следующая.
Игроки подают тикеты в матчмейкинг сервис.
Билетом они фактически встают в поиск.
Запросом в базу добавляется тикет, сохраняется,а после если нужно диспатчат какие либо оповещния другим систем.
Концепт сервиса очереди такой:
Крона каждые сколько секунд подбирает тикеты и пытается соединить их в группу.
Допустим она набрала 25 человек, но ей нужно еще раз спросить игроков готовы ли они к игре.
Какими методами можно реализовать такой процесс?
Сага? 2pc?
источник

SA

Sergey Alaev in Software Design/Architecture/Zen
Allan Nettzan
Добрый день.
Ситуация следующая.
Игроки подают тикеты в матчмейкинг сервис.
Билетом они фактически встают в поиск.
Запросом в базу добавляется тикет, сохраняется,а после если нужно диспатчат какие либо оповещния другим систем.
Концепт сервиса очереди такой:
Крона каждые сколько секунд подбирает тикеты и пытается соединить их в группу.
Допустим она набрала 25 человек, но ей нужно еще раз спросить игроков готовы ли они к игре.
Какими методами можно реализовать такой процесс?
Сага? 2pc?
две колонки в базе - id группы и признак готовности к игре?
источник

EE

Evgenii Evgenivich in Software Design/Architecture/Zen
Кхм
Люблю сложности :(
Есть еще какой то вариант?
источник

IS

I Scarab in Software Design/Architecture/Zen
Allan Nettzan
Добрый день.
Ситуация следующая.
Игроки подают тикеты в матчмейкинг сервис.
Билетом они фактически встают в поиск.
Запросом в базу добавляется тикет, сохраняется,а после если нужно диспатчат какие либо оповещния другим систем.
Концепт сервиса очереди такой:
Крона каждые сколько секунд подбирает тикеты и пытается соединить их в группу.
Допустим она набрала 25 человек, но ей нужно еще раз спросить игроков готовы ли они к игре.
Какими методами можно реализовать такой процесс?
Сага? 2pc?
Видимо, есть ещё какой-то таймаут на ожидание ответа игрока?
Если игрок не ответил в течение таймаута, но при этом есть новые тикеты - они подбираются в группу?
источник

AN

Allan Nettzan in Software Design/Architecture/Zen
Да, есть время на принятие игры.
источник

AN

Allan Nettzan in Software Design/Architecture/Zen
Насчет подбора нового точно не могу сказать.
Пока что в планах был дисбанд всех тиктов и сбор новой группы.
источник

IS

I Scarab in Software Design/Architecture/Zen
Я бы делал через понятие "актуальность ответа". Игрока спросили, записали время, когда он согласился. Если на момент попытки сбора группы есть игроки, которые подтвердили больше чем N минут назад - их надо переспросить.
источник

IS

I Scarab in Software Design/Architecture/Zen
тогда workflow получается примерно такой:
- попробовали сматчить группу. Если набралось 25 человек - разослали каждому запрос. Время отправки запроса записали.
- ждём ответов, записываем время ответов. Если таймаут на ответ истёк - выкидываем из группы, пытаемся подобрать следующего.
- сматчили группу с новыми игроками, отправляем запрос новым + если у кого-то за время поиска истёк срок согласия.
- если все согласились и у всех согласие актуально - считаем игру начатой.
источник

AN

Allan Nettzan in Software Design/Architecture/Zen
I Scarab
тогда workflow получается примерно такой:
- попробовали сматчить группу. Если набралось 25 человек - разослали каждому запрос. Время отправки запроса записали.
- ждём ответов, записываем время ответов. Если таймаут на ответ истёк - выкидываем из группы, пытаемся подобрать следующего.
- сматчили группу с новыми игроками, отправляем запрос новым + если у кого-то за время поиска истёк срок согласия.
- если все согласились и у всех согласие актуально - считаем игру начатой.
Спасибо за предложение.
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Интересная идея для телеграмм-бота)
Спасибо, что поделились)
источник

MG

Max Grom in Software Design/Architecture/Zen
Allan Nettzan
Добрый вечер.
Хощу сервера одной старой игры.
Делаю подбор игроков. (запросы, тикеты и тд)
Запросы на подбор игры собираюсь хранить в ин-мемори базе.
Это можно считать бизнес-логикой?
И правильно ли делать так с запросами и тикетами на подбор игр.
А почему ин-мемори?
источник

AN

Allan Nettzan in Software Design/Architecture/Zen
Max Grom
А почему ин-мемори?
Тикеты это некий реквест на участие в матче.
источник

AN

Allan Nettzan in Software Design/Architecture/Zen
Они не имеют ценности.
источник

MG

Max Grom in Software Design/Architecture/Zen
Обычно любой код имеет бизнес ценность, если его пишут
источник