предисловие
Недавно была запущена новая функция PK в комнате прямого вещания.Поскольку старая функция PK была немного плохой, текущая функция PK не имеет роста доходов компании.Если нет, я приму меры и проведу реконструкцию и оптимизацию. Далее будут делиться своими идеями по разработке и некоторыми проблемами, возникшими в процессе разработки требований.
Введение функции ПК
1. ПК — это игровая функция, в середине не так много игровых состояний, и в целом это не очень сложно.
2. Два способа инициировать ПК:
- Случайный матч номер PK
- Пригласить указанную комнату PK
3. Правила пула случайных совпадений PK:
-
Из-за большой разницы в общем золоте и силе вознаграждения разных комнат, чтобы избежать ситуации, когда старший брат с миллионом долларов играет роль маленького якоря, разные совпадающие пулы разделены в соответствии с экономической мощью разных комнат прямой трансляции.
-
Приоритет отдается совпадающим комнатам с сопоставимой силой.Если совпадающий пул высокого уровня достигает определенного порога времени ожидания, он переходит к следующему раунду совпадающих пулов более низкого уровня и так далее, пока не будет достигнут период ожидания совпадения.
-
Старайтесь не продолжать сопоставление комнат, которые были сопоставлены PK в течение определенного периода времени, и старайтесь, чтобы каждое случайное совпадение было новой комнатой.
-
Соответствующий пул обновляется в режиме реального времени и может обновляться в соответствии с PK ежечасно, ежедневно, еженедельно и выигрышными сериями.
4. Правила PK для приглашения в указанную комнату:
-
Вы не можете пригласить комнату, которая не находится в эфире, не находится в комнате прямой трансляции, не включена кнопка принятия приглашения, играет в другие игры/другие состояния/играет в PK...
-
Введите идентификатор комнаты, чтобы запросить комнату, и рекомендуемая комната будет отображаться по умолчанию (PK, запрошенная и эквивалентная).
-
Приглашенная сторона может принять или отклонить приглашение. После отклонения приглашения N раз приглашающая сторона не может пригласить комнату в единицу времени. После принятия приглашения вы готовы начать ПК
-
Обратный отсчет приглашения появится после приглашения, после окончания обратного отсчета оно будет автоматически отменено, также приглашение можно отменить вручную в середине.
5. Метод подсчета/расчета/вознаграждения PK:
-
После запуска ПК активируйте назначенную панель подарков ПК, пользователь будет увеличивать очки, даря подарки в комнате ПК, а конкретные подарки будут иметь бонусные баллы.
-
После окончания ПК будет производиться расчет ПК, вестись соответствующая статистика списка, публичный экран комнаты прямой трансляции и т.д.
-
Распределяйте соответствующие награды за рейтинг PK, включая почасовые рейтинги, ежедневные рейтинги, еженедельные рейтинги и т. д.
Анализ требований ПК и их реализация
1. Случайный пул сопоставления PK
- [анализ спроса]
Есть миллионы комнат, и количество людей, которые активны и играют в PK, не превысит 500 000. Разделите пул соответствия на 5. В пуле соответствия низкого уровня, очевидно, будет намного больше людей, чем в пуле соответствия высокого уровня, поэтому обратите внимание на вместимость низкоуровневого пула сопоставления и высокий уровень случайности.
- [Метод реализации]
Случайная очередь, когда клиент запрашивает совпадение через длинное соединение, он сначала присоединяется к очереди, записывает время начала матча, а сервер запускает резидентный поток для случайного выбора двух комнат из одной очереди.В процессе обратите внимание на проблемы параллелизма, такие как сопоставление.Неудачный или нет подходящего соперника в той же очереди, чтобы повторно войти в очередь и ждать.Когда время ожидания превышает определенный порог, он будет вне очереди и перейдет на следующий уровень очереди .
2. Укажите приглашение PK
- [анализ спроса]
При приглашении в указанную комнату PK нажмите Пригласить, чтобы определить, можно ли пригласить текущее состояние комнаты и нужно ли приглашение в другую комнату.Все эти вещи должны быть проверены сервером.После истечения срока действия приглашения нажмите Принять чтобы указать, что срок его действия истек, и нажмите «Отклонить», чтобы записать количество отклонений в течение 5 минут.Всплывающее окно «Отклонить все» появляется три раза, щелкните переключатель, чтобы автоматически отключить приглашение, и всплывающее окно поможет вам включите запрос на переключение. Вы можете отменить приглашение во время приглашения. Вы можете пригласить только одного человека, прежде чем отменить приглашение. Приглашение и сопоставление не могут принимать приглашения от других.
- [Метод реализации]
После приглашения отправить трансляцию в комнату собеседника.В это время следует обратить внимание на вопрос истечения срока действия приглашения и повторных приглашений.Обратный отсчет приглашения, и открыть несколько резидентных тредов, т.к. переключение статусов и опрос этого обратного отсчета будет чаще. Операция использует распределенную блокировку для блокировки приглашенной комнаты, потому что приглашенная комната не может быть приглашена другими комнатами. В то же время, когда вы нажимаете на приглашение, вы должны заблокировать свою собственную комнату. Когда он истекает, отменяется, а другая сторона отклоняет его, он будет разблокирован и заблокирован.Время истечения срока действия может быть установлено на то же время, что и обратный отсчет приглашения, так что, если произойдет исключение, оно не будет заблокировано все время.
3. Перед началом ПК
- [анализ спроса]
После согласования/принятия ПК-приглашения обе стороны готовы войти в состояние ПК.В это время у клиента есть анимация обратного отсчета, которая будет воспроизводиться до начала ПК.В то же время необходимо извлечь последние записи и информацию о комнатах двух сторон и отображать их в комнате другой стороны. Обратите внимание на воспроизведение клиента. Анимация обратного отсчета PK может зависнуть, вызывая определенную задержку. Время воспроизведения анимации составляет около 5 с. В это время сервер должен выполнить работу по подготовке ПК в течение 5S.
- [Метод реализации]
После входа в ПК нельзя сразу перейти во внутриигровое состояние.При переходе во внутриигровое состояние будет учитываться и статистика дарения подарков.Добавьте еще одно состояние, которое готово до начала ПК, сначала подготовьте информацию о комнате обеих сторон, а затем откройте два потока задержки.Переключитесь в игровое состояние после 5S, и транслируйте и синхронизируйте комнаты обеих сторон, чтобы предотвратить зависание клиента и автоматический вход после 5S.
4. В ПК
- [анализ спроса]
В течение периода ПК люди могут входить/выходить из комнаты один за другим, поэтому информация о ПК в комнате должна регулярно синхронизироваться и не может полностью поддерживаться клиентом.Во время периода ПК владелец не может закрыть кнопку выхода ПК, но это не может помешать владельцу выйти из комнаты.Но если владелец выходит из комнаты, то это означает, что вся комната прямого эфира закрыта, и ПК должен быть автоматически терминирован.
- [Метод реализации]
После входа в ПК нельзя сразу перейти во внутриигровое состояние.При переходе во внутриигровое состояние будет учитываться и статистика дарения подарков.Добавьте еще одно состояние, которое готово до начала ПК, сначала подготовьте информацию о комнате обеих сторон, а затем откройте два потока задержки.Переключитесь в игровое состояние после 5S, и транслируйте и синхронизируйте комнаты обеих сторон, чтобы предотвратить зависание клиента и автоматический вход после 5S.
5. Подарки во время ПК
- [анализ спроса]
Когда начинается ПК, вы можете дарить подарки в комнату. После того, как подарки будут вручены, индикаторы выполнения обеих сторон должны измениться. Важно обратить внимание на время вручения подарков. обрабатывается асинхронно, будут задержки при большом количестве параллелизма, поэтому статистика должна быть основана на подсчете времени, когда дарится подарок, Не считайте по времени выполнения.Здесь есть еще одна проблема.При выполнении события вручения подарка ПК может закончиться,поэтому по статусу ПК судить нельзя.Вы должны судить о том, является ли он подарок, отправленный в процессе PK в соответствии с временем + идентификатор комнаты. .
- [Метод реализации]
В PK предварительно установите время начала и окончания PK.При вручении подарка его можно подсчитать в зависимости от того, находится ли время отправки подарка в пределах диапазона начала и окончания, и нет ли промежуточной отмены / ненормальной операции прерывания. Индикатор выполнения может транслироваться, чтобы уведомлять комнаты обеих сторон после изменения оценки PK.В то же время также необходимо использовать метод опроса для синхронизации индикатора выполнения, чтобы предотвратить появление мотыльков в середине.
6. После завершения ПК
- [анализ спроса]
После того, как ПК завершится, вам необходимо транслировать результаты ПК на общедоступный экран, сбросить состояние игры ПК, подсчитать результаты ПК, записать точки захоронения, связанные с ПК, данные о потреблении и т. д.
- [Метод реализации]
Операция завершения PK При подготовке PK к началу предварительной подготовки данных мы установили ожидаемое время окончания в это время и добавили в это время очередь с задержкой, которая должна начать операцию завершения PK в это ожидаемое время окончания. , перед выполнением Чтобы определить, было ли оно аварийно завершено, После окончания ПК данные всего поля, потребление добавленных точек и хранение хранилища.Ведь одноклассник этой операции все же больше озабочен данными потребления этого ПК.
Резюме и обзор
-
[Вопрос 1] — Общая функция PK больше зависит от Redis, а общее количество запросов в секунду очень высокое.
-
[Решение] — рассмотрите возможность добавления уровня кэша JVM, чтобы снизить общую нагрузку на производительность Redis.
-
[Вопрос 2] - Когда ПК ненормальный, скорость автоматического восстановления низкая, и иногда интерфейс зависает.
-
[Решение] - В настоящее время для восстановления используется метод обнаружения опроса. Общий объем данных опроса велик, и сокращение времени опроса не является хорошим выбором. Вы можете рассмотреть совместное обнаружение с клиентом, чтобы уменьшить накладные расходы на опрос сервер и оптимизировать алгоритм обнаружения.
-
[Вопрос 3] – Проблема с соответствием пула PK
-
[Решение] - В настоящее время существует только 5 пулов совпадений, и общие правила сопоставления относительно однообразны. В будущем более подходящие и честные противники PK будут сопоставлены в соответствии с рекомендуемыми алгоритмами, такими как хобби, категории и коэффициенты выигрыша.