Önbelleğe alma anlamı
Önbelleğe alma, sık erişilen verilerin yeniden kullanılabilir kopyalarını bellekte tutar. Böylece uygulamalar yinelenen veritabanı çağrılarından kaçınır ve sonuçları daha hızlı döndürür.
Önbelleğe alma, sık erişilen verilerin yeniden kullanılabilir kopyalarını bellekte tutar. Böylece uygulamalar yinelenen veritabanı çağrılarından kaçınır ve sonuçları daha hızlı döndürür.
Önbelleğe alma, uygulamaların anahtar değer verilerini geleneksel depolamadan yapabileceğinden daha hızlı alabilmesi için bu verileri geçici bellekte (ilişkisel olmayan yapılandırılmış sorgu dili (NoSQL) veritabanı gibi) depolama uygulamasıdır. İsteklerin çoğu zaman ağları aştığı ve paylaşılan hizmetlere dokunduğu bulut depolama mimarisinde önbelleğe alma, yanıt sürelerinin düşük kalmasına ve yinelenen işlerin azalmasına yardımcı olabilir.
Çoğu sistem, tam veri kümeleri için dayanıklı bir “doğruluk kaynağı” (veritabanı) tutar. Sonra da sık okunan geçici alt kümeler için bir önbellek tutar. Bir istek geldiğinde uygulama önce önbelleği denetler. Veri oradaysa arka ucu yeniden sorgulamadan hızlıca döndürür. Geliştiriciler ayrıca işlenmiş verileri önbelleğe alır ve bunları, ilişkisel veritabanları, SQL veritabanları veya açık kaynak PostgreSQL veritabanları için standart sorgulardan daha hızlı biçimde istekleri karşılamak amacıyla yeniden kullanır.
İyi adaylar arasında tekrar tekrar okunan veriler ve nadiren değişen veriler bulunur (örneğin, ürün ve fiyatlandırma bilgileri ya da oluşturulması maliyetli olan paylaşılan statik kaynaklar).
Bir işlem verileri dönüştürürse veya karmaşık bir hesaplama yaparsa sonucu önbelleğe almak, sonraki istekler için bunun yeniden hesaplanmasını önleyebilir.
Geliştiriciler talebe göre farklı veri türlerini ayrı önbelleklerde depolamak üzere çok düzeyli önbellekler ("önbellek katmanları") kullanır. Bir veya daha fazla önbellek katmanı eklemek, bir veri katmanında aktarım hızını ve gecikmeyi iyileştirebilir.
Bellek içi depolar genellikle kullanıcı girişi, alışveriş sepeti girdileri veya kişiselleştirme tercihleri gibi yüksek hacimli oturum verilerini kısa sürelerle tutmak için kullanılır. Durum bilgisi olan uygulamalar için ekipler, uygulamanın durum bilgisiz olabilmesi için oturum durumunu da önbellekte depolar.
Önbelleğe alma performansı birkaç somut şekilde iyileştirebilir:
Birçok bulut tasarımında önbellek, birincil veri deposunun (veritabanı gibi) yanında yer alır. Birincil depo, bulut sunucusundaki eksiksiz ve dayanıklı veri kümesini tutarken önbellek, okuması daha hızlı olan daha küçük ve geçici bir alt küme tutar.
Yaygın bir yapı, bağımsız bir önbellek katmanıdır veya uygulama ya da veritabanı katmanı içinde yer alan bir önbellektir. Seçim, hızlı okumalara nerede ihtiyacınız olduğuna göre yapılır.
Bazı sistemler, farklı veri türlerinin talebe göre farklı önbelleklerde yer alması için çok düzeyli önbelleğe alma (“önbellek katmanları”) kullanır. Bir veya daha fazla önbellek katmanı eklemek, arka uç yükünü azaltarak veri katmanı için aktarım hızını ve gecikmeyi iyileştirebilir ve genel maliyeti düşürebilir.
Ekipler genellikle şu birkaç gruba giren verileri önbelleğe alır:
Uygulamaların önbellekten okumak ve önbelleğe yazmak için kullandığı birkaç standart yol vardır. İşte en yaygın kalıplar ve pratikte ne anlama geldikleri.
Önbellek katmanları kullanmak, yaygın istekleri arka uç deposunu tekrar tekrar sorgulamak yerine önbellekten karşılayarak aktarım hızını ve gecikmeyi iyileştirebilir. Bu, veritabanına ulaşan isteklerin sayısı en başta daha az olduğu için veritabanı altyapısını ölçeklendirme gereksinimini azaltabilir.
Kullanımda ani artışların olduğu uygulamalarda, bellek içi önbellekler sık istenen verileri kullanıldıkları yere yakın tutarak gecikmeyi azaltmaya yardımcı olabilir.
Bir iş akışı seçerken bunları başlangıç noktası olarak kullanın:
Önbelleğe alma, uygulama performansını artırır, çünkü bellek içi önbellekten okumak disk odaklı bir veri deposundan okumaktan daha hızlıdır. Daha fazla istek önbellekten karşılandığında, sistemler arka uç veritabanlarına daha az sorgu gönderir. Bu da veritabanı altyapısını ölçeklendirme gereksinimini azaltabilir ve ilgili maliyetleri düşürebilir.
Önbelleğe alma tekrarlanan işleri azaltmaya yardımcı olur. Tekrar tekrar okunan ya da oluşturulması maliyetli olan veriler bir kez depolanıp yeniden kullanılabilir. Bir işlem karmaşık bir hesaplama yaparsa veya veri dönüştürürse, sonucun önbelleğe alınması sonraki istekler için yinelenen hesaplamayı azaltır.
Birçok site sayfa çıkışını önbelleğe alır (HTML ve istemci betikleri gibi). Böylece sunucu, her seferinde sayfa kodunu yeniden çalıştırmak yerine önbelleğe alınmış çıkışı döndürebilir. Önbelleğe alma, web önbellekleri ve ağ önbelleğe alma üzerinden web multimedya senaryolarını da destekler. Örneğin, içerik teslim ağları (CDN'ler).
Uygulamalar, hızlı alma için geçici veri alt kümelerini genellikle önbellekte depolarken, birincil veritabanı ise tam ve dayanıklı veri kümesini saklar. İşlenmiş verileri önbelleğe alıp yeniden kullanmak, standart veritabanı sorgularından daha hızlı istek karşılayabilir.
Ekipler, aktarım hızını ve gecikmeyi iyileştirmek için genellikle bir veya daha fazla önbellek katmanı ekler. Böylece yaygın sorgular önbellekten karşılanır ve veritabanı yükü azalır. Bellek içi önbellekler, kullanım arttığında ve aktarım hızı talebi yükseldiğinde yardımcı olarak bu dönemlerde gecikmeyi azaltabilir.
Önbelleğe alma genellikle kısa ömürlü oturum verilerinin (kullanıcı girişi veya kişiselleştirme tercihleri gibi) yüksek hacimlerde bellek içi bir depoda saklanması için kullanılır. Bazı ekipler, durum bilgisi olan uygulamaların uygulama katmanını durum bilgisiz tutabilmesi için oturum durumunu da önbellekte depolar. Operasyonel sistemlerde, ürün ve fiyatlandırma bilgileri gibi seyrek değişen veriler yaygın bir önbelleğe alma hedefidir.
Tarayıcı önbelleği, statik kaynakların kopyalarını kullanıcının cihazında depolar. Böylece yinelenen ziyaretlerde bu dosyalar yeniden indirilmek yerine tekrar kullanılabilir.
Sunucu tarafı önbelleğe alma, son kullanıcının cihazında değil, iş hizmetlerini uzaktan çalıştıran işlemlerde gerçekleşir. Sunucu tarafı önbellekler genellikle ya özel (tek bir uygulama örneğinde yerel) olur ya da paylaşılan (birçok uygulama örneği tarafından kullanılır) olur.
Bir CDN, uç sunuculardaki içeriği son kullanıcılara daha yakın şekilde önbelleğe alır. Böylece isteklerin her zaman kaynağa geri dönmesi gerekmez. Tarayıcı önbelleğinden (tek bir kullanıcı) farklı olarak, bir CDN önbelleği paylaşılır. Bir kullanıcının isteği, daha sonra başka bir kullanıcının aldığı içeriği doldurabilir.
Önbelleğe alma yalnızca bir bulut bilişim kalıbı değildir. Donanım ve bellek katmanları da bunu kullanır.
CPU önbelleği, işlemciye yakın bir yerde (ya da işlemcinin üzerinde) bulunan küçük ve hızlı bir bellek alanıdır. Ana bellekte harcanan bekleme süresini azaltmak için sık kullanılan verilerin ve yönergelerin kopyalarını saklar.
Bellek (bellek içi) önbelleği, yazılım önbelleği türlerinin en basitidir. Tek bir işlemin adres alanında tutulan ve o işlem tarafından doğrudan erişilen bellek içi bir depodur.
Dağıtılmış bir önbellek, birden çok sunucuya yayılır. Böylece önbellek tek bir makineyi aşan bir kapasiteye ve işlem kapasitesine sahip olabilir. Birçok paylaşılan önbellek hizmeti, sunucu kümeleri kullanır ve önbelleğe alınan verileri küme genelinde dağıtır. Önbelleği ölçeklendirmek, daha fazla sunucu eklemek kadar kolay olabilir. Bazı dağıtılmış tasarımlar önbellekleri de katmanlar. Böylece bir katmandaki kaçırma, üstteki sağlayıcıdan veri çeker ve sonucu sonraki istek için yerel olarak depolar.
Önbelleğe alma, sık erişilen verileri kullanıldıkları yere daha yakın tutar. Bu, yanıt sürelerini iyileştirebilir ve bir sistemin daha fazla eşzamanlı isteği işlemesine yardımcı olabilir. Ayrıca, veritabanında sınırlı bağlantı olduğu durumlarda olduğu gibi, özgün veri deposundaki çekişmeyi de azaltabilir.
Dağıtılmış uygulamalarda önbelleğe alma genellikle birden fazla yerde gerçekleşir: İstemci tarafında (tarayıcı gibi) ve sunucu tarafında (bir uygulamada veya paylaşılan bir önbellek hizmetinde).
Küçük başlayın ve size en net getiri sağlayan verilere odaklanın:
Bir önbellek genellikle birincil depodaki verilerin kopyalarını tutar. Bu yüzden güncelliğe dikkat etmek gerekir:
Önbelleğe alma, modern sistemler için temel bir yapı taşıdır. Çünkü tek hizmetlerden dağıtılmış uygulamalara ve uç teslimata kadar birçok mimariye uyar. Yönetilen, bellek içi bir önbellek bulut sağlayıcısı için Azure'ı keşfedebilirsiniz.