AWS API azaltma – Amazon Chime metin sohbeti için azaltma sorununu çözme

In: Genel


“Çok fazla istek! Çok fazla istekte bulundunuz!! Başka istek yok!!!” – Gerçekten sinirlenmeden önce bunu daha kaç kez duyman gerekiyor? Amazon Chime API’sinin istek kısıtlaması sabrımızı bu şekilde test etti. Ama tek istediğimiz basit bir metin sohbet uygulamasının çalışmasını sağlamaktı! Bu makalede, Chime’ın bize neden bu kadar kaba davrandığını, işleri tersine çevirmek için ne yaptığımızı ve sizin de çizdiğimiz yolu nasıl takip edebileceğinizi öğreneceksiniz.

Bulut tabanlı bir sistem geliştirirken nadiren önemli bir endişe nedeni olduğundan, istek azaltma, Amazon Web Services inc hizmetleri ve araçları hakkındaki tartışmaların her zaman ön saflarında yer almaz. Genellikle hem iş hem de geliştirme, kullanabilecekleri bellek ve depolama miktarına daha fazla odaklanır.

Ancak, yakın tarihli bir projemde, AWS’de istek azaltma en ciddi darboğazlarımızdan biri haline geldi, Görünüşte basit görünen bir metin sohbet özelliği ekleme işini oldukça karmaşık bir çözüme dönüştürmek yaratıcı çözümlerle dolu.

Ekibim ve ben, yüksek trafiğe sahip bir metin sohbet uygulamasını kaydetmek için istek kısıtlamasını aşmanın bir yolunu nasıl bulduk?

Cevabı bu pratik vaka çalışmasında bulacaksınız.

Arka plan – müşterinin ne tür bir metin sohbetine ihtiyacı vardı?

Konuyu açıklığa kavuşturmak için, çalışmam gereken müşteriyle ilgili bir iki şey söylemem gerekiyor.

Müşteri

COVID pandemisi her türlü sıkıntıya neden oldu ve hem bireylerin hem de şirketlerin birçok planını alt üst etti. Uzun zamandır beklenen konserler, atölye çalışmaları, sanat gösterileri ve canlı tiyatro etkinliklerinden bahsetmiyorum bile, birçok insan önemli toplantıları, tatil gezilerini ve aile zamanlarını kaçırdı.

Müşterilerimden biri bir çözüm buldu – bir çevrimiçi akış platformu Bu, sanatçıların para ödeyen hayranlarının keyfi için etkinliklerini uzaktan organize etmelerini ve yürütmelerini sağlar. Esasen, canlı deneyimin büyük bir bölümünü web’e getirmeyi mümkün kıldı. Ayrıca, COVID sonrası dünyada yeni fırsatlar yaratarak, sanatı birçok insan için, nerede olurlarsa olsunlar daha erişilebilir hale getirdi.

Müşteri, bakacak ve etkileşimde bulunacak bir halk olmadan performans sergilemenin sanatçılar için biraz garip olabileceğini fark etti. Sanatçıların ve hayranların etkileşim kurması için bir yol sağlamak, platformu bir metin sohbeti ile donatmaya karar verdik.

Teori – Kısma neyle ilgili?

Uygulamaya geçmeden önce, istek kısıtlama sınırının arkasındaki teoriyi gözden geçirelim.

Muhtemelen bildiğiniz gibi, kısma sizin (veya yetkili geliştiricinizin) belirli bir süre içinde belirli bir işlem için gönderebileceğiniz istek sayısını sınırlama işlemidir.

Bir istek, bir envanter feed’i gönderdiğinizde veya bir sipariş raporu isteğinde bulunduğunuzda olabilir.

Bu makale boyunca kullanılan “API İstek Kısıtlaması” terimi, bir API sahibi tarafından belirli bir kullanıcının belirli bir süre içinde yapabileceği istek sayısı (kısıtlama sınırları) üzerine konan kotayı ifade eder.

Bu şekilde, hizmetlerinize yüklenen iş yükünü kontrol altında tutar ve aynı anda daha fazla kullanıcının sistemden yararlanmasını sağlarsınız. Sonuçta paylaşmak önemli değil mi?

AWS bulutunda istek kısmaya ne dersiniz?

Bana göre, EC2 belgelerien popüler AWS hizmetlerinden biri olan , oldukça tatmin edici bir cevaba sahip:

Amazon EC2, Hesap başına EC2 API isteklerini Bölge bazında kısıtlar. Buradaki amaç, hizmetin performansını iyileştirmek ve tüm Amazon EC2 müşterileri için adil kullanım sağlamaktır. Kısıtlama, Amazon EC2 API’sine yapılan çağrıların izin verilen maksimum API isteği sınırlarını aşmamasını sağlar.

Her AWS hizmetinin, yapılabilecek istek sayısını tanımlayan kendi kuralları vardır.

Meydan okuma – normal metin sohbetiniz değil

