28 Nisan 2022 Perşembe

MQTT Nedir ? Rabbit Mq Server Nedir? Mesaj Kuyrukları nedir?

 

 


MQTT: Cihazlar arasında mesajlaşmayı sağlayan yayıncı-abone ağ protokolüdür 

          *TCP/IP tabanlıdır , sıralı ve çift yönlü bir iletişim sağlar 

  *Kaynak kısıtlamaları ve band genişliğinin sınırlı olduğu bağlantılar için tasarlanmıştır

  *Mqtt broker : yayıncıdan gönderilen mesajları abonelere uygun şekilde yönlendirilmesini                      sağlar.Bir bilgisayarda calısan yazılımdır .Bunun  için yazılımlar vardır örn: Rabbitmq server 

   Mqtt client : Mqtt kütüphanesini kullanarak mqtt broker cihazına bağlantı kuran cihazdır 

  *Publisher mesajını brokera gönderir broker abonelere dağıtır . Publisher abonleler hakkında                    herhangi birşey bilmesi gerekmez 

  *Abonesi olmayan bir konu için brokera bir mesaj gelirse broker bu mesajı yokeder 

  *Mqtt text modunda güvensiz şekilde gönderilir. TLS ile güvenli gönderim sağlanabilir .                         Şifrelenmemiş  port 1883  Şifrelenmiş port 8883 

  *Mqtt çift yönlü bir iletişim protokolüdür 

         *Mqtt client hem veri yollayabilir hem alabilir . örn: bir cihaz sensörü sensör datalarını                             yayınlarken aynı zaman sensör ayarları ile ilgili kontrol komutları alabilir

EXCHANGELAR 3 tiptir  

*Topic :  +)Kendine bağlı queuelara belirli pattern ve routekeyle ulaşır 

          örn :  route.key.*    -> route.key.XYZ     (mesaj alır)

-> route.key.ABC     (mesaj alır)

-> route.key         (mesaj ALAMAZ)

-> route.key.ABC.TTT (mesaj ALAMAZ)   

route.key.#     -> route.key.XYZ     (mesaj alır)

-> route.key.ABC     (mesaj alır)

-> route.key         (mesaj alır)

-> route.key.ABC.TTT (mesaj alır)   

+) Route key pattern belirtilmezse fanout(bütün kuyruklara) gönder

    +) Net bir route key verilirse direct(sadece bir kuyruga) gibi çalışır

*Fanout : +)Route key belirtmeksizin bütün kuyruklara gider .Publisher(producer) tarafından gönderilen mesaj bütün kuyruklara gider

*Direct :  +)route keye göre bağlı kuyruklara gönderilir 

http://tryrabbitmq.com/


Share:

27 Nisan 2022 Çarşamba

D-BUS(Inter process communication)

 


DBUS NEDİR?
*D-Bus aynı makine üzerinde birden fazla procesin haberleşmesini sağlayan mesajlaşma tabanlı bir yazılım mekanizması
*Pekçok procein iletişimi verimsiz ve güvensiz olmaktadır bunun yerine bir grup procesin dbus ile haberleşmesi sağlanabilmektedir
*Bir proces birden fazla busa bağlanabilir(izin verilmek şartıyla)
*system bus : Bütün kullanıcılar ve bütün proceslerine sistem servislerini sağlar session bus: Masaüstü aynı oturumdaki kullanıcı uygulamalarına masaüstü servisi sağlayan oturumlar için. *dbus bilgi paylaşımı , modulerlik ve ayrıcalıklar sağlar örn : müzik dinlerken skype araması geline müziği durdurup arama bitince devam ettirmesi gibi *dbus farklı komponentleri entegre etmek için kullanılabilir . örn : word ile excel arasında bilgi paylaşımı gibi

 

BUS MODEL ?
*Busa yapılan her bağlantı bir 'bus name' ile tanımlıdır. Bus name iki veya daha fazla noktayla ayrılmış diziden oluşur örn: org.fredesktop.Networkmanager
*Bir proces bir busa bağlantı kurduğunda benzersiz özel bir bağlantı adı atanır.Bağlantı adı bağlantı olduğu sürece değişmeyeceği garanti altındadır bus sonlandırılana kadar . Bir proces baglantı kursa baglantıyı kapatıp yeni bir baglantı kursa dahi önceki baglantı adı başka bir procesese kesinlikle atanmaz
*Connection adları : ile başlar örn :1.1553

 

OBJECT MODEL?
*Nesnelerlin signal ve metodları aracılığıyla haberleşme sağlanır . örn : Zaman servisi olarak adlandırılan servisten tarih ve zamanı dönen metod kullanılarak zaman sorgulanabilir örn : usb ve aygıt yöneticilerini yöneten bir servisin "Yenir aygıt eklendi" bildirisi gibi . Bus sadece kayıtlı(ilgilenen) proceslere bu sinyali iletir
*Interface : Bir nesne ile kullanılabilecek sinyal ve metodlar kümesidir .Nokta ile ayrılır örn : org.freedesktop.Introspectable
*Bus name ile interface name karıstırılmamalıdır . Bus birden fazla interface içerebilir
* Nesne adının yanında interface adı vermek iyi bir alıskanlıktır ama zorunlu değildir Interface çeşitleri : org.freedesktop.DBus.Peer: D-Bus baglantısının canlılığını kontrol eder org.freedesktop.DBus.Introspectable: Client procese xml formatında metod ve sinyaller saglar org.freedesktop.DBus.Properties: Object tabanında özellikler ve öznitelikler sağlar

 

COMMUNICATION MODEL ?
*Yüksek seviyeli proces haberleşme sistemidir
. *Raw bytelar yerine procesler arası mesaj değişimi tabanlı dbus iletişimidir
*İki türü vardır + One to one : Bir clientın metodları ile iletişim sağlanır cevap dönülebilir + Publish-subscribe: Bir object ilgilenen bütün proceslere yayın yapar. Geri dönüş değeri gibi bir durum yoktur
*Her D-Bus mesajı header ve bodye sahiptir . Header kısmında mesajın tipini , göndericiyi , hedef, bus name metod ,path, sinyal adı gibi belirten belirli alanları vardır . Body kısmında ise giris cıkttı argümanları gibi veriler bulunur *Her data wire formatı denen ikili formatta kodlanmıstır GENEL
*libdbus bire bir iletişimi destekler ve sağlar .Bus name gerek yoktur
*Dbus-daemon pek cok proces arası iletişimi saglar kontrol eder .Bus name gereklidir
Share: