Fabrikalar için MQTT konu tasarımı: sürdürülebilir bir birleşik isim alanı (UNS)
MQTT konularını ISA-95 tarzı bir hiyerarşiyle nasıl yapılandırırsınız, konuya ve yüke ne konur, saklanan mesajlar ve son vasiyet nereye oturur ve hangi kötü kalıplardan kaçınılmalı.
ASP Dijital · IT Hub3 dk okumaTürkçe
Birleşik isim alanı (UNS) nedir, nedir değildir?
Birleşik isim alanı (UNS), her sistemin işletme hakkında bildiği güncel durumu yayımladığı ve her tüketicinin o durumu öngörülebilir tek bir yerde aradığı, üzerinde anlaşılmış hiyerarşik bir adlandırma yapısıdır. Çoğunlukla bir MQTT aracısı (broker) üzerinde uygulanır. Bir üründen çok bir tasarım disiplinidir: tutarsız konu adlarına sahip bir broker, araçlar ne kadar modern olursa olsun birleşik isim alanı değildir.
Tesisi izleyen bir hiyerarşi
En yaygın yapı ISA-95 ekipman hiyerarşisini izler: işletme, tesis, alan, hat (iş merkezi) ve hücre (iş birimi); ardından varlık ve ölçülen büyüklük. Bir konu böylece bir adres gibi okunur:
Yukarıdaki adlar yer tutucudur. Kuruluşunuzun zaten kullandığı sözlüğü kullanın ve seviye sayısına bir kez karar verin. Her seviye, bir okuyucunun gerçekten soracağı bir soruyu yanıtlamalıdır: nerede, nedir, neyi ölçüyor.
Konu mu, yük (payload) mı?
Konu, mesajın ne hakkında olduğunu tanımlar. Yük ise veriyi taşır. İkisini ayrı tutun:
Konuda: tesis, hat, varlık ve metrik adı gibi kalıcı kimlik.
Yükte: değer, birimi, zaman damgası ve kalite göstergesi.
Konu adlarına değişen değerler veya zaman damgaları koymak sınırsız sayıda konu yaratır ve abonelikleri imkânsız kılar. Şu adlandırma kurallarını izleyin:
Küçük harf, rakam ve tire veya alt çizgi kullanın; boşluk ve özel karakterlerden kaçının.
Bir konuyu / ile başlatmayın; bu boş bir ilk seviye yaratır.
Konuların büyük/küçük harfe duyarlı olduğunu unutmayın; Line1 ile line1 farklı konulardır.
$ ile başlayan konulara asla yayın yapmayın; brokerlar bunları ayırır (örneğin $SYS).
Joker karakterler (+ ve #) yalnızca abonelik içindir, yayın için asla.
Yük tasarımı
Küçük ve tutarlı bir JSON nesnesi ihtiyaçların çoğunu karşılar:
UTC zaman damgalarını ISO 8601 biçiminde, metrik türü başına tek bir şema ve geliştirebileceğiniz bir sürüm kullanın. Cihazın doğum ve ölüm mesajlarını ve durum yönetimini de belirleyen bir standarda ihtiyacınız varsa, bu amaçla bir konu isim alanı ve ikili yük tanımlayan Sparkplug B’ye (İngilizce) bakın.
Saklanan (retained) mesajlar ve son vasiyet (last will)
İki MQTT özelliği, bir isim alanını tesisin canlı bir görüntüsü gibi hissettirir:
Saklanan mesajlar. Broker her konudaki son saklanan mesajı tutar ve yeni abonelere hemen iletir; böylece açılan bir pano, sonraki değişimi beklemek yerine güncel değerleri anında görür. Bir konuya boş bir saklanan mesaj yayımlamak onu temizler.
Son vasiyet. Bir istemci bağlanırken bir vasiyet mesajı kaydeder. İstemci temiz bir bağlantı kesme olmadan kaybolursa broker bu mesajı yayımlar. Yaygın bir kalıp, istemci bağlandığında bir status konusuna saklanan online mesajı ve saklanan bir offline vasiyet mesajıdır; böylece tüketiciler sessiz bir sinyali ölü bir üreticiden ayırt edebilir.
Ham ve modellenmiş verinin aynı dalda olması. Cihaz düzeyi etiketleri (raw/…) derlenmiş, bağlamı eklenmiş verilerden ayrı tutun; böylece tüketiciler hangisini okuduklarını bilir.
Tek seferlik adlar. Projeye göre icat edilen, kimsenin öngöremeyeceği konular.
Sınırsız joker abonelikler. Üretimde # aboneliği, kendi sisteminize yük testi yapmaktır.
Sahipsizlik. Her dalın, orada nelerin yayımlanabileceğine karar veren adlandırılmış bir sahibi olmalıdır.
Makinenizi, veri akışınızı veya üretim hedefinizi birlikte değerlendirelim. Birkaç cümleyle durumunuzu yazın; ASP Dijital ekibi size e-posta ile dönsün.