Введение (анализ болевых точек)
Будучи архитектором или разработчиком платформы электронной коммерции, вы когда-нибудь испытывали тревогу по поводу сценария “второго удара” при подготовке к таким крупным акциям, как “618” и “Double 11”? Когда большое количество пользователей одновременно заходят на сайт, лихорадочно нажимая кнопку "Купить сейчас", ваша система подвергается серьезному испытанию:
- Товарные запасы перепроданы.Одновременные конфликты при чтении/записи базы данных приводили к тому, что заказы успешно формировались, несмотря на то, что фактический запас был распродан, что приводило к потере капитала и жалобам клиентов.
- Узкие места в базах данных.Шипованные запросы обрушиваются на центральную базу данных подобно цунами, вызывая резкий рост числа процессоров и соединений, увеличение задержки ответа и даже лавину, которая приводит всю систему в состояние покоя.
- Плохой пользовательский опыт.Страница загружается медленно, кнопки не реагируют, пользователь видит только сообщение “система занята” и в итоге разочарованно уходит.
Краткое содержание одним предложением.Если вы испытываете проблемы с перепродажей запасов, узкими местами в базе данных и стабильностью системы в сценариях с высоким уровнем параллелизма, то в этой статье вы найдете комплексное высокопроизводительное решение на базе Tencent Cloud TDSQL-C.
Диаграмма и обзор архитектуры решения
На рисунке ниже наглядно показана архитектура решения Tencent Cloud TDSQL-C на основе шпионов.

