IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  digitalpanel

Etiketlenen Kullanıcılar

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 02 Eylül 2013, 22:15   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cache (Önbellek) Teknolojilerinin Okuma Hızları Yönünden Karşılaştırılması




AMAÇ

Bu çalışmada Memcached, HazelCast, Redis cache mekanizmaları 100 K lik PNG veriler kullanılarak okuma hızlarına göre karşılaştırılmıştır.

YÖNTEM

Önbelleğin (Cache) kullanıldığı ortam Java Servlet olarak belirlenmiştir. 10000 adet key-value kullanılmıştır. Tüm PNG dosyaları Cache lendikten sonra okuma işlemine başlanmıştır. Servlet kodları ekte sunulmuştur.

ÖLÇÜMLER

1- HazelCast PNG OKU


Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


2- Jedis PNG OKU


Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


3- Memcached PNG OKU


Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


SONUÇ

HazelCast ve Memcached okuma hızlarına göre çok yakın sonuçlar vermiş (200 T için 90 ms) tir. Redis benzer koşullarda çok kötü değerler (200 T için 7093 ms) üretmiştir.



KAYNAK KODLAR

EK 1 – HAZEL CAST

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ervlet(name = "Hazel", urlPatterns = {"/Hazel"}) public class Hazel extends HttpServlet { private static IMap<String, byte[]> cache = null; private static HazelcastInstance client = null; private static Object _synchObject =new Object() ; protected void initHazelClient() { if (cache == null) { synchronized (_synchObject) { if (cache == null) { ClientConfig clientConfig = new ClientConfig(); clientConfig.getGroupConfig().setName("dev").setPassword("dev-pass"); clientConfig.addAddress("localhost"); client = HazelcastClient.newHazelcastClient(clientConfig); cache = client.getMap("pngs"); } } } } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { initHazelClient(); response.setContentType("image/png"); OutputStream out = response.getOutputStream(); try { String path = request.getQueryString(); byte[] bytes = cache.get(path); if (bytes == null) { //------------------- ByteArrayOutputStream baos = new ByteArrayOutputStream(); FileInputStream fis = new FileInputStream(new File("c:/temp/tile/" + path)); byte[] buf = new byte[1024]; int len; while ((len = fis.read(buf)) > 0) { baos.write(buf, 0, len); } fis.close(); baos.close(); bytes = baos.toByteArray(); cache.put(path, bytes); //-------- } out.write(bytes); out.flush(); } finally { out.close(); }} @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } }

EK 2- MEMCACHED

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
package cache; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.net.InetSocketAddress; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.spy.memcached.MemcachedClient; @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ervlet(name = "Memcached", urlPatterns = {"/Memcached"}) public class Memcached extends HttpServlet { private static MemcachedClient cache = null; private static Object _synchObject=new Object(); protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (cache == null) { synchronized (_synchObject) { if (cache == null) { cache = new MemcachedClient( new InetSocketAddress("10.100.1.251", 11211)); } } } response.setContentType("image/png"); OutputStream out = response.getOutputStream(); try { String path = request.getQueryString(); byte[] bytes = (byte[]) cache.get(path); if (bytes == null) { //------------------- ByteArrayOutputStream baos = new ByteArrayOutputStream(); FileInputStream fis = new FileInputStream(new File("c:/temp/tile/" + path)); byte[] buf = new byte[1024]; int len; while ((len = fis.read(buf)) > 0) { baos.write(buf, 0, len); } fis.close(); baos.close(); bytes = baos.toByteArray(); cache.set(path, 0, bytes); //-------- } out.write(bytes); out.flush(); } finally { out.close(); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } }

EK 3- REDIS

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
package cache; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ervlet(name = "Redis", urlPatterns = {"/Redis"}) public class Redis extends HttpServlet { private static final JedisPool jedisPool = new JedisPool("localhost", 6379); private static final Jedis cache = jedisPool.getResource(); protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("image/png"); OutputStream out = response.getOutputStream(); try { String path = request.getQueryString(); byte[] bytes = cache.get(path.getBytes()); if (bytes == null) { //------------------- ByteArrayOutputStream baos = new ByteArrayOutputStream(); FileInputStream fis = new FileInputStream(new File("c:/temp/tile/" + path)); byte[] buf = new byte[1024]; int len; while ((len = fis.read(buf)) > 0) { baos.write(buf, 0, len); } fis.close(); baos.close(); bytes = baos.toByteArray(); cache.set(path.getBytes(), bytes); //-------- } out.write(bytes); out.flush(); } finally { out.close(); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } }

Alıntı / Düzenlenmiştir.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet sohbet
Cevapla

Etiketler
cache, hızları, karşılaştırılması, okuma, teknolojilerinin, yönünden, Önbellek


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Hayvanların Hızları Liaaa Hayvanlar Alemi 0 20 Şubat 2012 17:07
Öküz Başlı Antilopların Hızları KarakıZ Hayvanlar Alemi 0 03 Eylül 2011 15:59
Bitki ve Hayvan Hücrelerinin Karşılaştırılması YapraK Ödev ve Tezler 0 08 Mayıs 2009 04:35
Nokia cep programların anlamları ram hızları formatları hakkında Kralice Cep Telefonlar 0 28 Ekim 2008 20:57