Какой стек технологий выбрать для такого сайта? Дабы сразу не быть закиданным тапками, отмечу, что думаю над сайтом уже года пол. За это время успел написать основные методы api на php (lumen), а сейчас переписываю фронт со второго ангуляра на вью. Но самое главное - я так и не пришёл к понимаю, как правильно делать некоторые вещи. Для этого и пишу вопрос.
Теперь немного о сайте. Функционал типичный, в качестве примера можно рассматривать всем известный пикабу. Нагрузка, допустим, 6 млн просмотров в день.
Основной функционал:
1. Создание постов с тегами
2. Вывод постов по тегам
3. Наличие рейтинга у постов
4. Возможность постраничной выдачи лучших постов (за день/неделю/произвольный период)
5. Лента с горячими постами. Выдаётся тоже страницами.
6. Желательно при полном обновлении страницы скрывать посты, которые пользователь уже видел.
Самым сложным оказалось сделать грамотную ленту с горячими постами. Алгоритм ранжирования взял у реддита:https://medium.com/hacking-and-gonzo/how-reddit-ra...
Он достаточно прост, но вот правильно внедрить его, у меня пока не хватает знаний. Сейчас остановился на том, что раз в 20-30 минут крон запускает задание по ранжированию постов и проставляет им рейтинг. Допустим, так выглядит первая десятка горячих после выполнения задания:
#5 - 100 (номер поста, индекс горячести)
#1 - 95
#2 - 90
#3 - 85
#4 - 80
#6 (и т.д)
#7
#8
#9
#10
Потом пользователь запрашивает лучшие посты и ему выдают первые пять постов : 5, 1, 2, 3, 4. Пока он их смотрим, отрабатывает задание и мы получаем новый список горячих:
#7 - 120
#8 - 115
#5 - 110
#1 - 95
#2 - 90
#3
#4
#6
#9
#10
Пользователь запрашивает вторую пятерку лучших постов, и ему в ответ приходят посты #3, 4, 6, 9, 10. То есть ему будет отправлено два поста, которые он уже видел, и два поста #7 и #8 он пропустит, т.к. они уже вылезли в топ.
Конечно, можно сохранять посты, которые уже были отданы пользователю, номер сессии. А дальше скулем выгребать первые 1000 горячих постов, посты, которые уже были выданы пользователю, и отдавать первые 20 свежих постов. Но на такие подвиги, мне кажется, не хватит никакой производительности и дискового места.
Также непонятно, как хранить уже просмотренные пользователем посты. Не в скуле же?
Возможно, php и скуль уже устарели и для этой задачи логично использовать NoSQL и какой-нибудь node.js вместо php?
В общем, нужен совет знающего архитектора)

21 Авг 2019 в 06:27
311 +1
0
Ответы
Нет ответов
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 683 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир