Почему jiocinema пропустил Redis для рекомендаций Bloom Filters

Scylladb спонсировал этот пост.

Когда вы войдете в свой любимый потоковой сервис, первые впечатления имеют значение. Показанный контент должен мгновенно заманить вас в режим наблюдения за разлуком. Если он полон шоу и фильмов, которые вы уже видели, ваш мозг быстро переходит в «Хммм, пора ли отменить эту услугу?» режим.

На техническом уровне обеспечение свежих рекомендаций — это то, с чем сталкивается каждая потоковая платформа. Но стандартные решения не подходили для Jiocinema, известной индийской потоковой службы, известной своей доступностью и обширной библиотекой контента. Он испытывает взрывной рост со зрителями по мировой записи 620 миллионов Индийской Премьер-лиги (IPL), достигнув пика более 20 миллионов одновременных зрителей.

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

Charan Kamal из Jiocinema, разработчик backend, и Harshit Jain, инженер-программист, недавно поделились, почему они выбрали этот нетрадиционный путь, включая компромиссы более очевидных решений и логистику реализации этого с помощью Scylladb.

Посмотрите их полные технические разговоры ниже или прочитайте дальше, чтобы снимать основные моменты.

Наслаждайтесь инженерными тематическими исследованиями, как это? Выберите свое собственное приключение через 50+ технических переговоров на саммите Monster Scale (Free + Virtual). Вы можете учиться у таких экспертов, как Martin Kleppmann, Kelsey Hightower и Gwen Shapira, плюс инженеры от Discord, Disney+, Slack, Atlassian, Uber, Canva, Medium, Cloudflare и других.

Задача: «Смотреть дисконтирование» для свежих рекомендаций

Jiocinema — это ведущая потоковая платформа «сверх верхней» (OTT). В сервисе представлены лучшие индийские и международные развлечения, в том числе живые виды спорта (от крикета IPL до лалиги европейского футбола до баскетбола NBA), новые фильмы, оригиналы HBO и многое другое. Массовая библиотека контента охватывает 10 индийских языков.

Приложение Jiocinema использует настраиваемые подносы контента, такие как «потому что вы смотрели», чтобы привлекать пользователей и помочь им обнаружить новый контент. Например, после того, как пользователь завершает «Game of Thrones», платформа обычно может рекомендовать «Дом дракона» — но если пользователь уже смотрел ее, она предложит что -то еще.

Как сказал Джейн, «эти персонализированные лотки не только поддерживают задействованные клиенты, но и повышают обнаружение контента, способствуя долгосрочному взаимодействию и снижая ставки оттока. Тем не менее, персонализация имеет свои собственные проблемы, в частности, проблема рекомендации контента, который клиенты уже смотрели. Чтобы решить эту проблему, мы внедрили решение и назвали его «Смотреть дисконтирование». »

Эта услуга должна экономически эффективно удовлетворять требованиям с низкой задержкой в ​​впечатляющем масштабе (10 миллионов ежедневных активных пользователей, потребляющих сотни тысяч шоу и фильмов в день). Камал объяснил: «Упоминая размер нашей клиентской базы и каталога, нам пришлось использовать структуру данных, которая была бы эффективной, а также быстро пылающей. Несмотря на то, что мы хотим сохранить наши рекомендации свежими, мы также хотим избежать чрезмерного инженера и сделать систему чрезмерно сложной. Мы могли бы терпеть случайные ложные позитивы здесь. Таким образом, это привело нас к цветению фильтров-космические вероятностные структуры данных, предназначенные для быстрого поиска членства в наборе ».

Проблема с пользовательскими фильтрами Bloom и Redis Bloom

Хорошо, но какие фильтры цветущих фильтров лучше всего подходили?

Команда сначала рассматривала возможность создания пользовательского фильтра Bloom для хранения и обслуживания контента. Хотя это «забавное упражнение» обеспечило бы полный контроль над реализацией, оно представило значительные проблемы масштабирования. Они не верили, что простая карта фильтров цветов будет масштабироваться вертикально, чтобы идти в ногу с массивной и быстро растущей пользовательской базой Jiocinema. Горизонтальное масштабирование потребовало бы либо реализации липких сеансов, где конкретные стручки будут хранить фильтры цветения для конкретных пользователей, либо реплицировать данные по каждому стручке в системе. Хотя это было бы интересным инженерным вызовом, это не имело смысла с бизнес -точки зрения.