Başlığı okuduğunuzda, kendinize şöyle düşünmüş olabilirsiniz: “Bir metin sohbeti mi? Bunda bu kadar zor olan ne?”

Herhangi bir üst düzey geliştiricinin size söyleyeceği gibi, dış etkenlere bağlı olarak hemen hemen her şey zor olabilir.

Ve öyle oldu ki, bu dış faktör özeldi.

Normal, günlük metin sohbetiniz değil

En uzun süre, platformun AWS tabanlı altyapısında herhangi bir kısıtlama sorunu yaşanmadı. Her şey, metin sohbeti uygulaması sırasında ortaya çıkmaya başladı. Amazon Chime iletişim hizmeti.

Tipik bir sohbet uygulamasında, kullanıcılara katılmak istedikleri sohbet kanallarını kaydetme ve seçme olanağı verirsiniz. Bizimki biraz farklı çalıştı.

Bunda, her bir sohbet katılımcısı, çevrimiçi etkinlik akışına erişmek için kullandıkları aynı bilet koduyla ayırt edilecekti.

Ne yazık ki müşterimizin biletleme sisteminden indirilen bilet verileri, belirli bir biletin geri dönen bir kullanıcıya ait olup olmadığını anlamamıza izin vermedi. Bu nedenle, bilete önceki sohbet kullanıcı hesaplarını atayamadık. Sonuç olarak, her etkinlik için onları sıfırdan oluşturmak zorunda kaldık.

Yavaşla, kovboy!

Müşterimizin sisteminden binin üzerinde bilet değerinde veri indirdikten hemen sonra, hepsi için Chime kaynakları oluşturmaya çalıştık.

Neredeyse anında, izin verilen maksimum saniyede 10 istek sayısını çok aşan yüksek yük nedeniyle kısma hata mesajıyla kesildik. Artık ihtiyaç duyulmadığında kaynakları silmeye çalışırken aynı maksimum kapasite sorunuyla karşılaştık.

Tüm sorunlarımız, Amazon Chime API’sine yapabileceğimiz istek sayısını hemen doğrulamamış olmamızdan kaynaklanıyordu.

Yavaş ve sakin olan yarışı kazanır?

“Toplu yöntemleri kullanmaya ne dersiniz?” diye sorabilirsiniz. Eh, bu makaleyi yazarken, mevcut olanların çoğu yoktu.

Listelenen 8 toplu işlemden Amazon Chime API referansısadece bir tanesini kullandık – yeteneği birden çok kanal üyeliği oluştur (bir seferde oluşturulan 100 üyelik sınırı ile).

Liste işlemleri bile bir seferde 50 öğe almakla sınırlıdır, bu da sohbet çözümünün kaldıracağı kullanıcı sayısıyla ilgili sınırlara uymamızı zorlaştırdı.

Bu noktada, yaratmaya karar verdik. her kullanıcı ayrı ayrı.

Amazon Chime için kısma isteğinde bulunma çözümü

Açıkçası, bu sürecin işleyeceği hıza ilişkin beklentilerimizi ayarlamak zorunda kaldık.

Saniyede 10 istekte, hemen hemen aynı sayıda kullanıcı oluşturabiliriz (kanallar, moderatörler, toplu üyelikler vb. oluşturmak için kısa aralar dahil). Neyse ki, müvekkilimiz biraz daha beklemekte bir sakınca görmedi.

Her etkinlik önceden ayarlandı ve çözümümüze etkinlik başlamadan önce her şeyi oluşturmak için yeterli zaman verdi.

Ayrıca Chime bunların sayısını da kısıtladığı için her bilet için yalnızca bir kullanıcı oluşturulacağından emin olmamız gerekiyordu.

Çözümümüz bir ayrı EC2 örneğibir olay oluşturma ve biletleri indirme sürecine eşzamansız olarak Chime kaynakları yaratan, müşterinin çağrı sayısını sınırlayan .

AWS API daraltma çözümü – uygulama

Her şeyden önce kurulum, her dakika çalışacak şekilde programlanmış bir CRON işi içerir.

Bu iş, önceki iş zamanında bitmezse iki kez çalışmaya karşı yerleşik korumaya sahiptir. Bir işi iki kez çalıştırmaya karşı başka bir koruma katmanı, yukarı ölçeklenebilirlik olmadan tek bir EC2 bulut sunucusunda çalıştırılmasını sağlamaktır.

Koşma createChimeKullanıcılar yöntemi, özel bir veri tabanından belirli bir miktarda bilet alır (150-200 bizim için en iyi sonucu verdi).

Ve veritabanımızdan aldığımız her bilet için bir sohbet kullanıcısı oluşturuyoruz.

adlı bir paket kullandık. kısılmış kuyruk kısma işleyicimiz olarak.

