MQTT ileti alışverişi
MQTT, OASIS standartları kuruluşu tarafından yönetilen ve ISO tarafından tanınan açık bir standarttır ve aygıtların ve uygulamaların IoT aracıyla iletişim kurmak için kullandığı birincil iletişim kuralıdır.
MQTT, algılayıcı ve mobil aygıtlar arasında gerçek zamanlıya yakın verilerin verimli bir şekilde değiş tokuşu için tasarlanmış bir yayınlama ve abone olma ileti alışverişi iletimi iletişim kuralıdır. Daha fazla bilgi için bkz. OASIS Message Queuing Telemetry Transport.
MQTT TCP/IP üzerinden çalışır ve TCP/IP ' ye doğrudan kod kodlamak mümkün olsa da, MQTT protokolünün ayrıntılarını sizin için işleyen bir kitaplık kullanmayı da seçebilirsiniz. Çok çeşitli MQTT istemcisi kitaplıkları vardır. IBM , aşağıdaki sitelerde bulunanlar da dahil olmak üzere, çeşitli müşteri kitaplıklarının geliştirilmesine ve desteklenmesine katkıda bulunur:
Standartlar ve gereksinimler
IoT aracı tarafından desteklenen MQTT sürümleri hakkında daha fazla bilgi için bkz. Standartlar ve gereksinimler.
Kısıtlamalar ve sınırlamalar
IoT aracına bağlanıldığında MQTT istemcileri için geçerli olan kısıtlamalar ve sınırlamalar hakkında daha fazla bilgi için bkz. Kısıtlamalar ve sınırlamalar.
Kapı güvenliği
Aygıtlar, ağ geçitleri ve uygulamalar, MQTT ya da HTTP iletişim kuralını kullanarak IoT aracına bağlanır.
| Bağlantı tipi | İletişim Kuralı | Kapı numarası |
|---|---|---|
| Güvenli (TLS) | MQTT ve HTTPS | 443 |
MQTT, TCP ve WebSocketsüzerinden desteklenir. MQTT istemcileri, aygıtlar için aygıt kimlik doğrulama belirteçleri, API anahtarları ve uygulamalar için belirteçler gibi uygun kimlik bilgilerini kullanarak bağlanır. TLS kimlik bilgileri, güvenli kapılar üzerinden gönderildiğinde her zaman şifrelenir.
443 numaralı kapıda güvenli MQTT ileti sistemi kullandığınızda, daha yeni istemci kitaplıkları IoT aracı tarafından sunulan varsayılan sertifikaya otomatik olarak güvenir. İstemci ortamınız için böyle değilse, messaging.pemadresinden tam sertifika zincirini yükleyebilir ve kullanabilirsiniz. Özel bir sertifikayı karşıya yüklerseniz, istemci ortamınıza uygun güven zincirinin eklendiğinden emin olmanız gerekebilir.
TLS
Verilerin güvensiz olarak gönderilmesini önlemek için uygulamanızda TLS ' yi etkinleştirmeniz gerekir.
Daha fazla bilgi için aşağıdaki konulara bakın:
Adil kullanım ilkesi
8.10 ve 8.11sürümlerinde, adil kullanım, bağlantı sınırını aşan bağlantılarda okuma işlemlerini duraklatır. IoT aracı için kısıtlama sınırları aygıt başına ve aygıt sınıfını temel alır; örneğin, aygıt, ağ geçidi ya da uygulama. Bu sınırlar, aygıtların Hizmet Dışı Bırakma (DoS) saldırılarını önlemek için kullanılır. Kısıtlama sınırları, IoT araç devreye alma boyutuyla ölçeklenmez. Kısıtlama, HTTP ileti alışverişi istemcileri için bağlantılar gibi birkaç ileti gönderen kısa ömürlü bağlantılar için geçerli değildir. Daha fazla bilgi için bkz. Kotalar.
İleti hızlarını en üst düzeye çıkarmak için IoT araç verileri Ingest uygulamanızın yükü birçok MQTT aygıtı ya da uygulaması üzerinden dağıttığından emin olun. IoT aracı MQTT hizmeti, her aygıt yayıncısıyla birçok aygıt bağlantısını düşük hızda yönetmek üzere tasarlanmıştır.
MQTT istemcisi kimlik doğrulaması
Her MQTT istemcisi benzersiz bir istemci tanıtıcısı gerektirir. Önceden bağlı olan bir istemci tanıtıcısını kullanarak kuruluşunuzdaki bir istemciyi bağlama girişiminde bulunursanız, ilk bağlantı kesilir.
Doğrudan IoT aracına bağlı aygıtlar ve ağ geçitleri, bağlı olduklarını belirtmek için gösterge panosunda bir durum simgesi görüntüler. Gösterge panosu bir ağ geçidi üzerinden bağlanan aygıtlardan habersiz olduğundan, bir ağ geçidi üzerinden dolaylı olarak bağlanan aygıtların bağlantısı kesilmiş olarak gösterilir.
İleti sistemi hizmet kalitesi (QoS) düzeyleri
| Düzey | Açıklama |
|---|---|
| En çok bir kez (QoS 0) | Hizmet düzeyi 0 (QoS 0) en hızlı aktarma kipidir. İleti en çok bir kez teslim edilir ya da hiç teslim edilmeyebilir. Ağ üzerinden teslim alınmaz ve ileti saklanmaz. İstemcinin bağlantısı kesilirse ya da sunucu başarısız olursa ileti kaybolabilir. MQTT protokolü, sunucuların, hizmet düzeyi 0 olan yayınları istemciye iletmesini gerektirmez. Sunucu yayını aldığında istemcinin bağlantısı kesilirse, sunucu uygulamasına bağlı olarak yayın atılabilir. Gerçek zamanlıya yakın veriler bir aralıkta gönderildiğinde, hizmet düzeyi 0 kalitesini kullanın. Tek bir ileti kaybolursa, daha yeni veriler içeren başka bir ileti kısa bir süre sonra gönderildiğinden bu gerçekten önemli değildir. Bu senaryoda, daha yüksek bir hizmet kalitesinin kullanılmasının ek maliyeti elle tutulur bir avantajla sonuçlanmaz. |
| En az bir kez (QoS 1) | Hizmet kalitesi 1 (QoS 1) ile ileti her zaman en az bir kez gönderilir. Gönderen tarafından bir alındı bildirimi alınmadan önce bir hata oluşursa, bir ileti birden çok kez teslim edilebilir. Gönderen, iletinin alıcı tarafından yayınlandığına ilişkin onayı alıncaya kadar iletinin gönderende yerel olarak saklanması gerekir. İletinin yeniden gönderilmesi gerekiyorsa, ileti saklanır. İletinin MQTT aracısına güvenilir olarak teslim edilmesi, Maximo® Monitor ürününün iletiyi işleyeceği anlamına gelmez. |
| Tam olarak bir kez (QoS 2) | Hizmet düzeyi 2 'nin (QoS 2) kalitesi, en güçlü güvenilir ileti teslimini sağlar, ancak aktarım kipi de en yavaştır. İleti her zaman tam olarak bir kez teslim edilir ve gönderen, iletinin alıcı tarafından yayınlandığına dair onay alıncaya kadar gönderene yerel olarak da saklanmalıdır. İletinin yeniden gönderilmesi gerekiyorsa, ileti saklanır. Hizmet seviyesi 2 'nin kalitesiyle, iletilerin çoğaltılmamasını sağlamak için seviye 1 'den daha sofistike bir tokalaşma ve onay sırası kullanılır. İletinin MQTT aracısına güvenilir olarak teslim edilmesi, Maximo Monitor ürününün iletiyi işleyeceği anlamına gelmez. Komutları gönderirken, yalnızca belirtilen komutun üzerinde hareket ettiğini ve yalnızca bir kez üzerinde hareket edileceğini onaylamak istiyorsanız, hizmet düzeyi 2 'yi kullanın. Bu örnekte, düzey 2 'nin ek genel giderleri diğer düzeylere göre avantajlı olabilir. |
- Bu düzeyler IoT araç ileti sistemi bileşenlerinde disk kalıcılığı gerektirdiğinden, QoS 1 ve QoS 2 için disk G/Ç performansı kritik önem taşır.
- MQTT belirtimi, istemci ile sunucu arasında iletişim kuralı düzeyinde bir akış denetimi anlaşması sağlar. İstemci ve sunucu, oturumda izin verilen onaylanmamış iletilerin sayısını kararlaştırır. İstemcinin kullanılabilecek ileti tanıtıcısı yoksa, kimlikler kullanılabilir oluncaya kadar istemcinin yayınlamayı duraklatması gerekir. İleti alındı bildirimleri (ACK) alındığında ileti tanıtıcıları kullanılabilir. Daha fazla bilgi için bkz. OASIS Standard MQTT belirtimi.
Veri alma hızları
Daha yüksek veri alma hızları elde etmek için MQTT ileti sistemi iletişim kuralını kullanın ve ileti yayınlarken aygıt bağlantısını açık tutun.
MQTT CONNECT
MQTT PUBLISH
MQTT PUBLISH
MQTT PUBLISH
...MQTT CONNECT
MQTT PUBLISH
MQTT DISCONNECT
MQTT CONNECT
MQTT PUBLISH
MQTT DISCONNECT
...Aşağıdaki etkenler veri alma hızını etkiler:
- İleti sistemi protokolü. MQTT, yüksek hacimli bir iletişim kuralıdır. HTTP, düşük hacimli bir iletişim kuralıdır.
- İleti sistemi örüntüsü. Veri alma hızını artırmak için, her ileti yayınlandıktan sonra MQTT oturumlarını kapatmayın. Bağlantıyı açık bırakın.
- Aygıt sayısı. Veri alma ve ileti hızlarını artırmak için yükü daha fazla bağlantı üzerinden dağıtın.
- Aygıt sınıfı. Adil kullanım kotaları , aygıt sınıfına dayalıdır.
- QoS. Yüksek ileti sistemi güvenilirliği düzeyleri daha yüksek maliyetler gerektirir.