System Design социальной сети для курса по System Design – https://balun.courses/courses/system_design?ysclid=mgnt2uxqdd770961050
Функциональные требования:
- публикация постов из путешествий с фотографиями, небольшим описанием и привязкой к конкретному месту путешествия;
- оценка и комментарии постов других путешественников;
- подписка на других путешественников, чтобы следить за их активностью;
- поиск популярных мест для путешествий и просмотр постов с этих мест;
- просмотр ленты других путешественников и ленты пользователя, основанной на подписках в обратном хронологическом порядке;
Нефункциональные требования: Время отклика:
- Создание поста - 5 с.;
- Оценка поста - 1 с.;
- Добавление комментария к посту - 2 с.;
- Получение ленты постов - 3 с.;
- Получение комментариев к посту - 2 с.;
- Получение фотографий поста - 3 с.;
- Получение оценок поста - 500 мс.
10 000 000 DAU Приложение: - веб; - мобильное Геораспределенность: страны СНГ Доступность: 99,9% Сезонность: высокий сезон - лето/зима, низкий сезон - межсезонье (в высокий сезон множитель - х2) Максимальное количество подписчиков у пользователя: 1 000 000 Данные храним - всегда
Типы пользователей:
- наблюдатели - 90% (просматривают ленту и фото, ставят лайки, контент не создают);
- умеренные авторы - 9% (периодически публикуют посты, активно лайкают, комментируют и подписываются на других путешественников);
- активные авторы - 1% (публикуют посты часто, активно комментируют)
Расчеты: Фотографий в посте - 5; Размер фотографии - 2 МБ; Количество символов в посте - 3 000 (3 КБ) Средний размер медиа для поста: 5 фото * 2 МБ = 10 МБ Средний размер метаданных поста - 10 КБ
RPS. Просмотр ленты Наблюдатели - 15 запросов в день Умеренные авторы - 25 запросов в день Активные авторы - 40 запросов в день Итого количество запросов в день: 0.915 + 0.0925 + 0.01*40 = ~16 запросов в день RPS = 10 000 000 * 16 / 86 400 = ~1 852
Трафик. Просмотр ленты (мета) 1 852 * 10КБ = 18 520 КБ/с
Трафик. Просмотр ленты (медиа) 1 852 * 1.2МБ = 2 222 МБ/с
RPS. Поиск и просмотр постов/мест
Наблюдатели - 10 запросов в день Умеренные авторы - 20 запросов в день Активные авторы - 30 запросов в день Итого количество запросов в день: 0.910 + 0.0920 + 0.01*30 = ~11 запросов в день RPS = 10 000 000 * 11 / 86 400 = ~1 273
Трафик. Поиск и просмотр постов/мест (мета) 1 273 * 7КБ = 8 911 КБ/с
Трафик. Поиск и просмотр постов/мест (медиа) 1 273 * 3МБ = 3 819 МБ/с
RPS. Подписки Наблюдатели - 0.25 запроса в день Умеренные авторы - 1 запрос в день Активные авторы - 2 запроса в день Итого количество запросов в день: 0.90.25 + 0.091 + 0.01*2 = ~0,4 запроса в день RPS = 10 000 000 * 0.4 / 86 400 = ~47
Трафик. Подписки 47 * 1КБ = 47 КБ/с
RPS. Лайки/комментарии Наблюдатели - 5 запросов в день Умеренные авторы - 10 запросов в день Активные авторы - 20 запросов в день Итого количество запросов в день: 0.95 + 0.0910 + 0.01*20 = ~6 запросов в день RPS = 10 000 000 * 6 / 86 400 = ~695
Трафик. Лайки/комментарии 695 * 3КБ = 2 085КБ/с
RPS. Публикация постов Наблюдатели - 0 запросов в день Умеренные авторы - 3 запроса в день Активные авторы - 5 запросов в день Итого количество запросов в день: 0.90 + 0.093 + 0.01*5 = ~0,4 запросов в день RPS = 10 000 000 * 0.4 / 86 400 = ~47
Трафик. Публикация постов (мета) 47 * 6КБ = 282 КБ/с
Трафик. Публикация постов (медиа) 47 * 10МБ = 470 МБ/с
Расчет одновременных соединений Connections = 10 000 000 * 0.1 = 1 000 000