bu kısılmışSıra parametreler, Chime API çağrılarının aşağıdaki yapılandırmasından sorumludur:

  • belirli bir süre için gerçekleştirmek istediğimiz maksimum istek sayısı,
  • maksimuma kadar bir dizi isteğin gerçekleştirileceği süre (milisaniye cinsinden),
  • isteklerin zaman içinde eşit olarak dağıtılıp dağıtılmayacağını belirleyen boole bayrağı (doğru) veya mümkün olan en kısa sürede çalıştırılmalıdır (yanlış).

Verilen örnekte, Amazon Chime sınırlamalarına bağlı kalarak, bu süre boyunca eşit olarak yayılmış saniyede 10 çağrı yapıyoruz.

Daha fazla AWS öngörüsü mü istiyorsunuz? API Gateway konsolu, REST API, otomatik ölçeklendirme, patlama sınırı ve daha fazlasını içeren geliştiricimizin API Gateway deneyimi hakkında bilgi edinin.

Proje çıktıları

Peki tüm bunları yaparak ne elde ettik?

teknoloji

Somut çıktılar söz konusu olduğunda, aşağıdakileri başardık:

  1. Hizmet sorumlulukları bölünmüşlerdir. Sonuç olarak, metin sohbeti ve bilet alımı için endişelerin ayrılması sağlandı.
  2. Bilet alma sistemi artık metin sohbeti ile ilgilenmiyor. Sonuç olarak, azaltma veya AWS ile ilgili diğer sorunlar artık bu işlevi etkilemez.
  3. Yeni metin sohbet hizmeti Amazon Chime’a gelen tüm istekleri işler. Bunu ölçeklenebilir bir hizmetten ölçeklenebilir olmayan bir hizmete çıkarmak, Chime kaynaklarının hiçbir kopyasının oluşturulmamasını sağlar.

Daha da iyisi, başarımız ürünün kendisi için gözle görülür bir fark yarattı!

İşletme

Artık, istek kısıtlama sorunu çözüldüğüne göre:

  1. Sorunsuz bir sohbet deneyimi son kullanıcılar için elde edilmiştir. Eksik sohbet kullanıcıları veya erişilemeyen sohbet açısından herhangi bir sorun tespit edilmedi.
  2. Sanatçılar izleyicilerle etkileşime girebilir teknik sınırlamalardan etkilenmez.
  3. Mevcut konfigürasyonla, oluşturabiliyoruz Saatte 9000 (!) sohbet kullanıcısı.
Kısıtlama sorununu çözmek, müşteriye ticari faydalar sağladı

Gördüğünüz gibi, Chime’ın istek kısıtlamasını aşmanın özel yolunu bulmak, tamamen yeni bir metin sohbeti çözümü aramak zorunda kalmadan müşteri için birçok somut fayda sağladı.

AWS’de metin sohbeti ve istek kısıtlama sorunları – alınan dersler

Ekibim ve ben bu şekilde Amazon Chime’da AWS API daraltma sorununu çözmeyi başardık ve bu süreçte müşteriler için birkaç kazanç elde ettik.

Meydan okuma bize öğretti, ya da demeliyim – bize birkaç dersi hatırlattı:

  • AWS, altyapınızın verimliliği ve kararlılığı için pek çok avantaj sunmasına rağmen, yalnızca vermeye devam eden bir hediye değildir. Tüm AWS kullanıcılarının tüm kurallara uyma sorumluluğunun olduğunu unutmamak çok önemlidir. Böylece kaynaklar adil bir şekilde paylaştırılır.
  • Belirli bir AWS hizmetini seçmeden önce, tüm sınırlara dikkat etmelisin verimlilik, güvenlik, istek işleme ve sağlayıcı tarafından belirlenen diğerleriyle ilgili.
  • Bulut tabanlı mimariler söz konusu olduğunda, verimliliği (yani, saniyedeki istek sayısını) artırmak ya imkansız ya da çok maliyetli olabilir. Gerek tasarım aşamasında bulut hizmetinizle neler yapabileceğinizin farkında olun Daha sonra sorun yaşamamak için.

Bu yönergeleri izleyebilirseniz, metin sohbeti veya başka bir uygulama veya işlevin uygulanması sırasında herhangi bir sürprizle karşılaşmamalısınız.

Bizimle bunun gibi AWS vakaları üzerinde çalışmak ister misiniz?

Yazılım Evi, zorlu bulut projelerini seven hırslı geliştiriciler için bu tür birçok fırsat sunar.

Łukasz Brzezinski

Łukasz Brzezinski

Node.js geliştiricisi

Node.js konusunda uzmanlaşmış deneyimli arka uç geliştiricisi. Ne yazık ki yıllar geçtikçe daha az zamanı olan uzun mesafe koşuları ve video oyunlarının büyük bir hayranı.

Bir cevap yazın

Ready to Grow Your Business?

We Serve our Clients’ Best Interests with the Best Marketing Solutions. Find out More

How Can We Help You?

Need to bounce off ideas for an upcoming project or digital campaign? Looking to transform your business with the implementation of full potential digital marketing?

For any career inquiries, please visit our careers page here.
[contact-form-7 404 "Bulunamadı"]