Описание архитектурной схемы: Пользовательские запросы загружаются через ускоренные статические ресурсы Tencent Cloud CDN, а затем распределяются с помощью балансировки нагрузки CLB. Уровень бизнес-приложений развернут на CVM и обращается к Tencent Cloud Redis в качестве кэша данных горячей точки. Что особенно важно, основные транзакционные операции по выведению запасов напрямую выполняются высокопроизводительной и высокосовместимой базой данных TDSQL-C (версия PostgreSQL), что обеспечивает абсолютную согласованность данных и высокую производительность.
Обзор рабочего процесса.
- Доступ и распределение трафика.Запросы пользователей сначала ускоряются с помощью CDN Tencent Cloud для загрузки статических страниц, а затем равномерно распределяются по кластерам внутренних серверов с помощью балансировки нагрузки (CLB).
- Разделение для чтения и записи.Когда бизнес-сервер читает неосновные данные, такие как информация о товарах, он отдает приоритет доступу к кэшу Tencent Cloud Redis, что значительно снижает нагрузку на базу данных. Для выполнения основной транзакции - вычета запасов - приложение напрямую подключается к основному экземпляру TDSQL-C.
- Основной вычет.TDSQL-C использует мощные возможности обработки транзакций PostgreSQL и блокировки на уровне строк для выполнения процесса “Запрос инвентаризации -> определение, больше ли она 0 -> вычитание инвентаризации” на уровне базы данных с помощью атомарных операций, что позволяет полностью исключить перепродажу.
- Полученные результаты.После успешного вычитания кэш обновляется и успешный результат возвращается пользователю. Экземпляр, доступный только для чтения, отвечает за запросы на чтение, такие как запросы на заказы, чтобы еще больше снизить нагрузку на основную базу данных.
Ценностное предложение.Решение с помощью архитектуры “Redis кэш горячих данных + TDSQL-C для защиты ядра транзакции”, не только воспользоваться высокой производительностью кэша, но и убедиться, что база данных в очень высокой параллельности данных согласованности способности, идеальное решение основной болевой точки второго убийства.
Основные продукты и компоненты
| основной компонент | играть роль | Основные рекомендации по конфигурации/выбору | Почему стоит выбрать его |
|---|---|---|---|
| Tencent Cloud TDSQL-C (PostgreSQL Edition) | Основной слой данных, обеспечивающий высокую согласованность транзакций для инвентаризационных вычетов.это ключ к решению проблемы перепроданности. | Рекомендуется выбрать версию Serverless, которая автоматически увеличивает и уменьшает емкость в зависимости от фактического использования вычислительных ресурсов и легко справляется с резкими скачками; плата за хранение данных взимается в соответствии с фактическим объемом данных, а стоимость является оптимальной. | Экстремальная производительность.Архитектура разделения вычислений и хранения, производительность ввода-вывода в 2-3 раза выше, чем у локальных SSD, что гарантирует миллисекундный отклик. 100% совместим с PostgreSQL.Плавная миграция без изменения бизнес-кода. Экстремальная высокая доступность.Многокопийное резервирование данных, автоматическое восстановление после отказа, доступность услуг до 99,99%. |
| Tencent Cloud Redis | Слой кэша для кэширования страниц с подробной информацией о товаре, статусе шипа и т. д.Принимает на себя львиную долю запросов на чтение и защищает внутреннюю базу данных. | Выберите характеристики типа памяти, чтобы обеспечить скорость чтения и записи; установите разумное время истечения срока действия; перед началом второгоРазогрев кэша。 | Сверхвысокая пропускная способность.Поддерживает сотни тысяч QPS, значительно снижая нагрузку на базу данных. Обогащение структур данных.Поддержка List, Set и так далее может быть достигнута за считанные секунды очередью и другой сложной логикой. Постоянство данных.Избегайте потери данных из-за перезапуска кэша. |
| Tencent Cloud Load Balancing (CLB) | Портал трафика, равномерно распределяющий массивные запросы пользователей между несколькими внутренними серверами. | Настройте его для прослушивания на уровне 4 (TCP) или 7 (HTTP/HTTPS) и включите проверку работоспособности, чтобы автоматически отклонять ненормальные внутренние серверы. | Сверхвысокий параллелизм.Один кластер может поддерживать сотни миллионов соединений, легко справляясь с потоками трафика. Высокая доступность.Кластерное развертывание устраняет единые точки отказа. Гибкое расширение и сжатие.Он может автоматически регулироваться в зависимости от расхода. |
| Облачные серверы (CVM)/эластичное масштабирование (AS) | Сервер приложений, на котором выполняется бизнес-логика. | Используйте группы эластичного масштабирования для экономии средств, автоматически увеличивая количество серверов во время всплеска и уменьшая его после всплеска на основе таких показателей, как загрузка процессора или количество одновременных подключений. | Гибкая конфигурация.При необходимости можно выбрать из широкого спектра расчетных спецификаций. Бесшовная интеграция с CLB.CVM в группе масштабирования автоматически регистрируются и снимаются с регистрации в CLB. |
Краткое описание преимуществ программы
- ⛓️ Положите конец перепродажам.Опираясь на сильные транзакционные характеристики TDSQL-C, он может реализовать точное списание запасов и избежать потерь капитала и жалоб клиентов, вызванных перепродажей с самого начала.
- ⚡ Экстремальная производительность.Экстремальная производительность ввода-вывода TDSQL-C и кэш Redis гарантируют стабильную и бесперебойную работу системы во время всплеска, а также бесперебойную работу пользователей, размещающих заказы.
- 📈 Устойчивая высокая доступность.Полносвязная конструкция высокой доступности (CLB, группа масштабирования CVM, мультикопирование TDSQL-C), отсутствие единой точки отказа в системе, возможность автоматического масштабирования в зависимости от потока трафика с контролируемой стоимостью.
- 🛡️ Плавная миграция.TDSQL-C 100% совместим с PostgreSQL, и доступ к существующим сервисам может быть получен практически без изменений, что значительно снижает технический порог и риск миграции.
Сценарии применения и применимые клиенты
- Основная сцена.Мгновенные сценарии с высоким уровнем параллелизма, такие как секунды, спешка, ограниченные по времени спецпредложения, тотализаторы и т. д. на платформах электронной коммерции.
- Применимые характеристики клиента.
- Бизнес имеет периодические или внезапные пики трафика, и существует большая потребность в эластичности системы для расширения и сокращения мощностей.
- Требования к согласованности данных настолько высоки, что такие уязвимости бизнеса, как перепродажа запасов, недопустимы.
- В настоящее время мы используем базу данных PostgreSQL и ищем более надежное и удобное решение для облачных баз данных.