Aracılığıyla paylaş


Azure IoT İşlemleri için yüksek oranda kullanılabilir uç uygulamalar

MQTT aracısı kullanarak yüksek oranda kullanılabilir bir uygulama oluşturmak için oturum türleri, hizmet kalitesi (QoS), ileti bildirimleri, paralel ileti işleme, ileti saklama ve paylaşılan abonelikler dikkate alınmalıdır. MQTT aracısı, MQTT semantiği ile ileti saklama ve yerleşik durum yönetimi sağlayan dağıtılmış, bellek içi ileti aracısı ve deposuna sahiptir.

Aşağıdaki bölümlerde sağlam, sıfır ileti kaybına ve dağıtılmış uygulamaya katkıda bulunan ayarlar ve özellikler açıklanmaktadır.

Hizmet kalitesi (QoS)

Hem yayımcılar hem de aboneler, ileti teslimi en az bir kez garanti etmek için QoS-1 kullanmalıdır. MQTT aracısı, alıcıdan bir bildirim (ACK) alana kadar iletileri depolar ve yeniden iletim yaparak iletim sırasında hiçbir iletinin kaybolmamasını sağlar.

Oturum türü ve Temiz Oturum bayrağı

Sıfır ileti kaybından emin olmak için, MQTT aracısına bağlanırken clean-start bayrağını false olarak ayarlayın. Bu ayar, istemcinin oturum durumunu korumak için aracıyı bilgilendirerek abonelikleri ve bağlantılar arasındaki bilinmeyen iletileri korur. İstemcinin bağlantısı kesilirse ve daha sonra yeniden bağlanırsa, ileti teslimi yeniden denemesi aracılığıyla tanınmayan QoS-1 iletilerini alarak kaldığı yerden devam eder. Yapılandırılırsa, istemci Oturum Süre Sonu Aralığı içinde yeniden bağlanmazsa MQTT aracısı istemci oturumunun süresinin dolmasına neden olur Varsayılan değer bir gündür.

Çok iş parçacıklı uygulamalarda Receive-Max

Çok iş parçacıklı uygulamalar, iletileri paralel olarak işlemek ve akış denetimi uygulamak için receive-max (en fazla 65.535) kullanmalıdır. Bu ayar, birden çok iş parçacığının eşzamanlı olarak ve aracı uygulama kapasitesinin üzerinde yüksek ileti hızıyla uygulamayı aşırı yüklemeden iletiler üzerinde çalışmasına izin vererek ileti işlemeyi iyileştirir. Her iş parçacığı bir iletiyi bağımsız olarak işleyebilir ve tamamlandıktan sonra onayını gönderebilir. Tipik bir uygulama, max-receive'ı uygulamanın kullandığı iş parçacığı sayısıyla orantılı olarak yapılandırmaktır.

İletileri kabul etmek

Abone uygulaması QoS-1 iletisi için onay gönderdiğinde iletinin sahipliğini alır. QoS-1 iletisi için onay aldıktan sonra, MQTT aracısı söz konusu uygulama ve konu için iletiyi izlemeyi durdurur. Sahipliğin uygun şekilde aktarılması, işleme sorunları veya uygulama kilitlenmeleri durumunda iletinin korunmasını sağlar. Bir uygulama uygulamayı uygulama kilitlenmelerine karşı korumak istiyorsa, bu iletideki işlemeyi başarıyla tamamlamadan önce uygulamanın sahipliğini almaması gerekir. MQTT aracısına abone olan uygulamalar, işleme en fazla 65.535 ile maksimum receive-max değerine kadar tamamlanana kadar iletilerin onaylanmasını geciktirmelidir. Bu, iletinin veya iletinin bir türevinin daha fazla gönderim için MQTT aracısına geçirilmesini içerebilir.

İleti saklama ve aracı davranışı

Aracı, bir aboneden bildirim alana kadar iletileri korur ve sıfır ileti kaybı sağlar. Bu davranış, abone uygulamasının geçici olarak kilitlenmesi veya bağlantıyı kaybetmesi durumunda bile iletilerin kaybolmayabileceğini ve uygulama yeniden bağlandıktan sonra işlenebileceğini garanti eder. İleti-Süre Sonu-Aralığı tarafından yapılandırıldıysa ve abone iletiyi kullanmadıysa MQTT aracı iletilerinin süresi dolabilir.

Tutulan iletiler

Tutulan iletiler , belirli bir konunun en son durumu veya değeri gibi geçici uygulama durumunu korur. Yeni bir istemci bir konuya abone olduğunda, en güncel bilgilere sahip olduğundan emin olarak son tutulan iletiyi alır.

Canlı Tut

