Hizmet olarak MQTT broker, bir sunucuyu kendiniz kurmadan, yamalamadan veya izlemeden çalışan ve güvenli bir broker uç noktası sunar. Bu yazı hangi sorumlulukların sağlayıcıya geçtiğini, hangilerinin sizde kaldığını ve bir broker'ın içermediği parçaları nasıl kuracağınızı tam olarak açıklıyor; böylece kaydolmadan önce doğru beklentileri belirleyebilirsiniz.
"Hizmet Olarak MQTT Broker" Ne Anlama Gelir
Hizmet olarak, broker'ı çalıştırdığınız bir yazılım olarak değil, bir uç nokta olarak tükettiğiniz anlamına gelir. Bir hostname, portlar, kimlik bilgileri ve bir yönetim portalı alırsınız. Sağlayıcı makineleri, broker yazılımını, TLS sertifikalarını ve bunların arkasındaki operasyonel süreçleri yürütür. Cihazlarınızı ve uygulamalarınızı, kendi barındırdığınız bir broker'a bağlar gibi standart MQTT ile bağlarsınız.
Bu son nokta önemlidir. MQTT açık bir standart olduğu için aynı istemci kütüphaneleri, firmware ve araçlar, broker ister ofisinizdeki bir Raspberry Pi'da ister bir sağlayıcının bulutunda çalışsın, aynı şekilde çalışır. Protokolde yeniyseniz bir MQTT broker'ın ne yaptığı yazısıyla başlayın.
Sorumluluk Paylaşımı
Aşağıdaki tablo tipik bir paylaşımı gösteriyor. Sağdaki sütun somut bir referans olarak ConnectMQ'yu kullanıyor.
| Alan | Sağlayıcı | Siz | ConnectMQ sağlayıcı tarafını nasıl üstlenir |
|---|---|---|---|
| Sunucular ve işletim sistemi | Evet | Serverless ve Dedicated için altyapıyı çalıştırır; BYOC için hesabınızda yönetir | |
| Broker yazılımı ve yamalar | Evet | MQTT 3.1.1 ve 5.0 destekli yönetilen broker | |
| TLS sertifikaları | Evet | TLS 8883 ve Secure WebSocket 8084 üzerinde Let's Encrypt sertifikası | |
| Uç noktalar ve portlar | Evet | TCP 1883, TLS 8883, WebSocket 8083, Secure WebSocket 8084 (yol /mqtt) | |
| Kimlik bilgisi üretimi | Evet | Güvenle saklamak | Broker başına üretilen kullanıcı adı, parola ve client ID |
| Kötüye kullanım koruması | Evet | Plan başına kotalar, flood koruması, tekrarlanan başarısız girişlerden sonra IP engelleme | |
| Kiracı izolasyonu | Evet | Paylaşımlı planlarda çok kiracılı izolasyon, Dedicated'da izole kümeler | |
| Görünürlük araçları | Evet | Kullanmak | Tarayıcı içi istemci, canlı topic gezgini, dashboard, cihazlar görünümü, eşik uyarıları |
| Cihaz firmware'i ve kütüphaneler | Evet | ||
| Topic tasarımı ve adlandırma | Evet | Kullanıyorsanız portal ISA-95 ve Unified Namespace topic'lerini algılar | |
| Payload formatı ve doğrulama | Evet | Sparkplug B'yi görüntüleme için çözer ve ISA-95 topic'lerine yeniden yayımlar | |
| Veri depolama ve geçmiş | Evet | Dahil değil; kendi abonenizi ve veritabanınızı çalıştırırsınız | |
| Diğer sistemlerle entegrasyonlar | Evet | Dahil değil; Node-RED veya Telegraf gibi araçları MQTT istemcisi olarak bağlarsınız | |
| İstemci tarafı güvenilirlik | Evet | Yeniden bağlanma, tamponlama, QoS seçimi |
Neler Alırsınız
Çalıştırılacak sunucu yok
Hiçbir zaman Mosquitto kurmaz, systemd birimleri yapılandırmaz, dosya tanımlayıcı limitlerini yükseltmez veya işletim sistemi yamaları planlamazsınız. Serverless planlarda makine boyutlandırmayı da hiç düşünmezsiniz; ihtiyacınız olan limitlere sahip bir plan seçersiniz.
Yanlış yapılması zor güvenlik varsayılanları
TLS ilk günden herkesçe güvenilen bir sertifikayla hazırdır, kimlik bilgileri elle seçilmek yerine üretilir ve client ID'ler kendileri için üretilen kimlik bilgilerine bağlanır. Kaba kuvvet giriş denemeleri IP engellemeyle sonuçlanır. Kendi barındırılan broker'lar çoğu zaman bu korumaların bazıları olmadan yayına alınır ve bunlar sonradan eklenir. MQTT güvenlik en iyi uygulamaları yazımız aynı hikâyenin istemci tarafını ele alıyor.
Öngörülebilir limitler
Planlar yayımlanmış limitlerle gelir. ConnectMQ'da Serverless (Free) planı 25'e kadar bağlantıya, QoS 1'e kadar ve 256 KB mesajlara izin verir; ücretli Serverless planı 1.000'e kadar bağlantıya, QoS 2'ye, 1 MB mesajlara ve shared subscription'a izin verir. Dedicated, BYOC ve Self Managed Enterprise izole ve müşteri kontrolündeki kurulumları kapsar.
Neler olup bittiğini görmek için araçlar
İçini göremediğiniz bir broker'da hata ayıklamak zordur. İyi bir servis, tümü tarayıcıdan olmak üzere test mesajları yayımlamanın, canlı topic'leri izlemenin, hangi cihazların bağlı olduğunu görmenin ve değerler bir eşiği aştığında bildirim almanın bir yolunu sunar.
Neler Almazsınız
Bu konuda net olmak sonradan hayal kırıklığını önler.
Broker bir veritabanı değildir. Mesajları yönlendirir; geçmişi saklamaz. Retained message'lar topic başına yalnızca son değeri saklar. Zaman içindeki grafiklere ihtiyacınız varsa bir zaman serisi veritabanına veya historian'a ihtiyacınız vardır.
Broker bir entegrasyon platformu değildir. Bazı IoT platformları kural motorlarını, webhook'ları ve veritabanlarına veya diğer bulutlara bağlayıcıları bir arada sunar. ConnectMQ dahil saf bir hizmet olarak broker bunu yapmaz. Entegrasyonları, abone olan ve ileten bir istemci çalıştırarak kurarsınız.
Broker istemcileri güvenilir yapmaz. Yeniden bağlanma mantığı, yerel tamponlama, idempotent komutlar ve mantıklı QoS seçimleri sizin kodunuzda yer alır. İstemci desenleri için MQTT broker yüksek erişilebilirliği yazısına bakın.
Broker topic'lerinizi tasarlamaz. Net bir isim alanı sizin işinizdir ve diğer her şeyin ne kadar kolay olacağını belirler.
Entegrasyon Deseni: Abone Ol ve İlet
Hizmet olarak bir broker'ı yığınınızın geri kalanına bağlamanın dürüst ve taşınabilir yolu küçük bir abone sürecidir. Her broker'la çalışır ve ileride veritabanlarını veya sağlayıcıları değiştirme özgürlüğünüzü korur. İşte her telemetri mesajını SQLite'ta saklayan eksiksiz bir Python örneği. Gerektiğinde SQLite yerine PostgreSQL, InfluxDB veya bir dosya kullanın.
# store_telemetry.py - telemetriye abone olur ve SQLite'ta saklar
import json
import sqlite3
import time
import paho.mqtt.client as mqtt
DB = sqlite3.connect("telemetry.db", check_same_thread=False)
DB.execute("""CREATE TABLE IF NOT EXISTS telemetry (
ts REAL, topic TEXT, payload TEXT)""")
DB.commit()
def on_connect(client, userdata, flags, reason_code, properties):
print("connected:", reason_code)
client.subscribe("acme/+/+/+/+/telemetry", qos=1)
def on_message(client, userdata, msg):
try:
payload = json.dumps(json.loads(msg.payload)) # JSON'u doğrula
except ValueError:
print("skipping non-JSON message on", msg.topic)
return
DB.execute("INSERT INTO telemetry VALUES (?, ?, ?)",
(time.time(), msg.topic, payload))
DB.commit()
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2,
client_id="YOUR_CLIENT_ID", protocol=mqtt.MQTTv5)
client.username_pw_set("YOUR_USERNAME", "YOUR_PASSWORD")
client.tls_set()
client.on_connect = on_connect
client.on_message = on_message
client.connect("broker.connectmq.com", 8883, keepalive=60)
client.loop_forever()
Aynı desen low-code araçlar için de geçerlidir. Node-RED bir mqtt-broker yapılandırma düğümüyle bağlanır, Telegraf MQTT consumer girdisini kullanır, Home Assistant ise MQTT entegrasyonunu kullanır. Her biri broker'ın sıradan bir MQTT istemcisidir.
Doğru Hizmet Seviyesini Seçmek
| İhtiyacınız | Değerlendirin |
|---|---|
| Öğrenme, demolar ve hızlı testler | broker.connectmq.com adresindeki ücretsiz herkese açık MQTT broker |
| Bir prototip veya küçük pilot için özel bir broker | Serverless (Free) |
| Büyüyen bir filo, QoS 2, daha büyük mesajlar, shared subscription | Serverless (Paid) |
| Diğer kiracılardan izolasyon | Dedicated |
| Broker'ın kendi bulut hesabınızın içinde olması | BYOC |
| Broker'ı üretici yazılımıyla kendiniz işletmek | Self Managed Enterprise |
Hizmet almak ile kendiniz çalıştırmak arasında karar veriyorsanız kendi barındırılan ve yönetilen MQTT broker karşılaştırması ve MQTT broker barındırma seçenekleri karşılaştırması yazılarını okuyun. Bulut MQTT broker rehberi bu konunun tamamına genel bir bakış sunuyor.
Sağlayıcı Seçmeden Önce Sorulacak Sorular
- Hangi MQTT sürümleri ve taşıma katmanları destekleniyor?
- Her planda bağlantı, mesaj boyutu ve QoS için kesin limitler nelerdir?
- Kimlik bilgileri nasıl üretilir, yenilenir ve iptal edilir?
- Servis kota ihlallerini istemcilere nasıl bildirir?
- Hangi görünürlük araçları dahildir?
- Depolama, kural motorları veya bağlayıcılar gibi neler dahil değildir?
- Paylaşımlı planların ötesinde hangi izolasyon seçenekleri vardır?
- Yazılı SLA koşulları nelerdir?
- Cihazların yalnızca bir hostname ve kimlik bilgilerini bildiği düşünülürse ayrılmak ne kadar kolaydır?
ConnectMQ ile Hizmet Olarak MQTT'yi Deneyin
ConnectMQ broker'ı, TLS'i ve kotaları yönetir; siz de cihazlara ve veriye odaklanırsınız. app.connectmq.com adresinden kaydolun, kredi kartı olmadan ücretsiz Serverless planında bir broker oluşturun ve ilk istemcinizi dakikalar içinde bağlayın.
Sık Sorulan Sorular
Hizmet olarak MQTT broker neleri içerir?
Genellikle broker yazılımını, sunucuları, yamaları, TLS sertifikalarını, uç noktaları, kimlik bilgilerini, kotaları ve bir yönetim portalını. Cihazlar, topic'ler, payload'lar ve veri depolama sorumluluğu sizde kalır.
Yönetilen bir MQTT broker verilerimi saklar mı?
Broker mesajları yönlendirir ve topic başına yalnızca retained son değerleri tutar. Geçmiş için mesajları kontrolünüzdeki bir veritabanına yazan bir abone çalıştırın.
Node-RED veya Telegraf'ı hizmet olarak bir broker'a bağlayabilir miyim?
Evet. Portaldaki hostname, port ve kimlik bilgilerini kullanarak sıradan MQTT istemcileri olarak bağlanır, ardından veriyi ihtiyaç duyduğunuz yere iletirler.
Hizmet olarak bir MQTT broker'dan ayrılmak zor mudur?
MQTT bir standart olduğu için cihazların yalnızca yeni bir hostname'e ve kimlik bilgilerine ihtiyacı vardır. Tescilli özelliklerden kaçınmak geçiş maliyetlerini düşük tutar.



