Wstęp (analiza problemu)
Drodzy architekci i deweloperzy e-commerce, gdy rozpoczynają się wielkie kampanie promocyjne, np. “11.11” czy “618”, i napływają fale użytkowników, czy kiedykolwiek zastanawialiście się nad następującymi problemami?
- System natychmiast uległ awarii:Gdy tylko rozpoczęła się promocja „sekundowe wyprzedaże”, miliony użytkowników kliknęły jednocześnie, co spowodowało natychmiastowy wzrost ruchu i przeciążenie bazy danych. Cała platforma przestała działać, a strony nie można było otworzyć, co skutkowało ogromnymi stratami w transakcjach.
- Problem z nadmierną sprzedażą zapasów:W przypadku równoległych żądań tradycyjna baza danych ujawnia problemy z wydajnością blokad odczytu i zapisu, co może łatwo prowadzić do błędów przy odliczaniu zapasów, “nadmiernej sprzedaży” i poważnych strat finansowych oraz skarg klientów.
- Bardzo powolna reakcja:Nawet gdy system nie uległ całkowitemu awarii, podstawowe połączenia transakcyjne były powolne, a użytkownicy czekali dziesiątki sekund na realizację zamówień, co skutkowało bardzo złą jakością obsługi i wysokim wskaźnikiem porzucania koszyków.
- Koszty zasobów a problem elastyczności:Duża liczba maszyn zakupionych w celu sprostania szczytowi obciążenia pozostaje niewykorzystana zaraz po zakończeniu wyprzedaży, co skutkuje bardzo niskim wykorzystaniem zasobów i wysokimi kosztami. Ręczne skalowanie ma niską wydajność i nie jest w stanie sprostać nagłym wahaniom ruchu.
Jeśli zastanawiasz się, jak zaprojektować system sprzedaży w promocji, który poradzi sobie z milionami żądań na sekundę, zapewni spójną integrację danych i będzie ekonomiczny, to sprawdzone w praktyce rozwiązanie architektoniczne Tencent Cloud da ci jasną i niezawodną odpowiedź.
Diagram architektury rozwiązania i jego opis.
Poniższy rysunek przedstawia podstawową architekturę i proces przepływu danych w rozwiązaniu Tencent Cloud SecKill:

