Windows Server AppFabric önbellek mimarisi 3 temel parçadan oluşmuştur. Bu parçalar sırasıyla; isimlendirilmiş önbellekler (Named Caches), bölgeler (Regions) ve önbelleğe alınmış nesnelerdir.
AppFabric önbellek kümesi, ihtiyaç duyuldukça eklenecek ve bir Windows hizmeti olan Önbellek Sunucuları sayesinde yatayda genişletilebilmektedir. Aynı kümeye eklenen önbellek sunucuları kendi aralarında haberleşerek belirlenen aralıklarla kendi içlerinde senkronize olurlar. Önbellek yönetimi noktasında PowerShell komutları sağlanması nedeniyle PowerShell konusunda pratik yapmanız faydalı olacaktır. Görsel olarak yönetimi tercih ederseniz ise "AppFabric Caching Admin Tool" gibi açık kaynak kodlu yazılımlar da geliştirilmekte.
İsterseniz yazımın başında saydığım önbellek mimarisine ait 3 parçayı sırasıyla inceleyelim;
İsimlendirilmiş Önbellekler
Bir önbellek; gerekli yapılandırmayı bilen tüm programlarca erişilebilir, kullanılabilir/ayarlanabilir ortak hafıza alanıdır. Her bir önbellek alanı kendisine ait tekil ismi üzerinde kullanıma sunulmaktadır. İlk kurulumla birlikte varsayılan olarak "default" ismiyle bir önbellek kullanımınıza sunulmaktadır. Uygulamanın ihtiyaçları göz önüne alınarak istenmesi durumunda ek isimlendirilmiş önbelleklerde oluşturularak kullanılabilir. Üstelik uygulamalarda istenildiği kadar oluşturulabilen bu isimlendirilmiş önbelleklerin her biri birbirinden yalıtılmış durumdadır. Bu önbelleklerin her birisi küme içerisinde önbellek sunucularının yükü doğrultusunda yatayda paylaştırılmıştır.
Bölgeler
Bölgeler, önbellekler içerisinde yer alan yapılar olup ek veri taşıyıcı alanlardır. Önbellekten farklı olarak bölgeler küme yapılandırmasında yatayda yer almayıp aynı anda sadece belirli bir önbellek sunucusu içerisinde olabilirler. Oluşturulmaları seçimli olan bölgelerin var olması harici olarak oluşturulmalarına bağlıdır.
Bölgeler üzerinden önbellekler ile yapabileceğiniz standart işlemleri yapabilir, verdiğiniz anahtar üzerinden istediğiniz nesneye ulaşabilirsiniz. Bu özelliklerinin yanında; tag adı verilen ve string veri türünde veri tutabilen alanlar sayesinden bölge içerisindeki tüm nesnelerde arama yapılabilir. İstenirse bölge içerisindeki bir nesneye birden fazla da tag atanması da söz konusudur.
Tabi ki bölgelerin bu özelliklerinin getirisiyle birlikte ölçeklenebilirliği gibi önemli bir özelliğinden vazgeçilmesi gerekecektir; çünkü yukarıda da bahsettiğim gibi bölgelerde ve içerisinde yer alan nesneler aynı anda sadece tek bir önbellek sunucusu içerisinde bulunabilir. Bu noktada yazılım geliştiricilerin ölçeklenebilirlikle sorgulanabilirlik arasında bir seçim yapması gerekecektir.
Önbelleğe Alınmış Nesneler
Önbellekler System.Object türünden nesneleri tutabilir. Daha önceki makalelerimi okuyanlar hatırlayacaklardır ki object türü .Net içerisinde oldukça güçlü bir veri türüdür. Dolayısıyla da önbellekler neredeyse her .Net veri türüyle işlem yapabilirler.
Bir nesne önbelleğe alınırken ek olarak erişimde kullanılacak anahtar kelimeler, tag’ler, sürüm bilgisi, hangi önbellek ve bölgede tutulduğu gibi bilgiler iliştirilerek alınır.
Yukarıda ana parçalarını anlattığım önbellekler hakkında düşülmesi gereken önemli bir not ise; önbelleklerde tutulan veri şifrelenmemiştir ve doğru ayarlarla yapılandırılmış herhangi bir istemci bu veriye ulaşabilir. Bir güvenlik zaafiyetine yol açmamak için yapılandırma dosyalarınızın güvende tutulması önemlidir.
Fatih Boy
http://www.enterprisecoding.com
http://twitter.com/fatihboy