Bağlantı hataları veya bırakmaları durumunda yüksek kullanılabilirlik sağlamak için istemci-sunucu iletişimi için uygun etkin tutma aralıkları ayarlayın. Boşta kalma dönemlerinde istemciler PINGREQs gönderir ve PINGRESP'leri bekler. Yanıt yoksa, bağlantıları yeniden kurmak için istemcide otomatik yeniden bağlanma mantığını uygulayın. Paho gibi istemcilerin çoğu yerleşik olarak yeniden deneme mantığına sahiptir. MQTT aracısı hataya dayanıklı olduğundan, ön uç ve arka uç en az iki iyi durumda aracı örneği varsa yeniden bağlantı başarılı olur.

QoS-1 aboneliğiyle nihai tutarlılık

QoS-1 ile MQTT abonelikleri, paylaşılan bir konuya abone olarak aynı uygulama örnekleri arasında nihai tutarlılık sağlar. İletiler yayımlandıkça, örnekler en az bir kez teslim ile verileri alır ve çoğaltır. Örnekler yinelenenleri işlemeli ve veriler eşitlenene kadar geçici tutarsızlıkları tolere etmelidir.

Paylaşılan abonelikler

Paylaşılan abonelikler , yüksek oranda kullanılabilir bir uygulamanın birden çok örneğinde yük dengelemeye olanak tanır. Her abonenin her iletinin bir kopyasını alması yerine, iletiler aboneler arasında eşit olarak dağıtılır. MQTT aracısı şu anda yalnızca bir uygulamanın ölçeği genişletmesine izin veren iletileri dağıtmak için hepsini bir kez deneme algoritmasını destekler. Tipik bir kullanım örneği, paylaşılan abonelikte aynı konu başlığı filtresi kullanılarak MQTT aracısına abone olan Kubernetes ReplicaSet kullanarak birden çok pod dağıtmaktır.

Devlet mağazası

Durum deposu, uygulama işleme durumunu yönetmek için çoğaltılmış bir bellek içi HashMap'tir . Örneğin, vbd'nin aksine, durum deposu bellek içi veri yapıları, bölümleme ve zincir çoğaltma aracılığıyla yüksek hızlı aktarım hızına, yatay ölçeklendirmeye ve düşük gecikme süresine öncelik tanır. Uygulamaların, örnekler arasında tutarlı bir duruma hızla erişirken dağıtılmış doğa ve hataya dayanıklılık depolarını kullanmasına olanak tanır. Dağıtılmış aracı tarafından sağlanan yerleşik anahtar-değer depoyu kullanmak için:

  • Aracının anahtar-değer deposu API'sini kullanarak kısa ömürlü depolama ve alma işlemleri uygulayarak düzgün hata işleme ve veri tutarlılığı sağlayın. Kısa ömürlü durum, gerçek zamanlı hesaplamalar sırasında ara sonuçlara veya meta verilere hızlı erişim için durum bilgisi olan işlemede kullanılan kısa süreli bir veri depolama alanıdır. HA uygulaması bağlamında kısa süreli durum, kilitlenmeler arasındaki uygulama durumlarının kurtarılmasında yardımcı olur. Diske yazılabilir, ancak seyrek erişilen verilerin uzun süreli depolanması için tasarlanmış soğuk depolamanın aksine geçici kalır.

  • Uygulamanın birden çok örneği arasında durum, önbelleğe alma, yapılandırma veya diğer temel verileri paylaşmak için durum deposunu kullanarak verilerin tutarlı bir görünümünü korumalarını sağlayın.

Yüksek oranda kullanılabilir bir uygulama geliştirmek için denetim listesi

  • Programlama diliniz için uygun bir MQTT istemci kitaplığı seçin. İstemci MQTT v5'i desteklemelidir. Uygulamanız gecikme süresine duyarlıysa C veya Rust tabanlı bir kitaplık kullanın.
  • İstemci kitaplığını, temiz oturum bayrağı ayarlanmış ve istenen QoS düzeyine (QoS-1) sahip MQTT aracısına bağlanacak false şekilde yapılandırın.
  • Oturum süre sonu, ileti süre sonu ve etkin tutma aralıkları için uygun bir değer belirleyin.
  • İleti başarıyla teslim edildiğinde veya işlendiğinde bildirim göndermek de dahil olmak üzere abone uygulaması için ileti işleme mantığını uygulayın.
  • Çok iş parçacıklı uygulamalarda, paralel ileti işlemeyi etkinleştirmek için max-receive parametresini yapılandırın.
  • Geçici uygulama durumunu korumak için tutulan iletileri kullanın.
  • Kısa ömürlü uygulama durumunu yönetmek için dağıtılmış durum deposunu kullanma.
  • İletileri uygulamanın birden çok örneği arasında eşit olarak dağıtmak için paylaşılan abonelikler uygulayarak verimli ölçeklendirmeye olanak tanıyın.