Wstęp (analiza problemu)
Czy jako architekt lub programista platformy e-commerce kiedykolwiek doświadczyłeś stresu związanego z przygotowaniem się do takich wydarzeń jak “618” czy “Double 11”? Gdy ogromna liczba użytkowników jednocześnie spamuje przycisk “Kup teraz”, twój system zostaje poddany poważnemu testowi.
- Nadmierna sprzedaż zapasów:Konflikty między odczytami a zapisami w bazie danych doprowadziły do sytuacji, w której faktycznie wyprzedana została cała ilość towaru, mimo to udało się zrealizować zamówienia, co skutkowało stratami finansowymi i reklamacjami ze strony klientów.
- Wąskie gardło w bazie danych:Zapytania o natychmiastowe wykonanie zleceń napływały do centralnej bazy danych niczym tsunami, powodując przeciążenie procesora i liczby połączeń, a także znaczne opóźnienia w odpowiedziach, co doprowadziło do całkowitego załamania systemu.
- Zła jakość obsługi użytkownika:Strona ładuje się powoli, a po kliknięciu przycisku nie dzieje się nic. Użytkownik widzi tylko komunikat “System jest zajęty” i ostatecznie odchodzi rozczarowany.
Podsumowując w jednym zdaniu:Jeśli zmagasz się z problemami związanymi z wyprzedaniem zapasów, wąskimi gardłami w bazach danych i stabilnością systemu w scenariach wysokiej częstotliwości i szybkich wyprzedaży, ten artykuł przedstawi kompleksowe, wysokowydajne rozwiązanie oparte na TDSQL-C w chmurze Tencent.
Diagram architektury rozwiązania i jego opis.
Poniższy rysunek wyraźnie pokazuje architekturę rozwiązania do przeprowadzania wyprzedaży w ciągu kilku sekund w oparciu o TDSQL-C w chmurze Tencent.

