Sistem trafiğini zirveye çıkarmak için ne yapmalıyım?

Özet: Spike sisteminin trafik izleme grafiğine bakarsanız, bunun düz bir çizgi olduğunu ve ani yükselmenin ilk saniyesinde çok düz bir çizgi olduğunu görürsünüz, çünkü ani artış isteklerinin zaman içinde yoğunlaşmasıdır. Zamanda gelin. Bu şekilde, özellikle yüksek bir trafik zirvesine yol açacaktır ve kaynak tüketimi anlıktır.

Spike sisteminin trafik izleme grafiğine bakarsanız, bunun düz bir çizgi olduğunu ve ani yükselmenin ilk saniyesinde çok düz bir çizgi olduğunu görürsünüz, çünkü ani artış isteklerinin zaman içinde yoğunlaşmasıdır. Zamanda gelin. Bu şekilde, özellikle yüksek bir trafik zirvesine yol açacaktır ve kaynak tüketimi anlıktır.

Ancak ani artış senaryosu için, ürünü nihayet kapabilecek kişi sayısı sabittir, bu da 100 kişi ile 10.000 kişinin sonuçlarının aynı olduğu anlamına gelir.Eşzamanlılık ne kadar yüksek olursa, geçersiz istekler o kadar fazla olur.

Ancak iş açısından bakıldığında, spike etkinliği daha fazla insanın katılacağını, yani başlamadan önce, umarım daha fazla kişinin sayfayı ziyaret edeceğini umar, ancak gerçek sipariş verildiğinde, daha fazla ani talep daha iyi olmaz. Bu nedenle, daha fazla eşzamanlı isteği geciktirmek için bazı kurallar tasarlayabiliriz ve hatta bazı geçersiz istekleri filtreleyebiliriz.

Neden tepe kesim

Neden zirveleri kesmek istiyorsun? Veya zirvelerin dezavantajları nelerdir?

Sunucunun işlem kaynaklarının sabit olduğunu ve onu kullandığınız ya da kullanmadığınız işlem gücünün aynı olduğunu biliyoruz, bu nedenle bir zirve varsa, onu idare etmek için çok meşgul olmak kolaydır ve boştayken uğraşacak hiçbir şey yoktur. Ancak, hizmet kalitesini sağlama ihtiyacı nedeniyle, işleme kaynaklarımızın çoğu yalnızca yoğun saatlere göre tahmin edilebilir ve bu da kaynak israfına yol açar.

Bu, sabahın en yoğun ve akşamın en yoğun olduğu sorunlardan kaynaklanan yoğun değişim ve trafik kısıtlaması için bir çözüme sahip olmak gibidir.

En yüksek düzeyde kesintinin varlığı, sunucu işlemeyi daha kararlı hale getirebilir ve sunucu kaynak maliyetlerinden tasarruf sağlayabilir.

Ani artış senaryosu için, en yüksek kırpma, bazı geçersiz istekleri azaltmak ve filtrelemek için kullanıcı isteklerinin gönderilmesini daha fazla geciktirmektir. "Mümkün olduğunca az istek" ilkesini izler.

Bugün, trafiğin tepe noktasını azaltmaya yönelik bazı operasyonel fikirleri tanıtacağım: sıraya koyma, soruları yanıtlama ve katmanlı filtreleme.

Bu yöntemlerin tamamı tahribatsızdır (yani kullanıcının isteği kaybolmaz) Tabii ki, mevcut sınırlama ve makine yük koruması gibi daha sonra sunacağımız bazı kararlılık yöntemleri de dahil olmak üzere bazı kayıplı uygulamalar vardır. Bazı zorunlu önlemleri beklemek, en üst düzeyde tıraş koruması amacına da ulaşabilir, elbette bunlar son çare olan bazı önlemler, bu nedenle burada sınıflandırılmamışlardır.

kuyruk

