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.

Portalda Azure Web PubSub'ın Sunucu Yükü ölçümünün ekran görüntüsü. Ölçüm sunucu yükünün yaklaşık yüzde 8 kullanımda olduğunu gösterir.

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.v1belirli 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.

Gruba gönder iş akışını gösteren diyagram.

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.

Yukarı Akış Web Kancası

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'lerini kullanan Web PubSub hizmetinin genel iş akışını gösteren diyagram.

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: