MQTT nedir?

MQTT, makineden makineye iletişim için kullanılan, standart tabanlı bir mesajlama protokolü veya kurallar dizisidir. Akıllı sensörler, giyilebilir cihazlar ve başka nesnelerin interneti (IoT) cihazları, veri alışverişinde bulunmak için genelde sınırlı bant genişliğine sahip, kısık kaynaklı ağlar kullanmak zorundadır. Protokolün uygulanması basit olduğundan ve IoT verisini kolayca iletebildiğinden, IoT cihazları bu tarz veri iletimi için MQTT'yi kullanır. MQTT, cihazların birbirleri aracılığıyla bulutla ve bulutun cihazla mesajlaşmasını destekler.

MQTT protokolü neden önemli?

MQTT protokolü aşağıdaki avantajları sağladığı için IoT veri iletimi için standart haline gelmiştir:

Hafif ve verimli

IoT cihazlarında MQTT uygulaması minimum kaynak gerektirir ve bu nedenle küçük mikro denetleyicilerde bile kullanılabilir. Örneğin minimum bir MQTT denetleme mesajı iki veri baytı kadar küçük olabilir. MQTT mesaj üst bilgileri de küçük olduklarından ağ bant genişliğini optimize edebilirsiniz.

Ölçeklenebilir

MQTT uygulaması, işlemler sırasında çok az güç kullanan, minimum düzeyde kod gerektirir. Protokol ayrıca yüksek sayıdaki IoT cihazıyla iletişimi desteklemek için yerleşik özelliklere sahiptir. Dolayısıyla MQTT protokolünü kullanarak bu türdeki milyonlarca cihazla bağlantı kurabilirsiniz.

Güvenilir

Birçok IoT cihazı, düşük bant genişliğine ve yüksek gecikmeye sahip, güvenilir olmayan hücresel ağlar üzerinden bağlantı kurar. MQTT, IoT cihazının bulutla tekrar bağlantı kurma süresini kısaltan yerleşik özelliklere sahiptir. Ayrıca IoT kullanım örnekleri için güvenilirlik sağlamak için birbirinden farklı üç hizmet kalitesi düzeyi tanımlar: en fazla bir kez (0), en az bir kez (1), tam olarak bir kez (2).

Güvenli

MQTT, geliştiricilerin mesajları şifrelemelerini ve OAuth, TLS1.3 ve Müşteri Tarafından Yönetilen Sertifikalar gibi modern kimlik doğrulama protokollerini kullanarak cihazları ve kullanıcıları doğrulamalarını kolaylaştırır.

Kapsamlı destek

Python gibi birçok dil, MQTT protokol uygulaması için kapsamlı desteğe sahiptir. Bu nedenle geliştiriciler protokolü minimum düzeyde kodlamayla herhangi tür bir uygulamada hızlıca uygulayabilir.

MQTT protokolünün arkasındaki tarihçe nedir?

MQTT protokolü 1999 yılında petrol ve gaz sektörü için geliştirilmiştir. Mühendisler, petrol boru hatlarını uyduyla gözlemlemek için minimum düzeyde bant genişliğine sahip ve en az seviyede pil tüketen bir protokole ihtiyaç duyuyordu. İlk etapta bu protokol, başlangıç sürecini bir IBM ürünü olan MQ serisi desteklediği için Mesaj Sıraya Alma ve Telemetri Aktarma olarak biliniyordu. 2010 yılında IBM herkesin uygulayabilmesi için MQTT 3.1'i ücretsiz ve açık bir protokol olarak yayınladı. Bunun ardından protokol 2013 yılında Yapılandırılmış Bilgi Standartlarının Geliştirilmesi Organizasyonu (OASIS) belirtim birimine geliştirme için gönderildi. 2019 yılında OASIS, geliştirilmiş MQTT sürüm 5'i yayınladı. MQTT artık bir kısaltma olarak kullanılmamaktadır ve protokolün resmi adı olarak kabul edilmektedir. 

MQTT'nin ardındaki ilke nedir?

