MQTT, Nesnelerin İnternetinde harika bir seçim.

MQTT, makineler arası haberleşme için kullanılan bir protokoldür. Bir başka şekilde ifade edilmek istenirse kaynakları kısıtlı ağ istemcileri için tasarlanmış olan son derece hafif ve basit bir mesajlaşma protokolüdür. Bu sebeple IoT (Nesnelerin interneti) için harika bir seçimdir. MQTT protokolünün amacı, tasarım ilkelerini, ağ bant genişliğini, cihaz kaynak gereksinimlerini vb. özellikleri en aza indirirken güvenilirlik ve teslimat güvencesinde başarılı bir süreç yaşanmasıdır.

Publisher (Yayıncı) – Subscriber (Abone) yapısındaTCP/IP bağlantısıyla kurulur.  Kısacası Master/Slave yapısı vardır. Asenkron olarak çalışır. Yani mesaj iletim ve alım sürecinde bir engel ya da bekleme olmadığını gösterir. MQTT protokolünün bir başka özelliği, istemcinin (abone) ve yayıncının aynı anda bağlı olmasını gerektirmemesidir.

Abone – Yayıncı mimarisinde kilit nokta “Broker” dır. Broker, yayıncıdan dan gelen veriyi abonelere filtreleyerek gönderir. Burada filtrelemeden kasıt, hangi veri hangi aboneye gideceğinin ayarlanmasıdır. “Topic” ise yayıncıları abonelere bağlayan sanal bir kanaldır diyebiliriz. Bunun sayesinde yayıncı ve aboneler birbirinden ayrılmıştır ve birbirlerini tanımaları gerekmez.

MQTT Çalışma Prensibi

MQTT dört bölümden oluşur. Bunlar:

  • Bağlantı,
  • Kimlik Doğrulama,
  • İletim,
  • Sonlandırmadır.

Abone ile broker biriminin arasında TCP/IP bağlantısı bulunmaktadır. Bu bağlantı, Broker tarafından ayarlanmış standart portlar veya özel portlar ile kurulur. Kaynak kısıtlaması yaşayan aygıtlar için ise kimlik doğrulama, aboneden sunucuya şifrelenmemiş bir kimlik ile yapılır. Bu Connect/Connack paket sıralamasının bir parçasıdır.

MQTT hafif bir protokoldür. Çünkü tüm mesajlar küçük kodlara sahiptir. Her mesaj sabit 2 byte büyüklüğünde bir başlığa (header) sahiptir. Gönderilecek mesajın maksimum boyutu ise bilgi ve “Quality of Service” seviyesi olarak 256 MB’a sınırlandırılmıştır. Quality of Service, kısaca QoS, ağ iletişimi hizmet kapasitesi olarak bilinmektedir ve ağ üzerindeki uygulamaları öncelendirerek zaman kaybını azaltmayı hedeflemektedir. Bu QoS seviyeleri, bir ağ bağlantısı üzerinden çalışan bir trafik veya program türüne öncelik veren çeşitli tekniklere karşılık gelir. 3 farklı Quality of Service seviyesi vardır. Bu seviyeler MQTT protokolünün içerikleri nasıl yöneteceğini belirler. Yüksek seviyeli QoS’ler daha güvenilir olsa da daha fazla gecikme yaşarlar, trafiği arttırırlar ve bant genişliği ihtiyaçları vardır. Bu nedenle abone birimler kendileri ne almak istiyorlarsa ona göre yüksek QoS seviyelerini belirleyebilir.

QoS Seviyeleri

3 seviyeye ayrılmıştır.

QoS0, aynı zamanda “Unacknowledged Service” olarak bilinir. Kısacası onaylanmamış servistir. Publish paket sıralaması kullanılır. Yayıncı bir kereliğine mesajı Brokera yollar, Brokerda aboneye yollar ama hiç kimse ulaşıp ulaşmadığına dikkat etmez ve mesajı kaydetmez.

QoS1, aynı zamanda “Acknowledge Service” olarak bilinir. Onaylanmış servistir. Publish/Puback paket sıralaması kullanılır. Basit bir tekrar gönderme mekanizmasıdır. Mesajın gitmesi garantidir ama alıcıdan iletime dair bir bilgi gönderilmediği sürece tekrar tekrar yollanmasını sağlar. Bu sebeple birden fazla kopya olması yaşanabilir.

QoS2, aynı zamanda “Assured Service” olarak bilinir, garanti servistir. Mesajın kaybı veya kopya olması durumu yaşanmaz. İki paket kullanılmaktadır. İlki Publish/Pubrec ikincisi ise Pubrel/Pubcomp dur.  Yayıncı bilgiyi yollar ve bilgiyi kaydeder (Publish) daha sonra aboneden yanıt bekler (Pubrec). Yanıt geldiğinde kaydedilen mesajı içi rahat bir şekilde silebilir. Çünkü mesaj güvenli bir şekilde alıcıya ulaşmıştır. Daha sonra yayıncı Pubrec mesajını kaydeder, aboneye Pubrel mesajını ile karşılık verir. Ve aboneden Pubcomp mesajını bekler. Mesajın gitmesi durumunda işlem sonlanır.

Bir başka bilgilendirme için takipte kalın 🙂 . Kendinize iyi bakın.

Kaynak: https://devopedia.org/mqtt

Ziya ELRİ
Ziya ELRİ
Selam. Elektrik-Elektronik Mühendisiyim ve Sisoft Sağlık Bilgi Sistemlerinde Ar-Ge Mühendisi olarak çalışmaktayım. İlgi alanlarım gömülü sistemler, analog-dijital elektronik, yazılım ve PCB'dir.

Son Yazılar

spot_img

Ilgili Yazılar

  • Sign Up
Lost your password? Please enter your username or email address. You will receive a link to create a new password via email.