Следующим вариантом, который они исследовали, был Redis с возможностями Bloom Filter. Их первоначальное тестирование с помощью кластера с открытым исходным кодом выявило интересную проблему с топологией кластера Redis. Во время высокой нагрузки узлы иногда становятся горячими и запускают отказоустойчивость, пропагандируя реплики до первичных узлов. Это создало каскадный эффект, когда целые узлы в кластере стали непригодными для использования, в то время как акции первичной реплики продолжались в бесконечной цикле.

Стремясь избежать этого риска, они исследовали Redis Enterprise. Этот подход показал значительные улучшения производительности и действительно соответствовал требованиям соглашения на уровне обслуживания. Однако был улов. Бизнес Jiocinema требует задержки на уровне миллисекунды в нескольких регионахПолем

По словам Камала, «даже с Redis Enterprise мы столкнулись с выбором между активным активным развертыванием для поддержания низкой задержки или укомплектования качества обслуживания клиентов в определенных регионах. Последнее было неприемлемо для нашего варианта использования. Кроме того, Redis Enterprise наложило существенные расходы за каждую операцию и репликацию, что делает трудности оправдать возврат инвестиций этой функции для нашего бизнеса. Это привело нас к изучению Scylladb ».

Внедрение скидки на часы с Scylladb

Камаль продолжил: «Scylladb не только поддерживал фильтры Bloom из коробки, но и у нас был предыдущий опыт, используя его для различных вариантов использования персонализации. Зная его исключительную скорость и способность воспроизвести данные в несколько регионов и обслуживать клиентов из мест, близких к их происхождению, Scylladb казался комплексным решением. Это позволило нам сосредоточиться на разработке того, что имело наибольшее значение для наших клиентов, и позволило нам быстро пойти на рынок ».

Как показывает следующая диаграмма, функция дисконтирования часов была включена в два трубопровода.

Партийные процессы вычислили историю наблюдения пользователей в указанном временном окне, определяя, соответствует ли часть контента, которые можно считать «наблюдением». Если это так, система обновляет таблицу SCYLLADB с атрибутом Time-To-Live (TTL), обеспечивая, чтобы контент становился заново открываемым только после определенного количества времени.

Короткие видео (от 30 до 60 секунд видео, которые способствуют высокой вовлеченности) требуют другого лечения. Здесь контент должен быть помечен как «просмотр» немедленно, поэтому потоковая передача событий в реальном времени используется для обновления репозитория с дисконтированием часов.

Почему scylladb

Камал пришел к выводу: «Как упоминалось ранее, принятие Scylladb позволило нам определить приоритеты в разработке новых функций по созданию структур данных. Этот подход позволил нам сохранить наши узлы небольшими и поддерживать четкое разделение проблем между фильтрами цветов и фильтрацией, наблюдаемой содержимым. Непревзойденная производительность Scylladb стала очевидной, особенно когда они имели дело с высокой кардинальностью разделов и небольших размеров данных — именно характеристики нашего набора данных. TTLS облегчил уборку и разрешила обнаружение наблюдаемого контента после указанного периода. Более того, чтение с Local_quorum гарантировало, что мы сможем получить доступ к данным из ближайшего региона к пользователю, что привело к высокой пропускной способности и снижению задержек. Эта стратегическая комбинация особенностей в Scylladb в значительной степени способствовала эффективности и эффективности нашей системы ».

Scylladb разработан для обеспечения предсказуемой производительности в масштабе. Он принят организациями, которые требуют ультра-низкую задержку, даже с рабочими нагрузками, превышающими 1M OPS/SEC. Наша уникальная архитектура использует силу современной инфраструктуры — переводится на меньшее количество узлов, меньшую административную и снижающую затраты. Узнайте больше последних из Scylladb Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Синтия Данлоп пишет о разработке программного обеспечения и тестировании гораздо дольше, чем она хочет признать. В настоящее время она является старшим директором по контент -стратегии в Scylladb. Подробнее от Синтии Данлоп

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *