Yönetilen MQTT Bulutu

Sunucusuz (Serverless) MQTT Broker: Nasıl Çalışır ve Ne Zaman Kullanılır

Sunucusuz bir MQTT broker, yönetilecek sunucu olmadan paylaşımlı, çok kiracılı bir kümede hazır bir uç nokta sunar. Nasıl çalıştığını, limitlerini ve ne zaman doğru seçim olduğunu öğrenin.

İzole kiracı şeritleriyle tek bir paylaşımlı bulut kümesine bağlanan çok sayıda küçük cihaz grubunu gösteren sunucusuz MQTT broker illüstrasyonu
Bunu kendi MQTT broker’ınızda çalıştırınFree planla özel, yönetilen bir MQTT broker alın ve hazır kod örnekleriyle başlayın.
Ücretsiz deneyin Kod örnekleri Kart gerekmez

Sunucusuz (serverless) bir MQTT broker, tek bir sunucu bile hazırlamadan çalışan bir MQTT uç noktası, kimlik bilgileri ve bir dashboard sunar; çünkü broker'ınız sağlayıcının işlettiği paylaşımlı, çok kiracılı bir kümede yaşar. Bu rehberde sunucusuz modelin arka planda nasıl çalıştığını, hangi kullanım limitlerinin gerçekten önemli olduğunu, hangi iş yüklerine uygun olduğunu ve ConnectMQ'da ücretsiz bir sunucusuz broker'ı adım adım nasıl oluşturup test edeceğinizi öğreneceksiniz.

Bir MQTT Broker İçin "Sunucusuz" Ne Anlama Gelir

Elbette işin içinde hâlâ sunucular var. "Sunucusuz", sunuculara kimin sahip olduğunu ve onları nasıl tükettiğinizi tanımlar. Bir sanal makinede Mosquitto gibi kendi barındırdığınız bir broker'da makine boyutunu seçer, paketleri kurar, güvenlik duvarı portlarını açar, TLS sertifikalarını yeniler ve işletim sistemini yamalarsınız. Sunucusuz bir MQTT broker'da bunların hepsi sağlayıcının işidir. Bir hostname, portlar, bir kullanıcı adı, bir parola ve bir client ID alırsınız ve yayın yapmaya başlarsınız.

Temel fikir çok kiracılıktır. İyi boyutlandırılmış tek bir broker kümesi aynı anda birçok müşteriye hizmet verir. Her müşteri o kümede mantıksal olarak izole bir "broker" alır: kendi kimlik bilgileri, kendi topic alanı ve kendi kotaları. Kapasite havuzlandığı için sağlayıcı küçük bir katmanı ücretsiz veya çok ucuza sunabilir ve siz de %2 CPU'da boşta bekleyen bir sanal makine için asla ödeme yapmazsınız.

Broker'ın rolünü hatırlamak istiyorsanız devam etmeden önce bir MQTT broker'ın ne yaptığına göz atın.

Kiracı İzolasyonu Nasıl Çalışır

Paylaşımlı bir küme ancak kiracılar birbirini göremiyor veya rahatsız edemiyorsa güvenlidir. İyi tasarlanmış sunucusuz bir broker izolasyonu birkaç katmanda uygular:

  • Kimlik doğrulama. Her bağlantı tek bir kiracıya verilmiş kimlik bilgilerini sunar. Burada client ID'ler verilen kimlik bilgilerine bağlıdır, dolayısıyla başka bir kiracı cihazlarınızın kimliğine bürünemez.
  • Topic isim alanı. Topic'leriniz broker'ınızla sınırlıdır, bu yüzden # aboneliği yalnızca sizin trafiğinizi döndürür.
  • Kotalar. Bağlantı sayıları, mesaj boyutu ve QoS seviyesi plan başına uygulanır, böylece bir kiracı paylaşılan kaynakları tüketemez.
  • Kötüye kullanım koruması. Flood koruması ve tekrarlanan başarısız girişlerden sonra IP engelleme, hatalı davranan bir istemcinin kümeyi herkes için yavaşlatmasını önler.

Bir kotaya ulaşıldığında MQTT 5 istemcisi sessizce düşürülmek yerine anlamlı bir reason code alır (örneğin 0x97, quota exceeded); bu da limitleri gizemli olmaktan çıkarıp hata ayıklanabilir kılar.

Sunucusuz, Dedicated ve Kendi Barındırma Karşılaştırması

Sunucusuz katman, tam yönetilen bir MQTT servisini tüketmenin birkaç yolundan biridir. Tablo yaygın seçenekleri karşılaştırıyor.

Özellik Kendi barındırma Serverless (paylaşımlı) Dedicated (izole)
Sunucuları kim çalıştırır Siz Sağlayıcı Sağlayıcı
İlk mesaja kadar geçen süre Saatlerden günlere Dakikalar Hazırlık adımı
Kapasite Ne kadar boyutlandırırsanız Havuzlanmış, plan kotaları Size ayrılmış
Gürültülü komşular Yok Kotalarla hafifletilir Yok
Boşta maliyet Tam VM maliyeti Ücretsiz veya düşük Ayrılmış kapasite
En uygun olduğu durum Tam kontrol, internetten yalıtılmış sahalar Prototipler, küçük filolar, eğitim, erken aşama ürünler Sabit yükü olan üretim filoları

Dürüst ödünleşim şu: sunucusuz model, küçük ölçekte sıfır operasyon ve neredeyse sıfır maliyet karşılığında ayrılmış kapasiteden ve bir miktar yapılandırılabilirlikten vazgeçer. Garantili izolasyona ve öngörülebilir kapasite payına ihtiyaç duyduğunuzda bir sonraki adım dedicated MQTT broker olur.

Sunucusuz Bir MQTT Broker'da Önemli Olan Limitler

Her paylaşımlı katman kotalarını yayımlar. Bunları dipnot değil, tasarım kısıtları olarak okuyun. ConnectMQ'nun sunucusuz planları şöyledir:

Limit Serverless (Free) Serverless (Paid)
Eşzamanlı bağlantılar 25'e kadar 1.000'e kadar
Maksimum QoS 1 2
Maksimum mesaj boyutu 256 KB 1 MB
Shared subscription Hayır Evet
Protokoller MQTT 3.1.1 ve 5.0 MQTT 3.1.1 ve 5.0

Bunların pratikteki anlamı:

  1. Kıt kaynak bağlantılardır. Her cihaz, her dashboard sekmesi ve her backend işçisi bir bağlantı tutar. Yirmi sensör artı bir Node-RED örneği artı iki tarayıcı dashboard'u şimdiden 23 bağlantı eder. Dağıtmadan önce sayın.
  2. QoS 1 çoğu telemetriyi karşılar. İdempotent tüketicilerle en az bir kez teslimat neredeyse her sensör iş yükünü kaldırır. Gerçekten tam olarak bir kez semantiğine ihtiyacınız varsa MQTT QoS seviyeleri yazısını okuyun ve ücretli katmanı değerlendirin.
  3. Mesaj boyutu telemetride nadiren sorun olur. Bir JSON okuması birkaç yüz bayttır. 256 KB'nin önemli olduğu yer görüntüler ve firmware parçalarıdır; dosyanın kendisi yerine nesne depolamaya giden bir URL yayımlayın.
  4. Shared subscription yatay tüketicileri mümkün kılar. Tek bir topic akışını bölen birkaç backend işçisi çalıştırmayı planlıyorsanız ücretli sunucusuz katmanda bulunan $share/group/topic özelliğine ihtiyacınız vardır.

Sunucusuz Modele Uyan İş Yükleri

Sunucusuz bir MQTT broker şunlar için mükemmel bir seçimdir:

  • Prototipler ve kavram kanıtları. Bir fikirden çalışan bir cihaz-dashboard döngüsüne bir öğleden sonrada geçebilirsiniz.
  • Küçük üretim filoları. Bir düzine sensörlü bir bina, bir sera kontrolcüsü veya küçük bir perakende kurulumu bağlantı kotalarına rahatça sığar.
  • Sınıflar ve hackathon'lar. Kimse altyapı çalıştırmadan her takım izole bir broker alır.
  • Erken aşama ürünler. Girişimler ayrılmış kapasiteye bağlanmadan önce pazarı doğrulayabilir. Girişimler için MQTT broker seçimi rehberimiz büyüme yolunu ele alıyor.
  • Geliştirme ve staging ortamları. Dedicated bir üretim broker'ı olan ekipler bile geliştirme için çoğu zaman sunucusuz bir broker tutar.

Binlerce sürekli açık cihazınız, sürekli yüksek verim altında sıkı gecikme bütçeleriniz veya paylaşımlı altyapıyı yasaklayan bir politikanız olduğunda daha zayıf bir seçimdir.

Adım Adım: Ücretsiz Bir ConnectMQ Serverless Broker Oluşturun

Adım 1: Kaydolun ve Broker'ı Oluşturun

ConnectMQ adresine gidin, portalı açın, Serverless (Free) planını seçin ve bir broker oluşturun. Portal bir kullanıcı adı, bir parola ve bir client ID üretir. Bunları güvenli bir yere kopyalayın; parolaya diğer gizli bilgiler gibi davranın.

