Ö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:
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:
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.
İ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.
Yukarıdaki şekilde gösterildiği gibi, tüm ani cevaplama sorusunun mantığı esas olarak 3 bölüme ayrılmıştır.
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:
Doğrulama mantığı aşağıdaki şekilde gösterilmektedir:
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.
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:
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:
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:
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