Trafiğin zirvesini azaltmak için, düşünülmesi en kolay çözüm, anlık trafiği tamponlamak için bir mesaj kuyruğu kullanmak, doğrudan eşzamanlı aramayı asenkron bir dolaylı itmeye dönüştürmek ve bir uçta anlık trafik tepe noktasını kabul etmek ve diğer uçta düzeltmek için bir kuyruk kullanmaktır. Haberleri dışarı itin. Burada mesaj kuyruğu, sel felaketlerini azaltma amacına ulaşmak için yukarı akış selini bloke eden ve aşağı nehirdeki tepe akışı azaltan bir "rezervuar" gibidir.

Anlık trafiği tamponlamak için mesaj kuyruklarını kullanmanın çözümü aşağıdaki şekilde gösterilmektedir:

Anlık trafiği arabelleğe almak için mesaj kuyruklarını kullanın

Bununla birlikte, trafik zirvesi, mesaj kuyruğu işlemenin üst sınırına ulaşmak için bir süre devam ederse, örneğin, makinenin mesaj biriktirme listesi, depolama alanının üst sınırına ulaşırsa, mesaj kuyruğu da boğulur, böylece aşağı akış sistemi korunsa da, doğrudan Düşme talebinde bulunmak pek bir fark yaratmaz. Tıpkı bir selin çıkması gibi, bir rezervuar olsa bile, yardımcı olmayacaktır.

