Как организовать канал отдельного пользователя, состоящий из контента других пользователей?

В качестве учебного упражнения я разрабатываю небольшую игрушечную платформу для социальных сетей в стиле Facebook. Прямо сейчас мой наивный подход заключается в следующем:

  • У каждого пользователя есть список контента, который он опубликовал [1]
  • Когда пользователь запрашивает свой канал, список контента каждого друга опрашивается, чтобы упорядочить и заполнить канал

Плюсы: относительно легко реализовать Минусы: вычислительно дорого

Альтернативный дизайн выглядит следующим образом:

  • У каждого пользователя есть "список каналов", который содержит идентификатор каждого сообщения, которое он может видеть, наряду с идентификатором, обозначающим позицию этого элемента в ленте этого конкретного пользователя [2][3].
  • Список фидов каждого пользователя заполняется через схему pub-sub, которая здесь может не подходить.
  • По запросу на канал серверная часть извлекает список каналов (до определенного момента), а затем разыменовывает пароли идентификаторов элементов списка каналов (возвращая их все сразу).

Оба эти решения кажутся выполнимыми, однако я знаю, что они не очень масштабируемы [4]. Существуют ли похожие публичные алгоритмы, к которым я мог бы обратиться за руководством?


Дополнительные примечания: обновления будут передаваться с помощью опроса - опрос будет включать все идентификаторы элементов канала для элементов, которые в данный момент отображаются в окне канала пользователя. Я работаю над механизмом для

[1] У меня есть некоторая логика подкачки, предназначенная для обработки пользователем, создающим значительный объем контента.

[2] У меня также есть некоторая логика подкачки, запланированная для этого.

[3] Этот метод идентификации также позволяет довольно легко обновлять (пользователь A в настоящее время просматривает канал до точки x, однако верхняя часть его списка находится в точке x+y, поэтому обновление доступно.

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

0 ответов

Другие вопросы по тегам