Ara Katmanlar-6 DDS Verisi Tasarım Kalıpları

Huseyin Kutluca
Yazılım Mimarileri
4 min readNov 10, 2020
Çubuk Karagöl, Ankara

Veri Tasarım Kalıpları

DDS ile geliştirilen bir sistemde yüzlerce konu (topic) olabilir. Hangi konunun hangi servis kalitesi ile iletilmesini ayrı ayrı düşünmek ve karar vermek zor olacaktır. DDS kullanan sistemlerdeki veri iletimini incelediğimizde belirli davranışları gösteren konuları bir araya getirebileceğimizi görürüz. Bu sınıflandırmaları Kullanım Durumları ya da Veri Kalıpları (pattern) kalıpları olarak sınıflandırabiliriz. Tespit edilmiş ve kullanılan DDS Veri Kalıpları aşağıdaki gibidir:

Sürekli Veri (Continuous Data) Kalıbı:

Genellikle bir sensörden periyodik olarak okuma ölçüm verileri bu sınıflandırmaya girer. Örnek olarak sıcaklık verisi güncellemesi, hisse senedi güncellemeleri, araçların pozisyon ve hız bilgi güncellemesi verilebilir.

Sürekli Veri kalıbına uyan konular için DDS servis kalitesi ayarları aşağıdaki gibi olacaktır:

Güvenirlik(Reliability): İyi niyetli(Best Effort). Veri abonelere iletilirken kaybolduysa tekrar iletilmeyecektir. Bazı aboneler veriyi alırken bazıları alamamış olabilir.

Kalıcılık (Durability): Uçucu, Bu durumda sadece veri o anda abone olmuş abonelere iletilecektir.

Tarihçe: Son 1 ya da N durum: Her bir kayıtın son durumu tutulacaktır.

Durum Veri (State Data) Kalıbı:

Durum bilgisini bir nesnenin zaman içinde değişen özellikleri olarak belirtmiştik. Nesnelerin durum verileri az sıklıkta değişir ve durumları değiştiğinde durum bilgilerini DDS konusu olarak yayımlanır. Durum bilgisi az sıklıkta değiştiği için herhangi bir uygulama sonrada sisteme girdiğinde durum bilgisinin değişmesini beklememeli ve en son durum bilgisine erişebilmelidir. Durum bilgisine örnek trenlerin kalkış saati, radarın çalışma durumu ve modu, aracın bakım durumu verilebilir.

Durum Veri kalıbına uyan konular için DDS servis kalitesi ayarları aşağıdaki gibi olacaktır:

Güvenirlik(Reliability): Reliable(Güvenli). Durum bilgisi bütün abonelere mutlaka iletilecektir.

Kalıcılık (Durability): Yerel Bellekte Kalıcı(Transient_Local) ya da Servis Belleğinde Kalıcı(Transient): sonradan abone olan bir uygulamaya da tarihçede ki kadar (genelde son bir) durum verisi iletilecektir.

Tarihçe: Son 1 ya da N durum. : Son 1 ya da N durum verisi saklanacaktır.

Komut Veri Kalıbı (Command Pattern)

Komutlar bir bileşene gönderilerek o bileşendeki nesnelerin durumunu değiştirmek amacı ile kullanılır. Örneğin bir radara yayın yapmayı durdur komutu, araca dur komutu verilebilir. Komutların hedefine mutlaka iletilmesi esastır.

Komut veri kalıbına uyan konular için DDS servis kalitesi ayarları aşağıdaki gibi olacaktır:

Güvenirlik(Reliability): Reliable(Güvenli). Komut bilgisi bütün abonelere mutlaka iletilecektir.

Kalıcılık (Durability): Uçucu (Volatile): Sadece o anki aktif abonelere komut verisi iletilecektir.

Tarihçe: Son 1 ya da N durum. : Tüm komutlar saklanacak ve iletilecektir.

Konfigürasyon Kalıbı:

Sistemin konfigürasyonu ile ilgili her tür bilgiyi içerir. Abone olan uygulamalar genellikle açılışta bu veriye ihtiyaç duyarlar. Sistemde maximum kaç kullanıcıya müsaade edileceği, radarın açılışta hangi durumda olması gibi konfigürasyon verileri DDS üzerinde kalıcı tutulur. Özellikle birden fazla bileşenin ihtiyaç duyacağı, görev kritik olan (veir tabnaı bozulabilir9 konfigürasyon verileri DDS arakatmanı tarafından yönetilebilir.

Alarm Veri Kalıbına uyan konular için DDS servis kalitesi ayarları aşağıdaki gibi olacaktır:

Güvenirlik(Reliability): Reliable(Güvenli). Alarm bilgisi bütün abonelere mutlaka iletilecektir.

Kalıcılık (Durability): Diskte Kalıcı(Persistent): Sistem kapanıp açıldığında dahi veri saklanır ve her abone olana veri sağlanır.

Tarihçe: Son 1 ya da : Konfigürasyonun son durumu saklanacak ve iletilecektir.

Olay Veri Kalıbı (Event Pattern):

Alıcıları bir olayın olduğundan haberdar etmek için kullanılır. Olaylar herhangi bir zamanda tetiklenebilir(asenkron) vede anonimdir. Yani olayı üreten ile olayı kullanan arasında bir bağlantı yoktur.

Olay Veri Kalıbına uyan konular için DDS servis kalitesi ayarları aşağıdaki gibi olacaktır:

Tarihçe: Son N durum. : Tüm olaylar saklanacak ve iletilecektir.

Olay Veri kalıbının özelleşmiş güvenli ya da iyi niyetli kullanım durumları olabilmektedir. Eğer uygulamada mutlaka iletilmesi isteniyor ise Güvenirlik güvenli olarak ayarlanır.

Olaylar genelde uçucu kalıcı olarak değerlendirilirler. Yanı sadece o anda abone olan uygulamalara iletirler. Uygulamanın ihtiyacına göre Yerel Bellekte Kalıcı(Transient_Local) ya da Servis Belleğinde Kalıcı(Transient) hatta diskte kalıcı (persistent) kullanım da olabilmektedir.

Alarm Veri Kalıbı(Command Pattern):

Ani oluşan bir durumun hızlıca ilgili abonelere iletilmesi gerekmektedir. Bir cihazın kapanması, sıcaklık verisinin limit değerini aşması örnek olarak verilebilir. Alarm veri Kalıbı aslında Olay Veri Kalıbının özelleşmiş bir durumudur.

Alarm Veri Kalıbına uyan konular için DDS servis kalitesi ayarları aşağıdaki gibi olacaktır:

Güvenirlik(Reliability): Reliable(Güvenli). Alarm bilgisi bütün abonelere mutlaka iletilecektir.

Kalıcılık (Durability): Uçucu (Volatile): Sadece o anki aktif abonelere alarm verisi iletilecektir.

Tarihçe: Son 1 ya da N durum. : Tüm alarmlar saklanacak ve iletilecektir.

Hayattalık (Watchdog) Kalıbı:

DDS üzerinde kritik uygulamaların hayatta olma durumundan abone olan uygulamanın haberdar olması istenebilir. Örneğin araç içi bir sistemde GPS verisini sağlayan uygulamanın hayatta olup olmadığını bilmemiz gerekir. Bu tasarım kalıbı DDS’te mevcut Teslim süresi (Deadline) ve/veya Hayatta olma durumu (Livelines) ile yönetilebilir.

Hayattalık kalıbına uyan konular için DDS servis kalitesi ayarları aşağıdaki gibi olacaktır:

Güvenirlik(Reliability): Reliable (Güvenli). Watchdog bilgisi bütün abonelere mutlaka iletilecektir.

Kalıcılık (Durability): Uçucu (Volatile): Sadece o anki aktif abonelere için geçerlidir.

Teslim süresi (deadline): X milisaniye. Bir kayıt X milisaniye güncellenmez ise o veriye abone olmuş uygulamada bildirim oluşur. İlgili uyulama bu durumda ne yapacağına karar verir. Daha kritik sistemlerde Sahiplik (ownership) servis kalitesi de kullanılarak aynı veriyi sağlayan diğer kaynağa otomatik geçiş gibi özellikler sağlanabilmektedir.

--

--

Huseyin Kutluca
Yazılım Mimarileri

Highly motivated Software Architect with hands-on experience in design and development of mission critical distributed systems.