Масштаб / Архитектурный вызов - PullRequest
0 голосов
/ 07 февраля 2020

Недавно у меня было интервью с известной и очень успешной компанией, и все прошло гладко, кроме раздела архитектуры - я застрял и нашел половину ответа, но было ясно, что у меня недостаточно опыта в этом площадь. Справедливо, но я думаю, что когда дело доходит до такого большого масштаба, вы не получите опыт, не испытав его, и вы не получите его, если не сможете получить работу в одной из этих компаний ... в любом случае! С тех пор я обдумывал это, и мне еще предстоит найти то, что я считаю отличным решением.

Это выглядит примерно так:

Мы хотим сделать что-то хорошее для наших клиентов. Нам нужен веб-сайт, на котором пользователи могут вводить свой адрес электронной почты, и мы дадим им ваучер на один бесплатный X (бургер, поездка на такси, месяц потокового вещания, что бы ни предложила компания). Мы раздадим 10 миллионов этих ваучеров. Мы ожидаем, что из-за высокого спроса мы исчерпаем в течение 5 минут. Ни при каких обстоятельствах мы не должны предоставлять одному пользователю (адресу электронной почты) более одного ваучера или выдавать большее количество ваучеров, чем выделенное количество ваучеров, но это не конец света, выдающий чуть меньше.

Разработка архитектуры системы, которая могла бы обрабатывать такие масштабы трафика c

Мне бы очень хотелось услышать некоторые мнения и идеи:)

1 Ответ

0 голосов
/ 07 февраля 2020

Я бы попытался уточнить дополнительные нефункциональные требования, например, что это значит немного меньше? Потому что 5 записей меньше или 5 000 записей меньше, это большая разница. И есть ли какие-то конкретные c требования ко времени отклика? И есть ли какие-либо требования к кодам ваучеров.

Первое решение, которое приходит мне в голову, - это просто использовать функцию Lambda с некоторой функцией ha sh из электронной почты в качестве кода ваучера. Таким образом, мы гарантируем, что одно и то же письмо всегда будет получать один и тот же код ваучера, поэтому нет необходимости проверять хранилище.

Затем вы можете настроить, чтобы ваша лямбда не масштабировалась больше, чем (порог), параллельно и до токеном вы можете проверить количество уже зарегистрированных писем, что оно меньше или равно 10М-порогу. Где порог - это количество одновременных функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...