Автор: Xianyu Technology - Сегодня, Youyou
введение
После нескольких поколений разработки и создания система сообщений Xianyu в настоящее время стабильно поддерживает объем сообщений на уровне 100 миллионов. В процессе построения системы сообщений мы прошли путь от простого к сложному, от проблемного к сломанному, и каждое технологическое изменение направлено на лучшее решение проблем, с которыми сталкивается текущий бизнес. «Вспоминать прошлое, чтобы выпить на мосту у Полуденного моста, сидеть посередине - это в основном героическое», в этой статье записаны технологические изменения системы сообщений Сяньюй, чтобы на этой основе получить больше опыта.
Xianyu News 1.0: на начальном этапе бизнеса минимально доступный
**Предыстория: **В 2014 году было запущено независимое приложение «Xianyu» для незанятых транзакций, и основная ссылка приложения была завершена на первом этапе, включая выпуск продукта → поиск → сведения о продукте → сеанс обмена мгновенными сообщениями → транзакция. Как стартовое приложение, бизнес должен быть запущен как можно скорее, чтобы проверить эффект, а техническая конструкция должна завершить построение системы новостей Xianyu с нуля.
Как система обмена мгновенными сообщениями, возможность минимизации включает в себя
1. Хранение сообщений: сессия, дайджест, сообщение
2. Синхронизация сообщений: push, pull
3. Канал сообщений: долгое соединение, push производителя
В отличие от общей модели обмена мгновенными сообщениями, разговор Xianyu использует товар в качестве основного тела, а человек + человек + товар в качестве элемента для построения разговора.Фишу требуется много времени, чтобы полностью построить свою собственную систему обмена сообщениями. Чтобы обеспечить эффективный запуск бизнеса, выбор технологии позволяет максимально повторно использовать возможности существующей системы и избежать повторного создания колес. так,
1. Модель данных и базовое хранилище зависят от системы личных сообщений Департамента Дао для построения;
2. Что касается сбора данных сообщения, клиент получает весь объем данных сообщения с сервера.
3. Протокол связи использует SDK и mtop
Общая архитектура показана на рисунке ниже.Быстрая доставка в этом режиме гарантирует, что бизнес будет сведен к минимуму и доступен.
Xianyu News 2.0: высокие темпы роста пользователей, перестройка системы новостей Xianyu
задний план:Количество пользователей Xianyu быстро превысило 100 Вт, а количество вызовов службы сообщений резко возросло. Обычно сбор данных сообщения обратной связи с пользователем зависает, появляется пустой экран и отправляется большое количество нажатий, а система часто выдает аварийные сигналы.
Причина этих проблем: В режиме сообщения 1.0 полный объем данных сообщения получается в режиме извлечения, а чистый пользовательский интерфейс клиента не сохраняет данные.
1. Когда пользователю необходимо просмотреть данные сообщения, успех извлечения данных зависит от сети и скорости доступа к данным, что иногда вызывает зависания и белые экраны.
2. Централизованное хранилище данных, чтение намного больше, чем запись.При высоком параллелизме нагрузка на сервер слишком велика.Например, 1W пользователей общаются онлайн одновременно.Согласно текущей архитектуре, можно вытащить полный объем сообщений одновременно, и можно предположить оценку 5Wqps.Можно предположить, что количество одновременных пользователей онлайн-чата При 10 Вт можно представить себе нагрузку на сервер
Основываясь на вышеуказанных проблемах, мы решили перестроить систему обмена сообщениями, чтобы в будущем она справлялась с большим приростом пользователей. Возврат к основным функциям системы обмена мгновенными сообщениямиМодель хранения сообщений:
Модель сеанса: уникальный сеанс идентифицируется владельцем, идентификатором элемента, пользователем, типом сеанса, а для поддержки персонализации добавляются расширенные атрибуты.
Сводная модель: как представление сеанса пользователя, разные пользователи одного и того же сеанса могут быть представлены индивидуально, а уникальная сводка идентифицируется по идентификатору пользователя и идентификатору пользователя.
Модель сообщения: состоит из отправителя, содержимого сообщения, версии сообщения и sid. sid+message version однозначно идентифицирует сообщение
Командная модель: это двустороннее соглашение, которое выдается сервером и выполняется клиентом. Например, команда «Не беспокоить», «Удалить» и т. д.
канал сообщений:
Онлайн-канал: используйте полнодуплексный канал с низкой задержкой и высоким уровнем безопасности, предоставляемый длинным соединением Taobao Wireless ACCS.
Автономный канал: используйте платформу AGOO для отправки сообщений Taobao, которая скрывает сложность подключения различных основных производителей и напрямую предоставляет услуги бизнес-системе.
Модель синхронизации сообщений:
1. Клиент создает базу данных и сохраняет данные сообщения.Когда данные сообщения хранятся на локальном устройстве, синхронизация сообщений оптимизируется от полного извлечения до комбинированного режима полной + добавочной синхронизации. Добавочная синхронизация: клиент хранит информацию о местоположении сообщения и синхронизирует только добавочные сообщения, сравнивая их с последним местоположением сервера; полная синхронизация: когда пользователь удаляет и переустанавливает или разрыв в расположении слишком велик, клиент извлекает всю сумму исторических данных сообщений, выполнить реконструкцию данных на конце
2. Сервер создает кольцо домена личных сообщений (модель входящих сообщений) для синхронизации добавочных данных с клиентом. В то же время проблема большего количества чтения и меньшего количества записей в версии сообщения 1.0, давление чтения и записи уравновешивается распространением записи в кольце личных доменов.
На следующем рисунке показан процесс сообщения от отправки до получения и поток выполнения сервера и клиента.
Как показано на рисунке, предполагается, что Ua отправляет сообщение в Ub, и запись сообщения распространяется на соответствующие доменные кольца Ua и Ub. 1. Когда клиент находится в сети, местоположение полученного сообщения = версия домена на текущем клиенте + 1, и локальная база данных сообщений может быть объединена 2. Когда клиент находится в автономном режиме, отправляются только автономные push-уведомления. пользователь снова находится в сети.Для синхронизации данных сервер определяет, запускать ли добавочную синхронизацию или полную синхронизацию.Если разница версий кольца домена меньше порогового значения, после добавочной синхронизации выполняется слияние локальной базы данных сообщений.Когда версия кольца домена разница превышает пороговое значение, выполняется полное извлечение сообщения. , выполните сквозную реконструкцию данных
Вся логика синхронизации основана на кольце домена сообщений Xianyu. Кольцо домена можно рассматривать как папку входящих сообщений пользователя с фиксированной емкостью. Все сообщения, отправляемые пользователю, будут синхронизироваться с кольцом его домена.Хранение доменного кольца: доменное кольцо должно поддерживать высокую скорость одновременного чтения и записи данных, что реализуется с помощью распределенной системы хранения KV tair от Alibaba.Емкость доменного кольца: чтобы уменьшить полный объем синхронизации сообщений, спланируйте емкость личного доменного кольца на основе среднего количества сообщений, которые пользователям необходимо синхронизировать при следующем входе в Xianyu. В то же время используйте цикл FIFO для покрытия исторических данных.Версия доменного кольца: Текущее местоположение сообщения пользователя.Когда сообщение поступает в кольцо личного домена, версия кольца домена строго и непрерывно увеличивается с помощью счетчика tair, который используется для оценки полной и добавочной синхронизации.
После завершения вышеуказанной конструкции у Xianyu появилась собственная независимая система обмена сообщениями, проблемы, возникающие в настоящее время, были устранены, а пользовательский опыт значительно улучшился.
Xianyu News 3.0: при быстром развитии бизнеса стабильность системы гарантирована
задний план:С обогащением бизнес-экосистемы Xianyu типы чатов и содержание сообщений продолжают расширяться.В то же время, с быстрым ростом DAU, проблемы общественного мнения, такие как неполученные сообщения и задержки сообщений от пользователей, становятся все более заметными.
анализ проблемы:
1. Процесс приложения Xianyu не имеет эффективного механизма поддержания активности.После того, как приложение вернется в фоновый режим, процесс вскоре будет приостановлен системой, что приведет к прерыванию длинных соединений. В это время сообщение передается через канал производителя, а производительность канала производителя в режиме реального времени низкая, а установка приоритета для отправки сообщения отличается, что заставляет пользователя воспринимать задержку сообщения.
2. При отправке онлайн-сообщения accs средняя задержка короткая, но есть ложное соединение, а ссылка для отправки текущего сообщения не имеет механизма подтверждения, что заставляет сервер думать, что сообщение было отправлено, но клиент на самом деле не получает его, сообщение нельзя увидеть, пока приложение не откроется в следующий раз, и пользователь воспринимает задержку сообщения. Причина фейкового подключения: пользователь уходит в фон, долгое аккс соединение прерывается, но обновление статуса устройства задерживается.
3. В текущем режиме push (accs push) и режиме pull (mtop) синхронизации сообщений клиент не изолирован и обрабатывается асинхронно, что в некоторых крайних случаях приводит к ненормальной обработке базы данных сообщений, что приводит к потере сообщения. Например, после выхода в сеть пользователь постоянно получает несколько сообщений, и одно из них вызывает доменную черную дыру, и при восстановлении данных в конце синхронизации сообщений существует небольшая вероятность того, что будет обработана ошибка.
4. Большинство проблем с онлайн-новостями обнаруживаются по отзывам общественного мнения.Например, если новости запутаны, система не воспринимает их, не предпринимает никаких мер по исправлению положения и не может устранить неполадки, и ее можно исправить только с помощью версии.
5. Бизнес постоянно обогащается, и инкубируется учетная запись службы, основанная на системе сообщений, контент-маркетинге апплета, группе сообщений и т. Д. Различные ссылки для отправки сообщений совместно используют доменное кольцо и хранилище данных, что вызывает проблемы со стабильностью. . Например, сообщения личного доменного кольца включают в себя чаты мгновенных сообщений и маркетинговые сообщения. Чаты мгновенных сообщений инициируются пользователями и должны обеспечивать надежное поступление; в то время как маркетинговые сообщения обычно отправляются системой пакетами через маршрутные автобусы и т. д., сообщение объем большой, а tps высокий, что влияет на стабильность сервисов обмена мгновенными сообщениями.
На основании вышеуказанного анализа мы делаем специальные решения:Повторная отправка сообщений и двухтактная изоляцияACK: гарантирует своевременное получение сообщения. Когда сервер передает сообщение accs по нисходящей линии связи, он добавляет сообщение в очередь повторных попыток и задерживает повторную попытку.После того, как клиент получает сообщение accs и успешно его обрабатывает, он возвращает подтверждение на сервер.Получив подтверждение, сервер обновляет статус прибытия сообщения и завершается. Повторите попытку, чтобы избежать ложных подключений или нестабильности сети.
Повторная передача: определите, когда следует повторно передать сообщение в соответствии с политикой отложенной повторной передачи, чтобы обеспечить детерминированное прибытие сообщения. Стратегия повторной передачи с адаптивной задержкой означает, что новое сообщение сначала определяет состояние сети устройства через 4 фиксированных коротких задержки N секунд, а затем увеличивает стратегию задержки с фиксированным размером шага M в соответствии с состоянием сети. кратчайшее время. Сообщение успешно доставлено с использованием наименьшего количества повторных передач в пределах .
Очередь сообщений: на терминале введена очередь сообщений для обработки сообщений, чтобы обеспечить точность обработки сообщений. При этом выполняется двухтактная изоляция для обеспечения упорядоченного потребления очереди и решается проблема параллельной обработки ошибок слияния данных сообщения в сложных условиях.
разделение хранилища данных
Более половины сообщений, отправляемых Xianyu каждый день, являются маркетинговыми сообщениями.Отправка маркетинговых сообщений имеет очевидные пики и спады.Пиковый период вызывает дрожание базы данных сообщений и влияет на сообщения IM. Бизнес-изоляция выполняется для хранения сообщений, дайджестов и кольцевых хранилищ доменов, чтобы соответствовать различным требованиям к стабильности в различных бизнес-сценариях.
1. IM-сообщения требуют чрезвычайно высоких гарантий стабильности, а их сообщения и дайджесты продолжают храниться в mysql.
2. Срок хранения маркетинговых сообщений короткий, а требования к стабильности ниже, чем у IM, и для хранения используется Lindorm. Lindorm — это мультимодельная облачная служба базы данных с такими преимуществами, как низкая стоимость, настраиваемый TTL и горизонтальное расширение емкости.
Онлайн-обнаружение и устранение проблем
Ключевым элементом для обеспечения стабильности является мониторинг различных основных показателей, и мониторинг должен сначала иметь источник данных, похоронить ключевые узлы связи сервер + клиент и выполнять очистку и расчет в реальном времени через блинк на основе группового UT и SLS. , и, наконец, унифицированные и стандартизированные данные журнала отправляются в SLS для мониторинга в реальном времени и устранения неполадок связи. Основная цель системы сообщений — обеспечить своевременную отправку, получение и получение пользовательских сообщений, поэтому мы отслеживаем стабильность системы, рассчитывая процент успешных отправок, коэффициент поступления и задержку сообщений. Кроме того, для решения проблемы сложности исследования общественного мнения пользователей
1. Мы разработали набор инструкций.Соглашаясь с протоколом инструкций, сервер отправляет инструкции указанному пользователю, а клиент выполняет соответствующие инструкции для сообщения об аномальных данных для повышения эффективности расследования.
2. Расширенные команды, такие как принудительная полная синхронизация, исправление данных и т. д., для целенаправленного решения проблемы данных пользовательских сообщений.По сравнению с прошлым, серьезные ошибки могут быть решены только путем удаления и переустановки.Этот метод, очевидно, больше дружественный интерфейс.
После серии спецуправлений техническое общественное мнение упало на 50%, система стабильности сообщений была построена с 0 до 1, а пользовательский опыт был дополнительно улучшен.
Наконец: при огромном количестве пользователей погоня за максимальным NPS
Xianyu — это приложение для транзакций электронной коммерции, в котором обмен мгновенными сообщениями является предварительной ссылкой транзакции. Опыт работы с продуктом IM сильно влияет на эффективность транзакций пользователя. Некоторое время назад был проведен опрос пользователей, и NPS Xianyu IM был ниже чем ожидалось (NPS — показатель лояльности пользователей). = Промоутер% — Критик], из отзывов пользователей:
1. Некоторые пользователи предъявляют высокие требования к функциям продукта, таким как поиск сообщений, группировка и т. д.
2. Большинство пользователей с трудом понимают нарушения в процессе отправки сообщений 3. По-прежнему остается много сообщений обратной связи с общественностью, которые невозможно получить или отложить
Сопоставленная с текущей системой обмена сообщениями Xianyu, наша системная архитектура по-прежнему имеет много областей, которые нуждаются в постоянном улучшении. Типичными проблемами являются избыточность протоколов синхронизации, из-за чего легко вызвать проблемы в процессе итерации спроса, влияние отсутствия эффективного механизма keep-alive на мгновенную доставку сообщений, невозможность получения офлайн-сообщений на нишевых моделях. , а также раздутая онлайн-база данных за годы накопления данных, что влияет на скорость итерации и NPS бизнеса Xianyu. Принимая повышение NPS в качестве основной цели, когда Xianyu News 4.0 находится в процессе...