Azure Web PubSub Hizmeti için performans kılavuzu
Azure Web PubSub Hizmeti'ni kullanmanın temel avantajlarından biri ölçeklendirme kolaylığıdır. Büyük ölçekli bir senaryoda performans önemli bir faktördür.
Bu kılavuzda Web PubSub hizmet performansını etkileyen faktörleri tanıtacağız. Farklı kullanım örneği senaryolarında tipik performansı açıklıyoruz.
Ölçümleri kullanarak hızlı değerlendirme
Performansı etkileyen faktörlere geçmeden önce, önce hizmetinizin baskısını izlemenin kolay bir yolunu sunalım. Portalda Sunucu Yükü adlı bir ölçüm vardır.
Azure Web PubSub hizmetinizin işlem baskısını gösterir. Kendi senaryonuzda test edebilir ve ölçeği artırmaya karar vermek için bu ölçümü de kontrol edebilirsiniz. Sunucu Yükü %70'in altındaysa Azure Web PubSub hizmetindeki gecikme süresi düşük kalır.
Not
50. veya daha büyük bir birim kullanıyorsanız ve senaryonuz çoğunlukla küçük gruplara (grup boyutu <20) gönderiyorsa, başvuru için küçük gruba göndermeyi denetlemeniz gerekir. Bu senaryolarda, Sunucu Yükü'ne dahil olmayan büyük yönlendirme maliyeti vardır.
Aşağıda performansı değerlendirmeye yönelik ayrıntılı kavramlar yer almaktadır.
Terim tanımları
Gelen: Azure Web PubSub Hizmeti'ne gelen ileti.
Giden: Azure Web PubSub Hizmetinden giden ileti.
Bant genişliği: Tüm iletilerin toplam boyutu 1 saniyedir.
Genel bakış
Bu kılavuz aşağıdaki soruları yanıtlar:
Her birim boyutu için tipik Azure Web PubSub Hizmeti performansı nedir?
Azure Web PubSub Hizmeti ileti aktarım hızı gereksinimlerimi karşılıyor mu (örneğin, saniyede 100.000 ileti göndermek)?
Özel senaryom için uygun birim boyutunu nasıl seçebilirim?
Bu soruları yanıtlamak için, bu kılavuz önce performansı etkileyen faktörlerin üst düzey bir açıklamasını sunar. Daha sonra tipik kullanım örnekleri için en fazla gelen ve giden ileti sayısını gösterir: Web PubSub altprotocol, yukarı akış ve rest api aracılığıyla gruplara gönderme.
Bu kılavuz tüm senaryoları (ve farklı kullanım örneklerini, ileti boyutlarını, ileti gönderme desenlerini vb.) kapsamaz. Ancak performans sınırlamasını anlamak için bazı temel bilgiler sağlar.
Performans içgörüleri
Bu bölümde performans değerlendirme yöntemleri açıklanır ve ardından performansı etkileyen tüm faktörler listelenir. Sonunda, performans gereksinimlerini değerlendirmenize yardımcı olacak yöntemler sağlar.
Metodoloji
Aktarım hızı ve gecikme süresi , performans denetiminin iki tipik yönüdür. İletilerin yüzde 99'unda gecikme süresi 1 saniyeden kısa olduğunda maksimum aktarım hızı (gelen ve giden bant genişliği) elde edilen maksimum aktarım hızı olarak tanımlanır. Bu zor bir sınır değil .
Performans faktörleri
Teorik olarak, Azure Web PubSub Hizmeti kapasitesi hesaplama kaynaklarıyla sınırlıdır: CPU, bellek ve ağ. Örneğin, Azure Web PubSub Hizmeti'ne yönelik daha fazla bağlantı, hizmetin daha fazla bellek kullanmasına neden olur. Daha büyük ileti trafiği için (örneğin, her ileti 2.048 bayttan büyükse), Azure Web PubSub Service'in trafiği işlemek için daha fazla CPU döngüsü harcaması gerekir.
İleti yönlendirme maliyeti performansı da sınırlar. Azure Web PubSub Hizmeti, iletiyi bir dizi istemci arasında yönlendiren bir ileti aracısı olarak rol oynar. Farklı bir senaryo veya API için farklı bir yönlendirme ilkesi gerekir.
Yankı için, istemci yukarı akışa bir ileti gönderir ve yukarı akış iletiyi istemciye geri yankılar. Bu desen en düşük yönlendirme maliyetine sahiptir. Ancak yayın, gruba gönderme ve bağlantıya gönderme için Azure Web PubSub Service'in dahili dağıtılmış veri yapısı aracılığıyla hedef bağlantıları araması gerekir. Bu ek işlem daha fazla CPU, bellek ve ağ bant genişliği kullanır. Sonuç olarak performans daha yavaştır.
Özetle, aşağıdaki faktörler gelen ve giden kapasiteyi etkiler:
Birim boyutu (CPU/bellek)
Bağlantı sayısı
İleti boyutu
İleti gönderme hızı
Kullanım örneği senaryosu (yönlendirme maliyeti)
Uygun birim boyutunu bulma
Gelen/giden kapasiteyi nasıl değerlendirebilir veya belirli bir kullanım örneğine uygun birim boyutunu nasıl bulabilirsiniz?
Her birim boyutunun kendi maksimum gelen bant genişliği ve giden bant genişliği vardır. Gelen veya giden trafik eşiği aştıktan sonra sorunsuz bir kullanıcı deneyimi garanti değildir.
inboundBandwidth = inboundConnections * messageSize / sendInterval
outboundBandwidth = outboundConnections * messageSize / sendInterval
- gelen Bağlan ions: İletiyi gönderen bağlantı sayısı.
- giden Bağlan ions: İletiyi alan bağlantı sayısı.
- messageSize: Tek bir iletinin boyutu (ortalama değer). 1.024 bayttan küçük bir iletinin, 1.024 baytlık iletiye benzer bir performans etkisi vardır.
- sendInterval: İleti gönderme aralığı. Örneğin, 1 saniye her saniye bir ileti göndermek anlamına gelir. Daha küçük bir aralık, bir zaman aralığında daha fazla ileti gönderme anlamına gelir. Örneğin, 0,5 saniye her saniye iki ileti göndermek anlamına gelir.
- Bağlan ions: Her birim boyutu için Azure Web PubSub Hizmeti için işlenen maksimum eşik. Eşiği aşan Bağlan kısıtlanmış olur.
Yukarı akışın yeterince güçlü olduğunu ve performans sorunu olmadığını varsayın. Ardından, her birim boyutu için en yüksek gelen ve giden bant genişliğini denetleyin.
Örnek olay incelemesi
Aşağıdaki bölümler üç tipik kullanım örneğinden geçer: Web PubSub altprotocol aracılığıyla gruplara gönderme, CloudEvent'i tetikleme, rest API'yi çağırma. Her senaryo için bölümünde Azure Web PubSub Hizmeti için geçerli gelen ve giden kapasite listelenir. Ayrıca performansı etkileyen ana faktörleri de açıklar.
Tüm kullanım örneklerinde varsayılan ileti boyutu 2.048 bayt ve ileti gönderme aralığı 1 saniyedir.
Web PubSub altprotocol aracılığıyla gruplara gönderme
Hizmet, istemcileri yukarı akış sunucusuna gidiş dönüş yerine doğrudan yayımlama/abone olma konusunda güçlendiren adlı json.webpubsub.azure.v1
belirli bir alt projeyi destekler. Hiçbir sunucu söz konusu olmadığından ve tüm trafik istemci hizmeti WebSocket bağlantısından geçtiğinden bu senaryo verimlidir.
Grup üyesi ve grup sayısı, performansı etkileyen iki faktörden biridir. Analizi basitleştirmek için iki tür grup tanımlarız:
- Büyük grup: Grup numarası her zaman 10'dur. Grup üyesi sayısı (maksimum bağlantı sayısı) / 10'a eşittir. Örneğin, Birim 1 için 1.000 bağlantı sayısı varsa, her grubun 1000 / 10 = 100 üyesi vardır.
- Küçük grup: Her grubun 10 bağlantısı vardır. Grup numarası (maksimum bağlantı sayısı) / 10'a eşittir. Örneğin, Birim 1 için 1.000 bağlantı sayısı varsa, 1000 / 10 = 100 grubumuz vardır.
Gruba gönder, dağıtılmış bir veri yapısı aracılığıyla hedef bağlantıları bulması gerektiğinden Azure Web PubSub Hizmeti'ne bir yönlendirme maliyeti getirir. Gönderen bağlantılar arttıkça maliyet de artar.
Büyük grup
Büyük gruba gönderme için giden bant genişliği, yönlendirme maliyet sınırına erişmeden önce performans sorununa dönüşür. Aşağıdaki tabloda en fazla giden bant genişliği listelenir.
Büyük gruba gönder | Birim 1 | Birim 2 | Birim 10 | Birim 50 | Birim 100 | Birim 200 | Birim 500 | Birim 1000 |
---|---|---|---|---|---|---|---|---|
Bağlantılar | 1.000 | 2.000 | Kategori 10,000 | 50,000 | 100.000 | 200,000 | 500,000 | 1.000.000 |
Grup üyesi sayısı | 100 | 200 | 1,000 | 5.000 | 10,000 | 5.000 | 10,000 | 20,000 |
Grup sayısı | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 |
Saniye başına gelen iletiler | 30 | 30 | 30 | 30 | 30 | 30 | 30 | 30 |
Gelen bant genişliği | 60 KB/sn | 60 KB/sn | 60 KB/sn | 60 KB/sn | 60 KB/sn | 60 KB/sn | 60 KB/sn | 60 KB/sn |
Saniye başına giden iletiler | 3.000 | 6.000 | 30,000 | 150,000 | 300,000 | 600,000 | 1,500,000 | 3,000,000 |
Giden bant genişliği | 6 MB/sn | 12 MBps | 60 MBps | 300 MBps | 600 MBps | 1.200 MBps | 3.000 MBps | 6.000 MBps |
Küçük grup
Yönlendirme maliyeti, iletinin birçok küçük gruba gönderilmesi için önemlidir. Şu anda Azure Web PubSub Hizmeti uygulaması 50. Ünitede yönlendirme maliyeti sınırına ulaştı. Daha fazla CPU ve bellek eklemek işe yaramaz, bu nedenle Birim 100 tasarım gereği daha fazla geliştiremez. Daha fazla gelen bant genişliğine ihtiyacınız varsa, Premium_P2 (birim >100) kullanmak için ölçeği artırmanız gerekir.
Küçük gruba gönder | Birim 1 | Birim 2 | Birim 10 | Birim 50 | Birim 100 | Birim 200 | Birim 500 | Birim 1000 |
---|---|---|---|---|---|---|---|---|
Bağlantılar | 1.000 | 2.000 | Kategori 10,000 | 50,000 | 100.000 | 200,000 | 500,000 | 1.000.000 |
Grup üyesi sayısı | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 |
Grup sayısı | 100 | 200 | 1,000 | 5.000 | 10,000 | 20,000 | 50,000 | 100.000 |
Saniye başına gelen iletiler | 200 | 400 | 2.000 | Kategori 10,000 | Kategori 10,000 | 20,000 | 50,000 | 100.000 |
Gelen bant genişliği | 400 KB/sn | 800 KB/sn | 4 Mb/sn | 20 MBps | 20 MBps | 40 MBps | 100 MBps | 200 MBps |
Saniye başına giden iletiler | 2.000 | 4.000 | 20,000 | 100.000 | 100.000 | 200,000 | 500,000 | 1.000.000 |
Giden bant genişliği | 4 MBps | 8 MB/sn | 40 MBps | 200 MBp | 200 MBps | 400 MBps | 1.000 MBps | 2.000 MBps |
Not
Tabloda listelenen grup sayısı, grup üyesi sayısı sabit sınırlar değildir. Bu parametre değerleri, kararlı bir karşılaştırma senaryosu oluşturmak için seçilir.
Bulut Olayını Tetikleme
Hizmet, CloudEvents HTTP protokolunu kullanarak istemci olaylarını yukarı akış web kancasına teslim eder.
Her olay için, kayıtlı yukarı akışa bir HTTP POST isteği formüle eder ve bir HTTP yanıtı bekler.
Not
Web PubSub, yukarı akış olaylarının teslimi için HTTP 2.0'ı da destekler. Aşağıdaki sonuç HTTP 1.1 kullanılarak test edilmiştir. Uygulama sunucunuz HTTP 2.0'ı destekliyorsa, performans daha iyi olacaktır.
Yankı
Bu durumda, uygulama sunucusu özgün iletiyi http yanıtına geri yazar. Yankı davranışı, en fazla gelen bant genişliğinin maksimum giden bant genişliğine eşit olduğunu belirler. Ayrıntılar için aşağıdaki tabloya bakın.
Yankı | Birim 1 | Birim 2 | Birim 10 | Birim 50 | Birim 100 | Birim 200 | Birim 500 | Birim 1000 |
---|---|---|---|---|---|---|---|---|
Bağlantılar | 1.000 | 2.000 | Kategori 10,000 | 50,000 | 100.000 | 200,000 | 500,000 | 1.000.000 |
Saniye başına gelen/giden iletiler | 500 | 1,000 | 5.000 | 25,000 | 50,000 | 100.000 | 250,000 | 500,000 |
Gelen/giden bant genişliği | 1 MBps | 2 MB/sn | 10 MBps | 50 MBps | 100 MBps | 200 MBps | 500 MBps | 1.000 MBps |
REST API
Azure Web PubSub, istemcileri yönetmek ve gerçek zamanlı iletiler sunmak için güçlü API'ler sağlar.
REST API aracılığıyla kullanıcıya gönderme
Karşılaştırma, Azure Web PubSub Service'e bağlanmaya başlamadan önce tüm istemcilere kullanıcı adları atar.
REST API aracılığıyla kullanıcıya gönderme | Birim 1 | Birim 2 | Birim 10 | Birim 50 | Birim 100 | Birim 200 | Birim 500 | Birim 1000 |
---|---|---|---|---|---|---|---|---|
Bağlantılar | 1.000 | 2.000 | Kategori 10,000 | 50,000 | 100.000 | 200,000 | 500,000 | 1.000.000 |
Saniye başına gelen/giden iletiler | 180 | 360 | 1.800 | 9.000 | 18.000 | 36,000 | 90,000 | 180,000 |
Gelen/giden bant genişliği | 360 KB/sn | 720 KB/sn | 3,6 MBps | 18 MBps | 36 MBps | 72 MBps | 180 MBps | 360 MBps |
REST API aracılığıyla yayın
Bant genişliği, büyük gruba gönderme işlemiyle aynıdır.
REST API aracılığıyla yayın | Birim 1 | Birim 2 | Birim 10 | Birim 50 | Birim 100 | Birim 200 | Birim 500 | Birim 1000 |
---|---|---|---|---|---|---|---|---|
Bağlantılar | 1.000 | 2.000 | Kategori 10,000 | 50,000 | 100.000 | 200,000 | 500,000 | 1.000.000 |
Saniye başına gelen iletiler | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 |
Saniye başına giden iletiler | 3.000 | 6.000 | 30,000 | 150,000 | 300,000 | 600,000 | 1,500,000 | 3,000,000 |
Gelen bant genişliği | 6 KB/sn | 6 KB/sn | 6 KB/sn | 6 KB/sn | 6 KB/sn | 6 KB/sn | 6 KB/sn | 6 KB/sn |
Giden bant genişliği | 6 MB/sn | 12 MBps | 60 MBps | 300 MBps | 600 MBps | 1.200 MBps | 3.000 MB | 6.000 MB |
Sonraki adımlar
Kendi uygulamanızı oluşturmaya başlamak için şu kaynakları kullanın: