Какой стек технологий выбрать для такого сайта? Дабы сразу не быть закиданным тапками, отмечу, что думаю над сайтом уже года пол. За это время успел написать основные методы 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
0
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки
Быстрое выполнение от 2 часов
Проверка работы на плагиат

Похожие вопросы

Интересные статьи из справочника

Где лучше всего студентам живется?
5683 +86
1
Какие факторы влияют на трудоустройство выпускников?
1930 +65
1
Форму набора каждый выбирает сам – по возможностям или по желанию. Спешим обрадовать: у коммерции тоже есть плюсы.
5838 +57
0
Все секреты SAT и ACT.
241 +53
0
Особенности онлайн-общения с будущим работодателем.
369 +32
0
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 28 676 авторам
Первые отклики появятся уже в течение 10 минут