Adım 2: Tarayıcı İçi İstemciyle Test Edin

Portal, tarayıcı içi bir MQTT istemcisi ve canlı bir topic gezgini içerir. test/# konusuna abone olun, test/hello konusuna yayın yapın ve mesajın göründüğünü doğrulayın. Bu, işin içine herhangi bir cihaz kodu girmeden önce kimlik bilgilerini doğrular.

Adım 3: Komut Satırından Bağlanın

Mosquitto istemcileri kuruluyken 8883 portunda TLS üzerinden bağlanın:

mosquitto_sub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
  -u YOUR_USERNAME -P YOUR_PASSWORD -i YOUR_CLIENT_ID -t 'sensors/#' -v

Broker bir Let's Encrypt sertifikası kullanır, bu nedenle sistem CA paketi yeterlidir; özel bir CA dosyası gerekmez.

Adım 4: Python'dan Yayın Yapın

Bu betik, sürüm 2 callback API'siyle paho-mqtt 2.x kullanır ve her beş saniyede bir okuma yayımlar.

import json
import random
import ssl
import time

import paho.mqtt.client as mqtt

HOST = "broker.connectmq.com"
PORT = 8883
USERNAME = "YOUR_USERNAME"
PASSWORD = "YOUR_PASSWORD"
CLIENT_ID = "YOUR_CLIENT_ID"


def on_connect(client, userdata, flags, reason_code, properties):
    print(f"Connected: {reason_code}")


def on_disconnect(client, userdata, flags, reason_code, properties):
    print(f"Disconnected: {reason_code}")


client = mqtt.Client(
    mqtt.CallbackAPIVersion.VERSION2,
    client_id=CLIENT_ID,
    protocol=mqtt.MQTTv5,
)
client.username_pw_set(USERNAME, PASSWORD)
client.tls_set(cert_reqs=ssl.CERT_REQUIRED)
client.on_connect = on_connect
client.on_disconnect = on_disconnect

client.connect(HOST, PORT, keepalive=60)
client.loop_start()

try:
    while True:
        reading = {"temp_c": round(random.uniform(20, 25), 2), "ts": int(time.time())}
        info = client.publish("sensors/room1/temperature", json.dumps(reading), qos=1)
        info.wait_for_publish()
        print("Published", reading)
        time.sleep(5)
except KeyboardInterrupt:
    pass
finally:
    client.loop_stop()
    client.disconnect()

Kaydolmadan yalnızca denemek istiyorsanız, 1883 portundaki herkese açık MQTT test broker'ını kullanın, kimlik bilgilerini kaldırın, boş olmayan benzersiz herhangi bir client ID ve connectmq/demo/a7f3k2/... gibi benzersiz bir topic öneki kullanın. Herkese açık alanın herkes tarafından okunabildiğini unutmayın; oraya asla gerçek veri göndermeyin.

Adım 5: Kullanımı Dashboard'da İzleyin

Portal dashboard'u broker'ınızın etkinliğini gösterir; topic'leriniz ISA-95 yapısını izlediğinde cihazlar görünümü istemcileri ISA-95 seviyelerine göre gruplar. Ayrıca eşik uyarı kuralları tanımlayabilir (örneğin sıcaklık 30'un üzerinde) ve tetiklenen uyarıları uyarı günlüğünde inceleyebilirsiniz.

Kotaların İçinde Kalmak İçin Tasarım İpuçları

  • Bağlantıları yeniden kullanın. On BLE sensörünü tek bir MQTT bağlantısında toplayan bir ağ geçidi on değil, bir slot kullanır.
  • Boştaki dashboard'ları kapatın. WebSocket üzerinden açık olan tarayıcı sekmeleri açık kaldıkları sürece bağlantı sayılır.
  • Durum için retained message kullanın. Bilinen son değeri retained olarak yayımlamak, yeni abonelerin yoklama yapmadan mevcut durumu anında okumasını sağlar.
  • Makul bir keep alive belirleyin. 30 ila 60 saniye tipiktir. Çok kısa aralıklar trafiği israf eder; çok uzun olanlar bağlantı kopmasının tespitini geciktirir.
  • Reason code'ları ele alın. Bir kota reddinin günlüklerinizde net görünmesi için CONNACK ve DISCONNECT reason code'larını günlüğe kaydedin.
  • Benzersiz client ID'ler kullanın. Aynı ID'yi paylaşan iki cihaz birbirini sürekli düşürür; "istemcim sürekli yeniden bağlanıyor" sorununun en yaygın tek nedeni budur.

Sunucusuzun Ötesine Geçmek

Ücretsiz katmanı aşmak iyi bir sorundur. Yol genellikle şöyledir: geliştirme için Serverless (Free), 1.000'e kadar bağlantı ve shared subscription ile erken aşama bir ürün için Serverless (Paid), ardından izole bir küme istediğinizde Dedicated. Her şey standart MQTT 3.1.1 ve 5.0 konuştuğu için katman değiştirmek, cihaz firmware mantığını yeniden yazmak değil, hostname ve kimlik bilgilerini güncellemek anlamına gelir. Barındırma seçeneklerinin büyük resmi için bulut MQTT broker rehberimizi okuyun ve bir değerlendirme kontrol listesi için bir IoT MQTT broker nasıl seçilir yazısına bakın.

Sunucusuz Broker'ınızı ConnectMQ'da Başlatın

app.connectmq.com adresinde kredi kartı olmadan ücretsiz bir Serverless broker oluşturabilirsiniz. Serverless (Free) planını seçin, bir broker oluşturun, üretilen kimlik bilgilerini kopyalayın ve yukarıdaki Python betiğini çalıştırın. Sağlayıcı kümeyi yönetirken dakikalar içinde TLS üzerinden yayın yapan cihazlarınız, ayrıca onları izlemek için bir topic gezgini, dashboard ve uyarı kurallarınız olacak.

Sık Sorulan Sorular

Sunucusuz bir MQTT broker üretim için yeterince güvenli mi?

Evet, birçok iş yükü için. Trafik TLS ile şifrelenir, kimlik bilgileri kiracıya özeldir ve client ID'ler bunlara bağlıdır; politikanız paylaşımlı altyapıyı yasaklıyorsa dedicated veya BYOC bir kurulum seçin.

Bağlantı limitini aştığımda ne olur?

Broker fazladan bağlantıyı reddeder. MQTT 5 istemcileri quota exceeded gibi bir reason code alır; böylece tahmin etmek yerine bunu günlüğe kaydedip tepki verebilirsiniz.

Ücretsiz katmanda MQTT 5 özelliklerini kullanabilir miyim?

Evet. Retained message, session expiry, message expiry ve topic alias'lar dahil MQTT 3.1.1 ve 5.0'ın ikisi de desteklenir; QoS 1 ile sınırlıdır ve shared subscription ücretli sunucusuz planı gerektirir.

Plan yükseltmek için cihaz kodumu değiştirmem gerekir mi?

Genellikle hayır. Yükseltme kotaları değiştirir; dedicated bir broker'a geçmek ise MQTT mantığı aynı kalırken genellikle hostname ve kimlik bilgilerini güncellemek anlamına gelir.

Herkese açık test broker'ı sunucusuz bir broker ile aynı şey mi?

Hayır. broker.connectmq.com adresindeki herkese açık broker anonim bağlantıları kabul eder ve her şey herkes tarafından okunabilir; sunucusuz bir broker ise size özel, kimliği doğrulanmış kimlik bilgileri ve kendi kotalarınızı verir.

İlgili yazılar

BYOC MQTT Broker: Kendi Bulutunuzu Getirin Modeli Açıklandı

BYOC MQTT broker sizin bulut hesabınızda çalışır ama bir sağlayıcı tarafından işletilir. Modelin nasıl işlediğini, sorumluluk paylaşımını ve hesabınızı buna nasıl hazırlayacağınızı öğrenin.

7 dk okuma

Google Cloud IoT Core Alternatifi: Kapanış Sonrası Seçenekler ve Geçiş

Google, Cloud IoT Core'u Ağustos 2023'te kullanımdan kaldırdı. Bu rehber gerçekçi alternatifleri karşılaştırıyor, IoT Core kavramlarını standart MQTT'ye eşliyor ve verileriniz Google Cloud'a akmaya devam ederken cihazlarınızı yönetilen bir broker'a nasıl taşıyacağınızı gösteriyor.

7 dk okuma

Saniyede MQTT Mesaj Sayısı: Verim Nasıl Tahmin Edilir ve Ölçülür

MQTT verim planlaması birkaç formüle ve tek bir dürüst ölçüme dayanır. Saniyedeki gelen ve giden mesaj sayısını nasıl tahmin edeceğinizi, tepe değerleri nasıl hesaba katacağınızı ve sonucu bir broker planına nasıl eşleyeceğinizi öğrenin.

6 dk okuma

Tüm yazılar →

Özel MQTT broker’ınız birkaç tık uzağınızda

Hesabınızı oluşturun, broker kimlik bilgilerinizi alın ve ilk cihazınızı bağlayın — kurulacak, yamalanacak ya da ölçeklendirilecek sunucu yok.