OSCache Introduction

Merhaba arkadaşlar, OSCache yazılarıma(max 2-3 yazı) başlamış bulunmaktayım. Başlamak bizden, sonuç Allahtan.

OSCache Java Caching Framework

OSCache, opensymphony tarafından geliştirilen Java web uygulamalarında cacheleme çözümlerinden/frameworklerinden biridir. Öncelikle cache mantığını ve bunu niçin yapmamız gerektiğini bilmemiz yararlı olucaktır. Kısaca Cache, herhangi bir veriyi belli bir süre depolamaya ve hızlı erişmeyi sağlar. Bir web uygulamasında gelen her request için database sorgusu yapıp, tüm requestler için aynı olacak olan veriyi database üzerinden çekmek mantıksızdır ve uygulamanın yükünü artırdığı gibi database performansını düşürür. Çok fazla istek gelmeye başladığında ise database artık buna cevap veremeyecektir. Bu durumları önlemek ve uygulama performansını artıkmakla beraber gelen isteklere makul sürelerde cevap verebilmek için cache mekanizmasını kullanmamız gerekir.

OSCache kullanımı kolay ve yönetimi basit olmasıyla birlikte stabil olması nedeniyle sektör içerisinde çokça kullanılan Java için yazılmış open-source bir cacheleme mekanizmasıdır.

OSCache kullanmak için bir jar dosyasına ihtiyacımız bulunmakta.

Jar dosyası olarak şuradan : https://java.net/downloads/oscache/

Maven dependency olarak ise şuradan : http://mvnrepository.com/artifact/opensymphony/oscache

Bir Java web application’da ilgili jar dosyasını WEB-INF/lib/ klasörünün altına atmanız yeterli olucaktır. Bununla beraber oscache.properties adındaki dosya ile cachleme ayarlarını yapabiliriz. oscache.properties dosyasını kullanmasanız bile OSCache default config parametreleri ile yine cacheleme yapıcaktır. Kullanmanız halinde ise src dizinin altında olması gerekmektedir ve Deployment Assembly olark da src dosyalarınızın /WEB-INF/classes altında çıktığından emin olmanız gerekmektedir.

OSCache ile yapabileceklerimizi sıralayalım;

  • key/value olarak herhangi bir java objesini cache’e ekleyebilirsiniz.
  • eklediğiniz cache verilerini gruplayabilir, grup altına aldığınız keyleri birbirinden ayırabilirsiniz.
  • cache key ile herhangi bir objeyi get edebilirsiniz.
  • optional olarak period parametresi ile cache’nin o key için refresh olmasını sağlayabilirsiniz.
  • herhangi bir hata oluşması durumunda cache’e eklemeyi cancel edip kirli datanın oluşmasını engelleyebilirsiniz.
  • single olarak yada grup olarak cache’i temizleyebilirsiniz.
  • tarihe göre cache’den temizleme yapabilirsiniz.
  • runtime anında cache mekanizmasının config parametrelerini, kapasitesini, cache algorimasını vs değiştirebilirsiniz.
  • genel olarak cache.key ile oscache.properties dosyasında belirteceğiniz değer ile cachelemeyi applicaiton yada scope özel olacak şekilde ayarlayabilirsiniz. Bu değer default olarak şudur __oscache_cache.
  • OSCache’in kullanmış olduğu 3 cache algoritmasını runtime anında yada prop file’dan ayarlabilirsiniz. Kullandığı 3 cache algoritması;
    LruCache, FifoCache ve UnlimitedCache. cache.capacity set edildiğinde default olarak LRU(Least Recently Used) kullanılır. FIFO, ilk giren ilk çıkar mantığında çalışır. UnlimitedCache ise cache.capacity set edilmediğinde default olarak algoritma olarak seçilir ve limitsiz şekilde cache veri eklenebilir.
  • Server üzerinde multiple host var ise cache.use.host.domain.in.key değeri true yapılarak auto genereate olan cache key’e hostname bilgisini ekler, default değer false’dır.
  • Persistance class belirtilmemişse memory üzerinde cacheleme, belirtilirse disk üzerinde cacheleme yapılır. Eğer disk üzerinde cachleme yapılacağı istenirse properties dosyası üzerinde path ayarı yapılmalıdır aksi halde hata alınacaktır. Persistance class ile JDBC yada LDAP kullanılarak data cachelenebilir.
  • Cache’deki bir veri stale oldu ise yani eskimiş/güncellenmesi gereken/expire olmuş bir veriyi thread’ler aynı anda kullanmak isterse OSCache burada bir karar almakta. Eğer bir thread eskimiş datayı refresh etmeye çalışırken diğer thread o dataya ulaşmak isterse refresh etmek isteyen threadi beklemez ve cache’de bulunan veriyi diğer thread update edene kadar servis eder. Yine bunu prop file’dan ayarlayabiliriz.
  • Ek olarak JMS ile kullanılabilir.

Java Web uygulamasında uygulama çalışmaya başladığında genel bir cache nesnesi oluşturulmalı ve tüm application boyunca bu nesne üzerinden cache mekanizması kullanılmalıdır. Gelişi güzel cache nesnesi oluşturulmamalı ve cachleme strajesi doğru ayarlanmalıdır. Örn; gün içerisinde çok az değişen bir data için refresh periodu 10 dk yada 1 saat vermek mantıksızdır. Gün içerisinde 1-2 defa değişen bir data ise eğer period olarak 6-8 saat verilebilir ve cache’de tutulacak olan dataların belirlenmesi gerekmektedir. Hiç değişmeyen bir datayı da cache üzerinde tutmak mantıksız olucaktır

 

OSCache giriş yazısını burada sonlandırmak istiyorum, mutlu kalın, hoşça kalın ve bol bol Çay için

~ Alican Akkus

 

822 Total Views 2 Views Today