Opis architektury: żądania użytkowników są przyspieszane przez Tencent Cloud CDN, aby załadować zasoby statyczne, a następnie są dystrybuowane przez równoważnik obciążenia CLB. Aplikacje biznesowe są wdrażane na serwerach CVM i integrowane z Tencent Cloud Redis w celu buforowania danych z częstym dostępem. Najważniejsze jest to, że kluczowe operacje zmniejszania stanów magazynowych są wykonywane bezpośrednio przez wysokowydajną i wysoce kompatybilną bazę danych TDSQL-C (w wersji PostgreSQL), co zapewnia absolutną spójność danych i wysoką wydajność.
Krótki opis procesu pracy:
- Dostęp do ruchu i jego dystrybucja:Użytkownik najpierw żąda przyspieszenia ładowania statycznych stron przez Tencent Cloud CDN, a następnie za pośrednictwem równoważenia obciążenia (CLB) żądanie jest równomiernie rozdzielane pomiędzy klastrami serwerów biznesowych znajdującymi się w zapleczu.
- Rozdzielenie odczytu od zapisu:Gdy serwer biznesowy odczytuje informacje o produktach i inne dane niekluczowe, ma pierwszeństwo dostęp do pamięci podręcznej Tencent Cloud Redis, co znacznie zmniejsza obciążenie bazy danych. W przypadku kluczowych transakcji, takich jak odliczanie zapasów, aplikacja łączy się bezpośrednio z głównym egzemplarzem TDSQL-C.
- Odliczenie podstawowe:TDSQL-C wykorzystuje zaawansowane możliwości przetwarzania transakcji i blokowania wierszy w PostgreSQL, aby wykonywać proces “wyszukiwanie w bazie danych -> sprawdzenie, czy ilość jest większa niż 0 -> odjęcie zapasów” na poziomie bazy danych w formie operacji atomowej, co zasadniczo eliminuje ryzyko nadmiernej sprzedaży.
- Wynik:Po pomyślnym odliczeniu aktualizujemy pamięć podręczną i przekazujemy użytkownikowi informację o powodzeniu. Instancja tylko do odczytu odpowiada za obsługę zapytań o zamówienia i innych zapytań o odczyt, co dodatkowo zmniejsza obciążenie bazy danych głównej.
Propozycja wartości:To rozwiązanie wykorzystuje architekturę “Redis do buforowania danych ważnych dla wydajności + TDSQL-C do zapewnienia spójności danych przy bardzo dużym natężeniu ruchu”, dzięki czemu można korzystać z wysokiej wydajności pamięci podręcznej, a jednocześnie zapewnić wysoką spójność danych w bazie przy bardzo dużym obciążeniu, co pozwala skutecznie rozwiązywać główne problemy związane z transakcjami typu flash sale.
Szczegółowe informacje o głównych produktach i komponentach.
| Kluczowe komponenty | Granie ról | Kluczowe zalecenia dotyczące konfiguracji/wyboru. | Dlaczego wybrałeś to? |
|---|---|---|---|
| Tencent Cloud TDSQL-C (wersja PostgreSQL) | Warstwa danych głównych jest odpowiedzialna za transakcje o wysokiej spójności, które umożliwiają odliczanie zapasów.To jest klucz do rozwiązania problemu wyprzedaży. | Zaleca się wybór wersji bezserwerowej, która automatycznie skaluje się w zależności od rzeczywistego wykorzystania zasobów obliczeniowych, z łatwością radząc sobie z pikami ruchu; pamięć jest rozliczana według rzeczywistej ilości danych, co zapewnia optymalne koszty. | Maxymalna wydajność:Architektura z rozdzielonymi obliczeniami i pamięcią, z wydajnością we/wy dwu- lub trzykrotnie większą niż w lokalnych dyskach SSD, gwarantuje reakcję w ciągu zaledwie kilku milisekund. 0% jest kompatybilny z PostgreSQL:Nie ma potrzeby modyfikowania kodu biznesowego, co zapewnia płynną migrację. Maxymalna dostępność:Wiele kopii danych, automatyczne przełączanie w przypadku awarii oraz dostępność usług na poziomie 99,991% TP4T. |
| Tencent Cloud Redis | Warstwa pamięci podręcznej, która buforuje szczegóły produktów popularnych wśród klientów, statusy promocji typu „kup teraz” itp.Objęcie większości żądań odczytu i ochrona bazy danych zaplecza. | Wybierz specyfikację pamięci, która zapewni szybkość odczytu i zapisu, ustaw rozsądny czas wygaśnięcia oraz wykonaj wszystkie czynności przed rozpoczęciem wyprzedaży.Rozgrzewanie pamięci podręcznej.。 | Bardzo wysoka przepustowość:Obciążenie bazy danych zostało znacznie zmniejszone dzięki obsłudze setek tysięcy zapytań na sekundę (QPS). Bogata struktura danych:Możliwe jest użycie takich struktur jak lista i zbiór, aby zaimplementować złożone mechanizmy, np. kolejkę do promocji typu „kup teraz”. Utrwalanie danych:Należy unikać sytuacji, w której ponowne uruchomienie pamięci podręcznej skutkuje utratą danych. |
| Równoważenie obciążenia w chmurze Tencent (CLB) | Portal wejściowy, który równomiernie rozdziela ogromną liczbę żądań użytkowników na wiele serwerów biznesowych znajdujących się w zapleczu. | Konfiguracja do monitorowania na czterech poziomach (TCP) lub siedmiu poziomach (HTTP/HTTPS) oraz włączenie kontroli integralności w celu automatycznego wykluczania nieprawidłowo działających serwerów zaplecza. | Bardzo wysoka wydajność:Jedna grupa może obsługiwać setki milionów połączeń i bez problemów radzić sobie z nagłym wzrostem ruchu. Wysoka dostępność:Wdrożenie w klastrze eliminuje pojedyncze punkty awarii. Elastyczna skalowalność:Można to automatycznie dostosować w zależności od natężenia ruchu. |
| Serwer w chmurze (CVM) / elastyczna skalowalność (AS) | Serwer aplikacji, który obsługuje logikę biznesową. | Za pomocą elastycznej grupy skalowania można automatycznie zwiększyć liczbę serwerów podczas promocji typu flash sale, a następnie automatycznie ją zmniejszyć po zakończeniu promocji, co pozwala zaoszczędzić na kosztach. | Elastyczna konfiguracja:Dostępnych jest wiele różnych konfiguracji obliczeniowych, z których można wybrać według potrzeb. Bezproblemowa integracja z CLB:CVM w grupie skalowalnej automatycznie rejestruje i wyrejestrowuje się w CLB. |
Streszczenie zalet rozwiązania.
- ⛓️ Zapobiega nadmiernej sprzedaży:Dzięki silnym właściwościom transakcyjnym TDSQL-C możliwe jest precyzyjne odliczanie zapasów, co pozwala zapobiegać stratom finansowym i reklamacjom klientów wynikającym z nadmiernej sprzedaży.
- ⚡ Najwyższa wydajność:Doskonała wydajność we/wy TDSQL-C w połączeniu z pamięcią podręczną Redis gwarantuje stabilną i płynną pracę systemu podczas akcji „kup teraz” oraz wygodne zakupy dla użytkowników.
- 📈 Wysoka dostępność i elastyczność:Wysoka dostępność całej sieci (CLB, grupy skalowane CVM, wiele kopii TDSQL-C), brak pojedynczych punktów awarii w systemie oraz automatyczne skalowanie w zależności od natężenia ruchu przy kontrolowanych kosztach.
- 🛡️ Płynna migracja:TDSQL-C 100% jest kompatybilny z PostgreSQL, dzięki czemu istniejące usługi można uruchomić przy minimalnych zmianach, co znacznie zmniejsza bariery techniczne i ryzyko migracji.
Scenariusze użycia i klienci, dla których są przeznaczone.
- Główny scenariusz:Chwilowe scenariusze wysokiej intensywności na platformach e-commerce, takie jak wyprzedaże, zakupy pod presją czasu, oferty specjalne z ograniczonym czasem trwania czy loterie.
- Charakterystyka klientów, dla których jest to przeznaczone:
- W biznesie występują cykliczne lub nagłe wzrosty ruchu, w związku z czym istnieje duże zapotrzebowanie na elastyczną skalowalność systemu.
- Wymagania dotyczące spójności danych są bardzo wysokie i nie można zaakceptować takich usterek biznesowych jak nadmierna sprzedaż zapasów.
- Obecnie korzystamy z bazy danych PostgreSQL i chcemy znaleźć bardziej zaawansowane i wygodniejsze rozwiązanie w zakresie chmurowej bazy danych.