Główną koncepcją projektową tego rozwiązania jest to, że...“Hierarchiczna interceptacja, przetwarzanie asynchroniczne i ostateczna spójność”Jego proces pracy wygląda następująco:
- 1.Dostęp do przepustowości i jej rozdzielanie:Użytkownik prosi najpierw o przeprowadzenie weryfikacji.Globalne przyspieszanie aplikacji (GAAP)lubCDNSzybko dotrzyj do wejścia, przechodząc przezRównoważenie obciążenia (CLB)Równomierne rozprowadzenie.
- 2.Optymalizacja i walidacja żądań odczytu:Większość zapytań (np. o szczegóły produktu, sprawdzanie stanu magazynowego) jest kierowanych bezpośrednio do wysokowydajnych systemów.RedisPamięć podręczna. Jednocześnie poprzezFunkcje w chmurze (SCF)Realizacja lekkiej weryfikacji uprawnień (np. kodów weryfikacyjnych) oraz blokowanie złośliwych żądań.
- 3.Napisz prośbę o redukcję szczytów i asynchroniczność:Po pomyślnej weryfikacji główny żądanie flash sale nie działa bezpośrednio na bazie danych, lecz natychmiast zapisuje informacje.Kolumna informacyjna CKafkaW ten sposób można szybko przywrócić użytkownikom status “w kolejce” i spłaszczyć gwałtowny wzrost zapotrzebowania, dzięki czemu znacznie zmniejszy się presja na zaplecze.
- 4.Przetwarzanie zamówień i trwała archiwizacja danych:Usługa przetwarzania zamówień w back-endzie konsumuje wiadomości z Kafka w równomiernym tempie i wykonuje operacje na bazie danych.TencentDB dla MySQLZarządzanie zapasami, tworzenie zamówień i aktualizacja pamięci podręcznej w odniesieniu do produktów wymienionych w pkt 1–3 powyżej.
- 5.Powiadomienie o wynikach:Po zakończeniu przetwarzania użytkownik zostanie powiadomiony o wyniku ostatecznego zamówienia za pośrednictwem WebSocket lub długotrwałego pollingu.
Wartość proponowanego rozwiązania polega na tym, że:Użyto go do całkowitego ograniczenia szczytów ruchu za pomocą kolejki wiadomości (CKafka), obsługi większości obciążenia odczytowego poprzez pamięć podręczną (Redis) oraz elastycznego reagowania na zapotrzebowanie na obliczenia za pomocą automatycznej skalowalności (AS), co pozwoliło chronić wrażliwe bazy danych relacyjnych i zapewnić stabilność oraz wydajność całego systemu przy dużym natężeniu ruchu.
Szczegółowe informacje o głównych produktach i komponentach.
| Nazwa komponentu. | Granie ról | Kluczowe zalecenia dotyczące konfiguracji/wyboru. | Dlaczego wybrałeś to? |
|---|---|---|---|
| Chmurowa baza danych Redis. | Pamięć podręczna i rdzeń licznika.Odpowiada za odczytywanie informacji o zapasach przed rozpoczęciem wyprzedaży, wstępne odliczanie zapasów w trakcie wyprzedaży oraz funkcjonowanie licznika, co znacznie zmniejsza obciążenie bazy danych. | - Wybór wersji:Wybierz wersję z pamięcią, aby uzyskać najwyższą wydajność. - Planowanie pojemności:Należy zarezerwować bufor o pojemności co najmniej 301 TP4T, aby sprostać szczytowym obciążeniom. - Modele wdrożenia:Aby zapewnić wysoką dostępność, należy użyć wersji master-slave lub wersji klastra. | Ma bardzo wysoką wydajność i obsługuje setki tysięcy operacji odczytu i zapisu na sekundę. Zapewnia operacje atomowe (np. DECR), gwarantując dokładność zmniejszania zapasów, i jest najlepszym rozwiązaniem do obsługi scenariuszy związanych z wysoką częstotliwością odczytów i licznikami. |
| Kolumna informacyjna CKafka | Kluczowe elementy redukcji szczytowego natężenia ruchu i rozdzielenia go na części składowePrzetwarzamy wszystkie żądania dotyczące ofert typu „kup teraz” i przekształcamy nagłe, chwilowe przepływy ruchu w asynchroniczny, równomierny strumień wiadomości, chroniąc tym samym system przetwarzania zamówień przed przeciążeniem. | - OsSzacujemy liczbę partycji tematycznych i pojemność dysku na podstawie liczby produktów dostępnych w promocji i szczytowej wartości QPS. - Strategy utrzymania: Ustaw rozsądny czas przechowywania wiadomości, aby uniknąć przepełnienia dysku. | Wysoka przepustowość, niskie opóźnienia i zgodność z protokołem Apache Kafka umożliwiają łatwą obsługę milionów transakcji na sekundę (TPS). Duża pojemność bufora wiadomości gwarantuje, że żadne żądania nie zostaną utracone, nawet gdy ruch przekroczy oczekiwania. |
| Elastyczna skalowalność AS | Rdzeń elastycznego planowania zasobów obliczeniowych.Automatyczne zwiększanie lub zmniejszanie liczby serwerów przetwarzających zamówienia w zależności od wielkości kolejki wiadomości w Kafka lub obciążenia procesora. | - Strategia elastyczna:Ustaw strategię skalowania alertów w oparciu o liczbę wiadomości i szybko zwiększ skalę działania. - Czas chłodzenia:Ustaw rozsądny czas chłodzenia, aby uniknąć częstego rozszerzania i kurczenia się. | Umożliwienie “na żądanie” korzystania z zasobów obliczeniowych, automatyczne skalowanie na większą skalę podczas szczytowego obciążenia i automatyczne skalowanie w dół po jego zakończeniu znacznie zmniejsza koszty. |
| Serwer w chmurze CVM | Rdzeń obliczeń logiki biznesowejSłuży do uruchamiania usług przetwarzania zamówień, usług walidacji biznesowej itp. | - Produkcja lustrzanek:Nagrania zawierające kod biznesowy można przygotować z wyprzedzeniem, co ułatwia szybkie wdrożenie grupy skalowalnej. - Typ przykładu:Wybierz instancję zoptymalizowaną pod kątem obliczeń, aby zapewnić szybką obsługę zamówień. | Zapewnia stabilną, niezawodną i elastyczną moc obliczeniową, a także płynną integrację z takimi produktami jak AS i CLB, stanowiąc podstawę dla kodu biznesowego. |
| Równoważenie obciążenia CLB | Kluczowa kwestia dystrybucji ruchu.Równomiernie rozdziela ogromną liczbę żądań użytkowników na wiele serwerów biznesowych znajdujących się w zapleczu, co pozwala uniknąć przeciążenia pojedynczego punktu. | - Algorytm dyspozytorski:Stosuje się algorytmy takie jak ważona rotacja (WRR). - Badania medyczne:Uruchom kontrolę zdrowia, aby automatycznie wyeliminować wszelkie nietypowe elementy w środowisku back-end. | Kluczowym elementem w osiągnięciu skalowania poziomego jest poprawa dostępności i skalowalności usług. |
| Funkcje w chmurze SCF | Lekkie jądro do przetwarzania logiki.Służy do realizacji takich lekkich funkcji logicznych, jak ograniczenie częstotliwości, sprawdzanie uprawnień użytkownika (np. czy brał już udział w wydarzeniu) oraz weryfikacja kodu captcha. | - Czas przekroczenia limitu:Ustaw rozsądny czas oczekiwania na wykonanie funkcji. - Konfiguracja pamięci:Konfiguruj odpowiednią pamięć w zależności od złożoności logiki. | Architektura bezserwerowa nie wymaga zarządzania maszynami, a opłaty są naliczane za rzeczywistą liczbę wykonanych operacji. Doskonale sprawdza się w przypadku chwilowych szczytów obciążenia i charakteryzuje się bardzo niskimi kosztami. |
Streszczenie zalet rozwiązania.
- ⚡ Najwyższa wydajność, miliony jednoczesnych połączeń:Pamięć podręczna Redis w połączeniu z asynchronicznym przetwarzaniem w Kafka z łatwością obsługuje miliony żądań odczytu i zapisu na sekundę, zapewniając płynną i stabilną pracę systemu.
- Optymalizacja kosztów i elastyczna skalowalność:Automatyczna strategia skalowania w oparciu o ilość wysyłanych wiadomości umożliwia precyzyjne dostarczanie zasobów obliczeniowych, a po okresie szczytowego obciążenia następuje automatyczne ich zwolnienie, co pozwala zredukować koszty o ponad 501 TP4T.
- ?️ Spójne dane i zapobieganie wyprzedaży:Dzięki atomowym operacjom Redisa i transakcjom bazodanowym można zapewnić absolutną dokładność przy odliczaniu zapasów w scenariach wysokiej częstotliwości, co pozwala całkowicie wyeliminować problem z nadmierną sprzedażą.
- Wysoka dostępność i niezakłócona działalność biznesowa:Wszystkie kluczowe komponenty (Redis, Kafka, CLB) oferują wysoką dostępność i automatyczne przełączanie na wypadek awarii, co zapewnia nieprzerwaną ciągłość działania podczas dużych promocji.
- Szybkie wdrożenie i prosta eksploatacja i konserwacja:Zostało to zbudowane w oparciu o dojrzałe produkty Tencent Cloud, dzięki czemu nie trzeba tworzyć złożonej infrastruktury pośredniczącej. Rozwiązanie jest gotowe do użycia i znacznie zmniejsza złożoność procesu tworzenia i utrzymania.
Scenariusze użycia i klienci, dla których są przeznaczone.
To rozwiązanie doskonale nadaje się do następujących scenariuszy biznesowych i dla następujących klientów:
- Scenariusze użycia:
- Promocje typu flash sale w e-commerce:Na przykład oferty czasowe, limitowane oferty specjalne czy premiery popularnych produktów.
- Regularne wyprzedaże:Na przykład w celu zakupu kuponów, biletów na pociągi, biletów na koncerty itp.
- Duże promocje:Na przykład takie wydarzenia jak Double 11 czy 618, podczas których ruch jest kilkadziesiąt razy większy niż normalnie.
- Klientów, których to dotyczy:
- Wszystkie platformy e-commerce i systemy transakcyjne online, które borykają się z problemem dużego ruchu.
- Sprzedawcy, którzy planują duże kampanie promocyjne, obawiają się, że ich systemy nie będą w stanie poradzić sobie z nagłym wzrostem ruchu.
- Zespoły techniczne, które chcą przenieść się z własnej złożonej infrastruktury do usług hostingowych w chmurze, aby obniżyć koszty eksploatacji i utrzymania.
Powiązane linki
- Link do oficjalnej strony produktu:
- Link do darmowej wersji próbnej:
- Link do tutoriala technicznego:
- Link do rozwiązania: