TL;DR
Sınırlı bataryaya, güvenilir olmayan ağlara veya yayınla-abone ol (pub-sub) mesajlaşma modellerine sahip IoT cihazları için MQTT kullanın. Standart web/mobil API'leri için HTTP kullanın. MQTT, HTTP'nin 100+ baytlık başlıklarına kıyasla 2 baytlık başlıklar kullandığından, kısıtlı cihazlar için idealdir. Modern PetstoreAPI, evcil hayvan takip tasmaları ve akıllı mama makineleri için MQTT'yi uygulamaktadır.
Giriş
Evcil hayvan takip tasmanızın her 5 dakikada bir konum güncellemeleri göndermesi gerekiyor. 6 ay dayanması gereken bir düğme pille çalışıyor. HTTP kullanıldığında, pil 2 haftada bitiyor. MQTT kullanıldığında ise tam 6 ay dayanıyor.
HTTP, API'ler için standarttır, ancak IoT cihazları için değil, web tarayıcıları için tasarlanmıştır. MQTT (Mesaj Kuyruğu Telemetri Taşıması), sınırlı bant genişliğine ve güvenilir olmayan ağlara sahip kısıtlı cihazlar için geliştirilmiştir.
Modern PetstoreAPI, web ve mobil uygulamalar için HTTP, ancak IoT cihazları (evcil hayvan takip tasmaları, akıllı mama makineleri ve sağlık monitörleri) için MQTT kullanır.
Bu rehberde, MQTT'nin HTTP'yi ne zaman geride bıraktığını öğrenecek, Modern PetstoreAPI'den gerçek örnekler görecek ve kullanım durumunuz için doğru protokolü nasıl seçeceğinizi keşfedeceksiniz.
MQTT Nedir?
MQTT, IoT için tasarlanmış hafif bir yayınla-abone ol (pub-sub) mesajlaşma protokolüdür.
MQTT Nasıl Çalışır?
Cihazlar konulara (topic) mesajlar yayınlar. Diğer cihazlar konulara abone olur:
Yayıncı (Evcil Hayvan Tasması):
Konu: pets/019b4132/location
Yük: {"lat":37.7749,"lng":-122.4194,"battery":85}
Abone (Mobil Uygulama):
Abone Olunan: pets/019b4132/location
Alınan: {"lat":37.7749,"lng":-122.4194,"battery":85}
MQTT Broker, yayıncılardan abonelere mesajları yönlendirerek ortada durur.
Başlıca MQTT Özellikleri
1. Küçük başlıklar - MQTT: 2 bayt, HTTP: 100-500 bayt
2. Kalıcı bağlantılar - MQTT bağlantıları açık tutar
3. Hizmet Kalitesi (QoS) - Teslimat garantileri için QoS 0/1/2
4. Son İstek (Last Will) - Cihaz beklenmedik şekilde bağlantısı kesilirse gönderilen mesaj
5. Saklanan mesajlar (Retained messages) - Broker, yeni aboneler için son mesajı saklar
MQTT ve HTTP Karşılaştırması
| Özellik | MQTT | HTTP |
|---|---|---|
| Başlık Boyutu | 2 bayt | 100-500 bayt |
| Desen | Yayınla-Abone Ol | İstek-Yanıt |
| Bağlantı | Kalıcı | İstek Başına |
| Bant Genişliği | Çok düşük | Daha yüksek |
| Batarya Etkisi | Minimal | Önemli |
| Tarayıcı Desteği | WebSocket Üzerinden | Yerel |
Bant Genişliği Örneği
Günde 1000 konum güncellemesi:
- HTTP: Günlük 420 KB, Aylık 12.6 MB
- MQTT: Günlük 52 KB, Aylık 1.56 MB
MQTT, 8 kat daha az bant genişliği kullanır.
MQTT Ne Zaman Avantajlıdır?
1. Sınırlı Bataryaya Sahip IoT Cihazları
Evcil hayvan takip tasması:
- MQTT: 6 ay batarya ömrü
- HTTP: 2 hafta batarya ömrü
Neden: Kalıcı bağlantı, küçük başlıklar, daha az radyo süresi.
2. Güvenilir Olmayan Ağlar
Kapsama alanı düzensiz olan hücresel IoT cihazları:
- Garantili teslimat için QoS
- Otomatik yeniden bağlantı
- Oturum kalıcılığı
3. Çoktan Çoğa İletişim
Akıllı evcil hayvan mama makinesi senaryosu:
Mama Makinesi 1 → pets/019b4132/feeding
Mama Makinesi 2 → pets/019b4127/feeding
Uygulama 1 → pets/+/feeding (tüm evcil hayvanlar) konusuna abone olur
Uygulama 2 → pets/019b4132/feeding (bir evcil hayvan) konusuna abone olur
4. Gerçek Zamanlı Sensör Verileri
Evcil hayvan sağlık monitörü her saniye güncelleme gönderiyor:
- Kalıcı bağlantı (ek yük yok)
- Minimal gecikme
- Yüksek frekanslı güncellemeler için verimli
HTTP Ne Zaman Avantajlıdır?
1. Standart Web/Mobil Uygulamalar
HTTP evrenseldir:
- Her dilde HTTP kütüphaneleri bulunur
- Tarayıcılar yerel olarak destekler
- Proxy'ler ve güvenlik duvarları buna izin verir
2. İstek-Yanıt Modelleri
Evcil hayvan detaylarını almak:
GET /pets/019b4132
200 OK
{"name":"Fluffy","species":"CAT"}
HTTP, istek-yanıt için daha basittir.
3. Önbellekleme Gereksinimleri
HTTP önbellekleme kutudan çıktığı gibi çalışır:
- Tarayıcı önbellekleme
- CDN önbellekleme
- Proxy önbellekleme
MQTT'de önbellekleme yoktur.
4. RESTful API'ler
HTTP durum kodları, metodları ve semantiği:
- 200 OK, 404 Not Found, 201 Created
- GET, POST, PUT, DELETE
- Standart hata yönetimi
Modern PetstoreAPI MQTT'yi Nasıl Kullanıyor?
Modern PetstoreAPI, IoT cihazları için MQTT'yi uygulamaktadır.
Evcil Hayvan Takip Tasmaları
Tasma konumu yayınlar:
Konu: pets/019b4132/location
QoS: 1 (en az bir kez)
Yük: {
"lat": 37.7749,
"lng": -122.4194,
"battery": 85,
"timestamp": "2026-03-13T10:30:00Z"
}
Mobil uygulama abone olur:
const mqtt = require('mqtt');
const client = mqtt.connect('mqtts://mqtt.petstoreapi.com');
client.subscribe('pets/019b4132/location');
client.on('message', (topic, message) => {
const location = JSON.parse(message);
updateMap(location.lat, location.lng);
});
Akıllı Mama Makineleri
Mama makinesi programa abone olur:
Konu: pets/019b4132/feeding-schedule
Saklı: true
Yük: {
"times": ["08:00", "18:00"],
"amount": 100
}
Mama makinesi besleme olaylarını yayınlar:
Konu: pets/019b4132/feeding-events
Yük: {
"timestamp": "2026-03-13T08:00:15Z",
"amount": 100,
"dispensed": true
}
Sağlık Monitörleri
Monitör hayati verileri yayınlar:
Konu: pets/019b4132/health
QoS: 0 (ateşle ve unut, yüksek frekans)
Yük: {
"heartRate": 120,
"temperature": 38.5,
"activity": "resting"
}
Apidog ile MQTT Test Etme
Apidog, HTTP ve diğer protokollerin yanı sıra MQTT testini de destekler.
MQTT Yayınla-Abone Ol Testi
- MQTT broker'ına bağlanın
- Konulara abone olun
- Test mesajları yayınlayın
- Mesaj formatını doğrulayın
- QoS seviyelerini test edin
Ağ Hatalarını Simüle Etme
- Yeniden bağlantı mantığını test edin
- QoS 1/2 teslimatını doğrulayın
- Son İstek (Last Will) mesajlarını kontrol edin
- Oturum kalıcılığını doğrulayın
HTTP ile Karşılaştırma
Aynı işlevselliği her iki protokolle de test edin:
- Bant genişliği kullanımını ölçün
- Gecikmeyi karşılaştırın
- Veri tutarlılığını doğrulayın
Sonuç
MQTT ve HTTP farklı amaçlara hizmet eder. Sınırlı kaynaklara sahip IoT cihazları için MQTT kullanın. Standart web/mobil API'leri için HTTP kullanın.
Modern PetstoreAPI, her ikisinin de nasıl kullanılacağını gösteriyor: kullanıcıya yönelik API'ler için HTTP, IoT cihazları için MQTT. Doğru protokol, "daha iyi" olan değil, kısıtlamalarınıza bağlıdır.
Kullanım durumunuz için en uygun olanı bulmak amacıyla her iki protokolü de Apidog ile test edin.
Sıkça Sorulan Sorular
MQTT, HTTP üzerinden çalışabilir mi?
MQTT, HTTP üzerinden çalışan WebSocket üzerinden çalışabilir. Bu, güvenlik duvarı geçişine yardımcı olur ancak bazı MQTT verimlilik avantajlarını kaybeder.
MQTT QoS seviyeleri nelerdir?
- QoS 0: En fazla bir kez (onay yok)
- QoS 1: En az bir kez (onaylı, tekrarlanabilir)
- QoS 2: Tam olarak bir kez (garantili, tekrar yok)
MQTT güvenli mi?
Evet, MQTT, TLS şifrelemesini (MQTTS) ve kullanıcı adı/şifre kimlik doğrulamasını destekler. Modern PetstoreAPI tüm IoT cihazları için MQTTS kullanır.
Tarayıcılar MQTT kullanabilir mi?
Tarayıcılar, WebSocket üzerinden MQTT kullanabilir. MQTT.js gibi kütüphaneler tarayıcı ortamlarını destekler.
MQTT WebSocket ile nasıl karşılaştırılır?
MQTT, WebSocket üzerinden çalışabilen bir protokoldür. WebSocket bir taşıma katmanıdır. MQTT, WebSocket üzerine yayınla-abone ol, QoS ve IoT'ye özel özellikler ekler.