MQTT protokolü, yayınla/abone ol modelinin ilkelerini temel alır. Geleneksel ağ iletişiminde istemciler ve sunucular birbirleriyle doğrudan iletişim kurar. İstemci, sunucudan kaynak veya veri istedikten sonra sunucu bu talebi işler ve sonra yanıtlar. MQTT bunun yerine bir yayınla/abone ol modeli kullanarak mesajın göndericisini (yayıncı) mesajın alıcısından (abone) ayrıştırır. Bu kapsamda mesaj aracısı adında üçüncü bir bileşen, yayıncılar ile aboneler arasındaki iletişimi yönetir. Aracının görevi, gelen tüm mesajları filtreleyerek aboneler arasında doğru şekilde dağıtılmalarını sağlamaktır. Aracı, yayıncıları ve aboneleri aşağıdaki şekilde birbirlerinden ayrıştırır:

Alan ayrıştırması

Yayıncı ve abone, birbirlerinin ağ konumlarından haberdar değildir ve IP adresi veya bağlantı noktası numarası gibi bilgileri birbirleriyle paylaşmazlar.

Zaman ayrıştırması

Yayıncı ve abone aynı anda ağ bağlantısı çalıştırmaz veya kurmaz.

Eşitleme ayrıştırması

Hem yayıncı hem de abone birbirlerini engellemeden mesaj gönderip alabilir. Örneğin abone, yayıncının mesaj göndermesini beklemek zorunda değildir.

MQTT bileşenleri nedir?

MQTT, yayınla/abone ol modelini, istemci ve aracıyı aşağıdaki şekilde tanımlayarak uygular.

MQTT istemcisi

Bir MQTT istemcisi, bir MQTT kitaplığı çalıştıran herhangi bir cihaz (sunucu, mikro denetleyici vb.) olabilir. İstemci mesaj gönderiyorsa yayıncı olarak, mesaj alıyorsa alıcı olarak işlev görür. Kısacası, bir ağ üzerinden MQTT kullanarak iletişim kuran herhangi bir cihaza MQTT istemci cihazı denilebilir.

MQTT aracısı

MQTT aracısı, farklı istemciler arasındaki mesajları koordine eden arka uç sistemidir. Aracının sorumlulukları arasında mesaj alma ve filtreleme, her bir mesaja abone olan istemcileri belirleme ve bunlara mesajların gönderilmesi vardır. Ayrıca şu görevlerden de sorumludur:

  • MQTT istemcilerinin yetkilendirilmesi ve kimliklerinin doğrulanması
  • Daha fazla analiz için mesajların başka sistemlere iletilmesi
  • Kaçırılan mesajların ve istemci oturumlarının yönetimi

MQTT bağlantısı

İstemciler ve aracılar bir MQTT bağlantısı aracılığıyla iletişime geçer. İstemciler bağlantıyı MQTT aracısına bir CONNECT mesajı göndererek başlatır. Aracı bir bağlantının kurulduğunu CONNACK mesajıyla cevap vererek onaylar. Hem MQTT istemcisi hem de aracısı iletişim kurmak için bir TCP/IP yığınına ihtiyaç duyar. İstemciler asla birbirleriyle bağlantı kurmaz, sadece aracıyla bağlantı kurar.

MQTT nasıl çalışır?

MQTT'nin nasıl çalıştığı aşağıda genel hatlarıyla anlatılmıştır. 

  1. MQTT istemcisi, MQTT aracısıyla bağlantı kurar.
  2. Bağlantı kurulduğunda istemci, mesaj yayınlayabilir, belirli mesajlara abone olabilir veya ikisini birden yapabilir.
  3. MQTT aracısı bir mesaj aldığında, mesajı ilgi duyan abonelere yönlendirir.

Daha fazla bilgi için ayrıntıları teker teker ele alalım.

MQTT konusu

"Konu" terimi, MQTT aracısının MQTT istemcileri için mesaj filtrelerken kullandığı anahtar kelimeler anlamına gelir. Konular, bir dosya veya klasör dizinine benzer şekilde, hiyerarşik olarak organize edilir. Örneğin, her bir katında birbirinden farklı akıllı cihazlara sahip çok katlı bir evde çalışan akıllı bir ev sistemini göz önünde bulundurun. Bu durumda MQTT aracısı, konuları aşağıdaki gibi organize edebilir:

evimiz/girişkatı/oturmaodası/ışık

evimiz/girişkatı/mutfak/ısı

MQTT yayını

