MQTT Protokolü

MQTT Protokolü

MQTT (Message Queuing Telemetry Transport), yayınlama ve abone olma mantığına dayanan telemetry mesajlasma protokolüdür. Makineler arası haberleşmede kullanılmaktadır. Benzer protokollerden ayrılan en önemli özelliği ise hafif (lightweight) olması ve bu sayede bir çok platformda rahatlıkla kullanılabilmesidir.

 

Bu protokol, istek(request)-yanıt(response) yapısına dayalı HTTP'ye karşıt olarak yayın(publish) abone(subscriber) yapısında TCP/IP bağlantısı kurulur. TCP/IP protokolünün yazılabildiği Linux, Windows, Android, iOS, MacOS işletim sistemlerinde çalışır.

MQTT protokolü yayıncı-abone yapısında bir mesaj yayınlayan bir client (yayıncı) mesajı alan diğer clientlara ayıracaktır (aboneler). Ayrıca, MQTT asenkron protokoldür, bu da mesajı beklerken clientı engellemediği anlamına gelir. HTTP protokolünün aksine, esas olarak eşzamanlı bir protokoldür. MQTT protokolünün bir başka özelliği, istemcinin (abone) ve yayıncının aynı anda bağlı olmasını gerektirmemesidir.

 

Subscriber birimleri mesaj almak için abone olan birimlerdir ve hangi birimlerden hangi mesajları alacaklarını bulutta bulunan broker birimine “topic” olarak bildirirler.

 

 

mqtt_nedir1

 

 

Publisher birimleri mesaj yayınlayan birimlerdir ve yayınlamak istedikleri mesajı, topic bilgisi ile birlikte broker birimine iletirler. Broker, ilgili topic’e üye olan subscriber birimlerine mesajı iletir.

Publisher ve Subscriber birimleri gerekirse birden fazla broker birimi üzerinden diğer birimler ile iletişim kurabilirler.

MQTT’nin diğer özellikleri:

  •  Protokol paketlerinin küçük oluşu networkdeki veri trafiğini azaltmaktadır. (En küçük paket 2 byte’dan oluşmaktadır.) Network bu sayede daha verimli kullanılabilmektedir.
  •  Sistemde 10k publisher ve subscriber birimleri yer alabilmektedir.
  • Çift taraflı asenkron mesajlaşma sağlamaktadır. (Http’de serverdan veri alınabilmesi icin sürekli poll edilmesi gerekmektedir.)
  • Sınırlı (ram, işlemci, battery v.s.) kaynaklı birimlerde kullanımı uygundur.
  • Subscriber ve publisher birimleri için kullanılabilecek düşük boyutlu (30-60kb) bir çok dilde (c, java vs) açık kaynak kütüphaneler mevcuttur.
  • Broker server olarak kullanılabilecek bazı hizmetler asagidaki gibidir:
    • mosquitto : açık kaynaklı broker server
    • m2m.ecliose.org