Mesaj kuyruklarına ek olarak, aşağıdakiler gibi pek çok benzer kuyruk yöntemi vardır:

  • Kilitlemek ve beklemek için iş parçacığı havuzunu kullanmak da sıraya koymanın yaygın bir yoludur;
  • İlk giren ilk çıkar ve ilk giren son çıkar gibi yaygın bellek sıralama algoritmalarının uygulanması;
  • İsteği bir dosyaya dizgeleştirin ve ardından isteği geri yüklemek için dosyayı sırayla okuyun (örneğin, MySQL binlog'un senkronizasyon mekanizmasına göre).

Bu yöntemlerin ortak bir özelliği olduğu, "tek adımlı işlemi" "iki adımlı işlem" e dönüştürmek olduğu ve eklenen tek adımlı işlemin arabelleğe almak için kullanıldığı görülebilmektedir.

Bundan bahsetmişken bunun, sunduğumuz "4 İhtiyaç 1 Yapma" prensibine uymayan erişim talebinin yolunu artırdığını söyleyebilirsiniz. Evet, mantıksız görünüyor, ancak bir arabellek adımı eklemezseniz, sistem bazı senaryolarda doğrudan çökebilir, bu nedenle sonunda yine de tavizler ve dengeler yapmanız gerekir.

Cevap

En eski artışın sadece sayfayı yenilediğini ve satın alma düğmesine tıkladığını ve daha sonra cevaplama işlevini eklediğini hatırlıyor musunuz? Öyleyse neden cevaplama işlevi ekleniyor?

Bu, esas olarak, iki hedefe ulaşmak için satın alma işleminin karmaşıklığını artırmak içindir.

İlk amaç, bazı alıcıların ani artışa katılırken hile yapmak için spike cihazını kullanmasını engellemektir. Artış 2011'de çok popüler olduğunda, spike cihazı da yaygınlaştı, bu da evrensel katılım ve pazarlama amacına ulaşamadı, bu nedenle sistem, spike cihazını sınırlamak için yanıtlar ekledi. Cevabı ekledikten sonra, sipariş süresi temelde 2 saniye içinde kontrol edilir ve spike cihazı tarafından verilen siparişlerin oranı da büyük ölçüde azalır. Cevap sayfası aşağıdaki şekilde gösterilmektedir.

Cevap sayfası

İkinci amaç, aslında isteği geciktirmek ve istek trafiğinin tepe noktasını kesmektir, böylece sistem anlık trafik tepe noktasını daha iyi destekleyebilir. Bu önemli işlev, tepe sipariş talebini önceki 1 saniyeden 2 sn ~ 10 sn'ye uzatmaktır. Bu şekilde, istek zirvesi, zaman dilimlemeye dayanır. Şu anda parçalama, sunucunun eşzamanlılığı idare etmesi için çok önemlidir ve baskıyı büyük ölçüde azaltacaktır.

Üstelik taleplerin sırasına bağlı olarak, sonraki talepler geldiğinde stok olmayacağı için son sipariş aşamasına hiç ulaşılamadığından gerçek eşzamanlı yazma çok sınırlıdır. Alipay'in "sho-y-shoo" ve WeChat'in "sho-y-shoo" ve WeChat'in "shake and shake" benzer yöntemler gibi bu tür tasarım fikri şu anda çok yaygındır.

Burada, sivri uçlu cevabın tasarım fikirlerine odaklanacağım.

Spike cevap

Yukarıdaki şekilde gösterildiği gibi, tüm ani cevaplama sorusunun mantığı esas olarak 3 bölüme ayrılmıştır.

  • Soru bankası oluşturma modülü Bu bölüm esas olarak soru ve cevap üretmek içindir.Aslında soruların ve cevapların karmaşık olmasına gerek yoktur.Önemli olan makinenin sonuçları hesaplamasını engellemek yani spike cihazının sorulara cevap vermesini engellemektir.
  • Soru bankasının push modülü, soruları saniyeler içinde cevaplamadan önce, soruları detay sistemine ve işlem sistemine önceden itmek için kullanılır. Soru bankasının zorlaması, esas olarak kullanıcı tarafından talep edilen sorunun her seferinde benzersiz olmasını sağlamaktır ve amaç, yanıtta hile yapılmasını önlemektir.
  • Başlık görüntüsü oluşturma modülü, başlığı bir resim formatında oluşturmak ve görüntüye bazı girişim faktörleri eklemek için kullanılır. Bu aynı zamanda makinenin soruyu doğrudan yanıtlamasını önlemek içindir, yalnızca insanların sorunun anlamını anlamasını gerektirir. Burada, soruyu cevaplarken ağın tıkanıklığından dolayı, sorunun resmini CDN'ye önceden itmemiz ve önceden ısıtmamız gerektiğine dikkat edilmelidir, aksi takdirde kullanıcı soruyu gerçekten istediğinde resim yavaş yüklenebilir ve bu da soruyu cevaplama deneyimini etkileyecektir. .
  • Aslında asıl cevabın mantığı görece basit ve anlaşılması kolaydır: kullanıcının verdiği cevap soruya karşılık gelen cevapla kıyaslandığında, geçerse sıra mantığının bir sonraki adımına devam eder, aksi takdirde başarısız olur.

    MD5 ile soruları ve cevapları şifrelemek için aşağıdaki anahtarları kullanabiliriz:

    • Soru anahtarı: userId + itemId + question_Id + time + PK
    • Cevap anahtarı: userId + itemId + answer + PK

    Doğrulama mantığı aşağıdaki şekilde gösterilmektedir:

    Doğrulama mantığı

    Doğrulama sorusunun cevabına ek olarak, buradaki doğrulama mantığının, kullanıcının oturum açıp açmadığı, kullanıcının çerezinin eksiksiz olup olmadığı ve kullanıcının sık sık tekrar tekrar gönderip göndermediği gibi kullanıcının kendi kimliğinin doğrulanmasını da içerdiğini unutmayın.

    Doğruluk doğrulamasına ek olarak, cevap gönderme süresine de bazı kısıtlamalar getirebiliriz. Örneğin, cevabın başlangıcından cevabın kabulüne kadar 1 saniyeden fazla zaman alır, çünkü 1 saniyeden daha azının insan işlemi olması olası değildir ve bu da makinenin cevap vermesini engelleyebilir.

    Hiyerarşik filtreleme

    Yukarıda açıklanan kuyruğa alma ve yanıtlama soruları, ya daha az istek göndermek ya da gönderilen istekleri arabelleğe almak içindir Ani artış senaryosunun başka bir yöntemi, bazı geçersiz istekleri filtrelemek için istekleri hiyerarşik olarak filtrelemektir. Hiyerarşik filtreleme, aşağıdaki şekilde gösterildiği gibi, istekleri işlemek için aslında bir "huni" tasarımı kullanır.

    Hiyerarşik filtreleme

    Talep CDN, ön uç okuma sistemi (ürün detay sistemi gibi), arka uç sistemi (işlem sistemi gibi) ve veri tabanı üzerinden giderse, o zaman:

    • Verilerin ve trafiğin çoğu kullanıcının tarayıcısında veya CDN'de elde edilir, bu katman veri okumasının çoğunu engelleyebilir;
    • İkinci katmandan (ön plan sistemi) geçerken, veriler (son derece tutarlı veriler dahil) bazı geçersiz istekleri filtrelemek için mümkün olduğunca Önbelleğe gitmelidir;
    • Daha sonra arka uç sistemin üçüncü katmanına, esas olarak verilerin ikinci incelemesini yapar, sistemi korur ve akımı sınırlar, böylece veri ve talep miktarı daha da azalır;
    • Son olarak, veri katmanında verilerin güçlü bir tutarlılık kontrolü tamamlanır.

    Bu, veri ve istekleri katman katman filtrelemeye ve azaltmaya çalışan bir huni gibidir.

    Hiyerarşik filtrelemenin temel fikri, geçersiz istekleri mümkün olduğunca farklı düzeylerde filtrelemektir, böylece "huni" nin sonu geçerli istek olur. Bu etkiyi elde etmek için veriler üzerinde katmanlı doğrulama yapmalıyız.

    Katmanlı doğrulamanın temel ilkeleri şunlardır:

  • Geçersiz veri okumalarını filtrelemek için Web tarafında dinamik olarak istenen okuma verilerini önbelleğe alın;
  • Okunan veriler üzerinde güçlü tutarlılık kontrolü yapmayın, tutarlılık kontrolünün neden olduğu darboğaz sorununu azaltın;
  • Süresi dolan geçersiz istekleri filtrelemek için yazma verilerinin makul bir süreye dayalı parçalanmasını gerçekleştirin
  • Yazma isteklerinde geçerli sınır koruması uygulayın ve sistemin taşıma kapasitesini aşan istekleri filtreleyin;
  • Yazılan veriler üzerinde güçlü tutarlılık kontrolü yapın ve yalnızca son geçerli verileri saklayın.
  • Katmanlı doğrulamanın amacı:

    Okuma sisteminde, tutarlılık kontrolünün neden olduğu sistem darboğazını azaltmaya çalışın, ancak kullanıcının sivri uç niteliğine sahip olup olmadığı, ürün durumunun normal olup olmadığı, kullanıcının soruyu doğru cevaplayıp cevaplamadığı, ani yükselmenin bitip bitmediği gibi performansı etkilemeyen denetim koşullarını ilerletmeye çalışın Talebin yasa dışı olup olmadığı, pazarlama eşdeğerinin yeterli olup olmadığı vb .;

    Veri yazma sisteminde tutarlılık kontrolü esas olarak yazılı veriler ("envanter" gibi) üzerinde gerçekleştirilir ve son olarak verilerin nihai doğruluğu veritabanı katmanında garanti edilir ("envanter" negatif bir sayıya indirilemez).

    sonuç olarak

    Bugün, web sitesi yoğun trafiğin etkisiyle karşı karşıya kaldığında istekleri en üst düzeye çıkarmayı nasıl gerçekleştireceğimi ve çoğunlukla en yüksek düzeyde tıraşla başa çıkmanın 3 yolunu tanıttım:

    • Birincisi, isteği kuyrukta arabelleğe almak, yani isteğin gönderilmesini kontrol etmektir;
    • Birincisi, soruları yanıtlayarak istek gönderme süresini uzatmak, istek gönderildikten sonra isteğin ne zaman kabul edileceğini kontrol etmek ve son olarak uygun olmayan istekleri filtrelemektir;
    • Sonuncusu, istekleri hiyerarşik olarak filtrelemektir.

    Bunlar arasında, kuyruk tamponlama yöntemi daha geneldir.Dahili yukarı ve aşağı sistem çağrı isteklerinin sorunsuz olmadığı senaryolar için uygundur.Dahili sistemin hizmet kalitesi gereksinimleri nedeniyle, istekler istenildiği zaman atılamaz, bu nedenle mesaj kuyruklarının kullanımı iyi bir pik tıraş ve tamponlama sağlayabilir. etki.

    Cevap, ani artışlar veya pazarlama faaliyetleri gibi uygulama senaryoları için daha uygundur.İstekleri başlatma hızı, talebin başlangıç noktasında kontrol edilir, çünkü ne kadar geçersiz istekler olursa, o kadar geçersiz istekler olacaktır, böylece daha sonra tanıtılan katmanlı durdurma yöntemi ile daha da azaltılabilir. Sistem kaynaklarının geçersiz isteklerle tüketimi.

    Hiyerarşik filtreleme, envanter azaltma veya araba paylaşımı senaryoları gibi işlemsel yazma istekleri için çok uygundur.Okurken, envanter olup olmadığını veya boş koltuk olup olmadığını bilmeniz gerekir. Ancak, envanter ve koltuklar sürekli değiştiğinden, okunan verilerin çok doğru olması gerekir mi? Aslında bu zorunlu değildir.Geçmişte bazı istekler koyabilir ve daha sonra gerçekten azaldığında tutarlılık garantisini güçlendirebilirsiniz.Bu, bazı istekleri filtreleyecek ve güçlü tutarlılık okumasının darboğazını çözecektir.

    Bununla birlikte, teknik araçların yanı sıra, iş araçları da tepe kesimin işlenmesinde belirli etkilere ulaşmak için kullanılabilir.Örneğin, büyük promosyon sıfırdan başladığında, çok fazla trafik nedeniyle ödeme sistemi bloke edilir.Bu anda kupon kullanabilirsiniz, Trafiğin bir kısmını başka yerlere dağıtmak için çekilişlerin ve diğer yöntemlerin başlatılması, bu da trafiğin arabelleğe alınmasında rol oynayabilir.

    Transfer: https://yq.aliyun.com/articles/700672?spm=a2c4e.11154873.tagmain.78.48c13224rPuVJX

    10.000'den fazla ciltlik bir koleksiyonla, Sanjiao Kasabasında iki self servis kütüphane açıldı
    önceki
    Güçlü gök gürültüsü ve şimşekle on seviyeli fırtına! Wujiang, Chongyang Kasabası Aktif Bir Şekilde Kurtarma ve Afet Yardımı Çalışmalarını Gerçekleştiriyor
    Sonraki
    Alt veritabanları ve alt tablolar sonsuz genişleyebilir mi?
    Makine öğrenmiyor: Yüksek eşzamanlı IM sistem mimarisinin optimizasyon uygulaması
    Bir buçuk yıl boyunca 2,2 milyar zararla kurulan Ruixing Coffee, Amerika Birleşik Devletleri'nde halka açılacak! Canlı yayın platformu Douyu birlikte
    Film ve televizyon dizilerinde çete çekimleri, klasik dramalarda internet anlatıları, Zhang Yishan "kendini iyileştirmiş"
    İnternet yüksek kullanılabilirlik mimarisi teknolojisi uygulaması
    Dünya ağır sıklet boks şampiyonu üzüldü ve elendi, Zhang Junlong, Çin boksunun güçlü yükselişine liderlik edecek güce sahip
    "Shen Cong" neredesin? Çocuk bir yaşında Guangzhou'da kaçırıldı ve babası işini bıraktı ve 14 yıl boyunca bir oğul bulmak için evini sattı.
    Dünya ağır sıklet boks şampiyonu üzüldü ve elendi, Zhang Junlong, Çin boksunun güçlü yükselişine liderlik edecek güce sahip
    Reba'nın asistanlara nasıl davrandığına ve ardından bebeğin asistanlara nasıl davrandığına bakın.
    E-ticaret bilişsel zeka çağının temel taşı: Alibaba'nın e-ticaret bilişsel haritası ortaya çıktı
    Röportaj | On Dört Yıllık Çocuk Arama
    Nöral makine çevirisindeki dikkat mekanizmasını gösterin
    To Top