Потратьте 5 минут времени и выясните все возможные варианты использования поставленной перед вами задачи.
Шаг 1. Варианты использования
- Как, когда будут добавляться данные?
- Как данные будут обновляться/редактироваться?
- Как данные будут удалены или просрочены?
- Запрос будет исходить от API или UI?
- Нужна ли статистика данных?
- Конечно, высокая доступность обязательна
Шаг 2. Ограничения. Чаще всего необходимо учитывать следующее:
1. Объем трафика, который должна обрабатывать система: количество/частота операций чтения или записи. Это должно быть отклонено, чтобы запрашивать в секунду после выполнения всех расчетов.
2. Объем данных, который необходимо обработать системе
Шаг 3. Абстрактный дизайн: HLD (дизайн высокого уровня)
Очевидно, здесь у нас будет какая-то идея о том, какую структуру данных или вид программного компонента вы будете использовать для разработки этой системы.
Отвратительная шутка о том, как рисовать абстрактный дизайн
После заключения брака, особенно в Индии, мы знаем, кто (дядя, брат, сосед) будет выполнять какую работу. Нравится :
Кто забронирует Зал Бракосочетания
Кто распечатает карту
Кто позаботится о Кейтеринге бла.. бла… бла
Просто соберите все компоненты вместе и нарисуйте схему.
Технический аспект
Какой компонент структуры данных вы будете использовать и как и какие данные будут храниться, например:
- HashMap или связанная HashMap, ArrayList, Kafka, RabitMQ, Cassandara
- Что все придет в Ключи и ценности
- На постоянной основе, что мы будем делать и т. д. и т. д. и т. д.………
Низкоуровневый дизайн:здесь мы можем начать определение моделей классов, дизайна БД и нескольких классов драйверов, если позволяет время ИЛИ некоторое время фактического кода.
Шаг 4. Параллелизм.Обсудите, как вы будете обрабатывать параллелизм в своем дизайне, о чем вы говорили выше. При необходимости внесите изменения в вашу систему
Шаг 5. Масштабируемость.Подумайте, вдруг у вас нет трафика. запросов в секунду увеличивается, тогда что вы можете сделать, чтобы разместить его.