Memcache Danga.com tarafından livejournal için üretilmiş ama ciddi bir soruna çözüm olduğu için çok hızlı şekilde yayılmış bir program ve library’dir. Yapısındaki hız farkı genel olarak libevent aracılığı ile linux altında epoll kullanımından ve memory'i pahalı olan malloc ve free'lerden uzak şekilde slab allocation mantığında kullanmasından gelmektedir. Network üstünden çalışabiliyor olduğu için bir çok serverın aynı cache sistemini kullanabiliyor hale gelmesini sağlamış ve facebook gibi büyük projelerin düşük server maliyetleri ile ayakta kalmasını sağlar hale gelmiştir.
Webde yüksek verim nedir ve genel olarak kullanılan cache(ön bellek) sistemleri nelerdir biraz bakalım. Cache dediğimiz konu aslında temel olarak webdeki program, web server veya database’in üstüne düşen yükün azaltılarak kullanıcıya daha hızlı şekilde verilmesi esasına dayanır.
Yazıyı normalde üç veya dört parçaya bölmeyi düşünmeme rağmen konunun bütünlüğünün bozulmaması için çok fazla bölmemek gerektiğini düşünüyorum. Basitten gelişmiş anlatıma doğru giderek, sadece memcache konusunun detayı fazla olduğu için memcache konusunu farklı bir başlık altında anlattım. Bu yazıda ise biraz daha özet olarak memcache’den bahsedeceğim. Yazıda her dile uygun olabilmesi için, code örnekleri yerine genel olarak yapıyı sorunları ve cözümleri anlatmaya çalıştım. Genede PHP ağırlıklı bir yazı olduğunuda kabul etmek gerekiyor.
Bilindiği gibi Php ile Memcache kullanılarak veritabanı üzerinden çok fazla yük alınabiliyor. Ayrıca Memcache’nin dağılabilir yapısı bize birçok kolaylık sağlayabiliyor. Örneğin çoklu web sunucularında tek bir Memcache ile veri paylaşımı yapılabiliyor veya çoklu Memcache sunucuları kullanılarak daha sağlam bir cache yapısı kurulabiliyor. Memcache’nin kullanımında başka bir kolaylık sağlayabilecek şey ise MySQL’den direk Memcache’ye erişebilmek, veri okuyup saklayabilmek. Bu yazıda bu işlemin nasıl olduğunu ve kendi yaptığım çeşitli performans testlerini anlatacağım.
Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.