MQTT istemcileri, konuyu ve veriyi barındıran mesajları bayt formatında yayınlar. İstemci; metin verisi, ikili veri, XML veya JSON dosyası gibi veri formatını belirler. Örneğin, akıllı ev sistemi bünyesindeki bir lamba açık mesajını oturmaodası/ışık konusu altında yayınlayabilir.

MQTT aboneliği

MQTT istemcileri, ilgi duyabilecekleri konular hakkında mesaj almak için MQTT aracısına SUBSCRIBE mesajı gönderir. Bu mesaj benzersiz bir tanımlayıcı ve bir abonelik listesi barındırır. Örneğin, telefonunuzdaki akıllı ev uygulaması evinizde kaç tane ışığın açık olduğunu görüntülemek istiyor. Işık konusuna abone olup tüm açık mesajların sayacını artırır. 

WSS üzerinden MQTT nedir?

WebSockets (WSS) üzerinden MQTT, verileri doğrudan bir web tarayıcısına almaya yarayan bir MQTT uygulamasıdır. MQTT protokolü, tarayıcılar için WSS desteği sunmak amacıyla bir JavaScript istemcisi tanımlar. Protokol bu durumda her zaman olduğu gibi çalışır ama MQTT mesajlarına WSS protokolünü de desteklemek için ilave üst bilgiler ekler. Bunu bir WSS zarfına konulmuş MQTT mesaj yükü olarak düşünebilirsiniz.

MQTT güvenli midir?

MQTT iletişimi, IoT cihazları tarafından iletilen hassas verileri korumak için SSL protokolünü kullanır. SSL sertifikaları ve/veya parolalar kullanarak istemciler ile aracı arasında kimlik, kimlik doğrulama ve yetkilendirme yapabilirsiniz. MQTT aracısı, istemcilerin kimliğini genellikle her bir istemciye atadığı benzersiz istemci tanımlayıcılarının yanı sıra parolalarını kullanarak doğrular. Çoğu uygulamada istemci, sunucuyu sertifikalar veya DNS aramalarıyla doğrular. MQTT ile şifreleme protokolleri de uygulayabilirsiniz. 

MQTT, RESTful mu?

MQTT, RESTful değildir. Temsili durum aktarımı (REST), mesaj gönderenler ve alıcılar arasındaki istek-yanıt iletişim modelini kullanan ağ iletişimine ilişkin mimari bir yaklaşımdır. Buna karşılık MQTT, uygulama katmanında yayınla/abone ol iletişim modelini kullanır ve mesajları anında iletmek için sabit bir TCP bağlantısı gerektirir. Bununla birlikte, yayıncının, alıcının uygun bir yanıtı işlediği ve oluşturduğu özel bir yanıt konusu ekleyebileceği MQTT sürüm 5, REST'e benzer şekilde hareket etmek için yeni bir istek/yanıt yöntemi ekler.

AWS, MQTT uygulamanızı nasıl destekleyebilir?

AWS IoT Core, AWS hizmetlerine milyarlarca IoT cihazını bağlamanıza ve trilyonlarca mesajı yönlendirmenize olanak tanıyan, tam olarak yönetilen bir hizmettir. Şunları yapabilirsiniz:

  • Cihaz filolarınızı, sunucu tedariki ve yönetimi olmadan kolay ve güvenilir bir şekilde bağlayın, yönetin ve ölçeklendirin.
  • WSS ve LoRaWAN üzerinden MQTT, HTTPS ve MQTT dahil olmak üzere tercih ettiğiniz iletişim protokolünü seçin.
  • Karşılıklı kimlik doğrulaması ve uçtan uca şifreleme sayesinde cihaz bağlantılarının ve verilerin güvenliğini sağlayın.
  • Cihaz verilerini, tanımladığınız iş kurallarına göre anında filtreleyin, dönüştürün ve bunlara göre harekete geçin.

Hemen ücretsiz bir hesap oluşturarak AWS'de MQTT'yi kullanmaya başlayın.

AWS MQTT için sonraki adımlar

Ürünle ilgili diğer kaynaklara göz atın
Nesnelerin interneti hizmetleri hakkında daha fazla bilgi edinin 
Ücretsiz bir hesap için kaydolun

AWS Ücretsiz Kullanım için anında erişim elde edin. 

Kaydolun 
Konsolda oluşturmaya başlayın

AWS Management Console'da AWS ile oluşturmaya başlayın.

Oturum açın