This is the Trace Id: 88e95b71b99f54eed4f8f0f016d63e3c
Ana içeriğe atla
Azure
gradyan arka plan

Önbelleğe alma nedir?

Önbelleğe almanın sistem performansını ve verimliliğini nasıl artırdığını öğrenin.

Ö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.

Önemli çıkarımlar

  • Önbelleğe alma, sık istenen verileri hızlı bellekte saklar. Böylece uygulamalar her seferinde birincil veritabanına ulaşmadan daha hızlı yanıt verebilir.
  • Tipik bir istek önce önbelleği denetler, sonra bir eksik olduğunda kaynak depodan çeker ve yaygın okuma/yazma desenlerini kullanarak önbelleği günceller.
  • Doğru yapıldığında önbelleğe alma gecikme süresini ve arka uç yükünü azaltır, trafik artışlarını işlemeye yardımcı olur ve web siteleri, API'ler ve oturum durumu gibi yaygın senaryoları destekler.
  • Önbelleğe alma birden çok katmanda görünür ve kararlı, okuma ağırlıklı veriler seçip yedek planı olan dayanıklı bir doğruluk kaynağı tuttuğunuzda en iyi şekilde işe yarar.

Önbelleğe almayı anlamak

Önbellek nedir?

Ö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.

Önbelleğe alma nasıl çalışır?

Ç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.

Önbelleğe almanın ardındaki temel ilkeler

1. Sık okuduğunuz verileri önbelleğe alın

İ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).

2. Tekrarlanan işlerin sonuçlarını önbelleğe alın

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.

3. Gerekli olduğunda önbellek katmanları kullanın

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.

4. Oturum durumunu duyarlı uygulamalar için yakın tutun

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.

Sistem performansına etkisi

Önbelleğe alma performansı birkaç somut şekilde iyileştirebilir:

  • Verileri bellek içi bir önbellekten okumak, disk odaklı bir depodaki verilere erişmekten daha hızlı bir işlemdir.
  • Daha az sorgu olması, yükü azaltabilir ve veritabanı altyapısını ölçeklendirme ihtiyacını sınırlandırabilir. Bu da maliyetleri düşürebilir.
  • Önbellek katmanları aktarım hızını ve gecikmeyi iyileştirebilir. Bellek içi önbellekler ise kullanım artışları sırasında gecikmeyi azaltmaya yardımcı olabilir.
  • Bir önbellek örneği saniyede milyonlarca isteği işleyerek birçok veritabanının yakalayamadığı bir aktarım hızı sunabilir.

Önbelleğe alma nasıl çalışır?

Temel akış: Önbellek + kaynak veri deposu

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.

Önbellek katmanları: Birden fazla "hızlı yol"

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.

Neler önbelleğe alınır (ve neden)?

Ekipler genellikle şu birkaç gruba giren verileri önbelleğe alır:

  • Sık okunan veriler (özellikle de nadiren değişiyorsa), örneğin, ürün veya fiyatlandırma bilgileri ve oluşturulması maliyetli olan paylaşılan statik kaynaklar.
  • Yinelenen hesaplamalar. Bir işlem verileri dönüştürürse ya da karmaşık bir hesaplama yaparsa sonucu önbelleğe almak, sonraki istekler için aynı işi yeniden yapmayı önler.
  • Durum bilgisi olan uygulamalar için oturum durumu. Oturum durumunu önbellekte depolamak uygulama katmanının durum bilgisiz kalmasına yardımcı olabilir.

Yaygın önbelleğe alma kalıpları (okuma/yazma iş akışları)

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.

  • Edilgen önbellek: Verileri bir veri deposundan isteğe bağlı olarak yükleyin.
  • Okuma: Önbellekten okuyun. Gerekirse önbellek veri deposundan getirir.
  • Yazma: Önbelleğe yazın. Önbellek, veri deposuyla eşzamanlı olarak yeniden eşitlenir.
  • Geri yazma (write-behind): Önbelleğe yazın. Önbellek veriyi toplu olarak veri deposuna geri yazar.
  • Etrafından yazma: Veri deposuna yazın ve önbellekten okuyun. Önbellek isteğe bağlı olarak güncellenir.

Bu neden yükü azaltıyor ve işleri hızlandırıyor?

Ö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.

Hızlı kılavuz: Bir kalıp seçme

Bir iş akışı seçerken bunları başlangıç noktası olarak kullanın:

  • Uygulamanız neleri depolayacağına ve ne zaman yenileyeceğine karar verebildiğinde edilgen önbellek yaklaşımını tercih edin.
  • Önbelleğin, "gerekirse" veri deposundan getirmeyi halletmesini istiyorsanız okuma yaklaşımını tercih edin.
  • Yazma davranışı önemli olduğunda ve tanımlı bir yeniden eşitleme yaklaşımı istediğinizde yazma veya geri yazma yaklaşımını deneyin.

Önbelleğe almanın avantajları ve uygulamaları

Daha az arka uç işiyle daha hızlı yanıtlar

Ö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 almadan sık elde edilenler
  • Sık yapılan okumalar için gecikme azalır çünkü sık istenen veriler daha hızlı bir katmandan gelir.
  • Veritabanı yükü ve maliyeti azalır çünkü önbelleğe alma daha az veritabanı sorgusuna yol açar ve veritabanı örneklerini gerektiğinden fazla sağlama baskısını azaltır.
  • Daha öngörülebilir aktarım hızı elde edilir çünkü önbellek birçok veritabanına kıyasla çok yüksek istek hacmini işleyebilir.
  • Ani trafik artışları daha sorunsuz yönetilir çünkü bellek içi önbellekler yüksek işlem hacmi dönemlerinde gecikmeyi azaltabilir.

İşlem ve depolama kaynaklarının daha iyi kullanımı

Ö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.

Yaygın "iyi önbellek" adayları
  • Seyrek değişen veriler (örneğin, ürün ve fiyatlandırma bilgileri).
  • Oluşturulması maliyetli olan paylaşılan statik kaynaklar.
  • Tekrar tekrar hesaplanan işlemlerin sonuçları.

Gerçek dünya uygulamaları (önbelleğe almanın görüldüğü yerler)

Web siteleri: Daha hızlı sayfa yüklemeleri ve daha az gidiş dönüş

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).

Web sitelerinde tipik kullanım alanları
  • Tekrarlayan görüntülemeler için tam sayfa çıkışını önbelleğe alın.
  • Statik varlıkları ağ/CDN önbelleğe alma üzerinden önbelleğe alın.
Uygulamalar ve API'ler: Paylaşılan veriler için daha hızlı okumalar

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.

Yaygın uygulama kalıpları
  • Yinelenen veritabanı çağrılarını azaltmak için sık okunan başvuru verilerini (fiyatlandırma gibi) önbelleğe alın.
  • Pahalı işlerin tekrar etmesini önlemek için hesaplanan sonuçları önbelleğe alın.
Sunucular ve hizmetler: Okumaları ölçeklendirme ve ani artışları yumuşatma

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.

Bunun en çok yardımcı olduğu yerler
  • Aynı anahtarların sık istendiği yüksek okuma uç noktaları.
  • Belirli aralıklarla trafik artışı yaşayan sistemler.
İş sistemleri: Oturum durumu ve paylaşılan operasyonel veriler

Ö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.

İş yüklerine eşleyebileceğiniz örnekler
  • Web ve mobil uygulamalar için oturum verileri (kısa ömürlü, yüksek hacimli).
  • Sık okunan operasyonel başvuru verileri (fiyatlandırma, paylaşılan kaynaklar).

Önbellek türleri

Önbelleğe alma, bir uygulama ile verileri arasındaki birden çok katmanda görülür. İstemci tarafı ve sunucu tarafı yaklaşımlar buna dahildir.

Tarayıcı önbelleği (istemci tarafı)

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.

Yaygın kullanım örnekleri
  • Görüntüler, CSS dosyaları ve JavaScript dosyaları gibi statik site varlıkları.
  • Önceden getirilen kaynaklar için kaynak sunucuya gidiş dönüş sayısını azaltma.

Sunucu tarafı önbellek

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.

Yaygın kullanım örnekleri
  • Statik verilerin makul miktarları için tek bir işlem içinde yer alan özel, bellek içi önbellek.
  • Birden çok uygulama örneğinin aynı önbelleğe alınmış değerleri okuması ve örnekler arasında "farklı sürümler" oluşmasını önlemesi için paylaşılan önbellek hizmeti.
  • Sık okunan ama seyrek değiştirilen veriler (örneğin, ürün ve fiyatlandırma başvuru verileri).

CDN önbelleği

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.

Yaygın kullanım örnekleri
  • Kaynak isteklerini azaltmak için önbelleğe alınabilir içeriğin uç konumlardan ortak olarak teslim edilmesi.
  • Kullanıcılara yakın sunulmasından yarar sağlayan statik kaynaklar (tarayıcıların önbelleğe aldığı aynı türden varlıklardır ancak kullanıcılar arasında paylaşılırlar).

CPU/Bellek önbelleği

Ö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.

Yaygın kullanım örnekleri
  • CPU önbelleği: Ana belleğe sık gitmeden aynı yönergelere/verilere tekrar tekrar erişim.
  • Bellek içi önbellek: Çalışan tek bir hizmet içinde, göreceli olarak statik verilerin makul miktarlarda hızlı okunması.

Dağıtılmış önbelleğe alma

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.

Yaygın kullanım örnekleri
  • Birden çok uygulama örneği ve makinesi için paylaşılan bir önbellek katmanı.
  • Tek bir konağın önbellek kapasitesini ve aktarım hızını aşan iş yükleri.
  • Kaçırmaların verileri üstten getirdiği ve ardından sonraki istekler için yerel bir kopya tuttuğu katmanlı önbellek yapıları.

Önbelleğe almayı kullanmaya başlayın

Önbelleğe alma neden hala önemlidir?

Ö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).

Başlamak için pratik bir yol

Küçük başlayın ve size en net getiri sağlayan verilere odaklanın:

  • Sık okunan, getirmesi yavaş olan ve nadiren değiştirilen verileri önbelleğe alın (örneğin, başvuru verileri).
  • Verilerin önbelleğe ne zaman gireceğine karar verin:
    • İlk isteğin ardından talep üzerine yapın, böylece yalnızca gerçekten kullanılan verileri saklarsınız.
    • Erken isteneceklerini biliyorsanız başlangıçta bazı öğeleri önceden doldurun (çekirdek oluşturun). Bunu yaparken özgün depodaki başlangıç yükünü izleyin.
  • Yönetebileceğiniz bir kalıp seçin. Edilgen önbellek kalıbı yaygındır ve rehberliği süre sonunun, çıkarmanın ve tutarlılığın sonuçları nasıl etkilediğini vurgular.

Önbelleğe alınan verileri güncel (ve sisteminizi dayanıklı) tutun

Bir önbellek genellikle birincil depodaki verilerin kopyalarını tutar. Bu yüzden güncelliğe dikkat etmek gerekir:

  • Verilerin yenilenmeden önce önbellekte ne kadar süre kalabileceğini sınırlandırmak için süre sonu ilkeleri kullanın.
  • Önbellekler dolduğunda çıkarma davranışını izleyin (birçok sistem varsayılan olarak en son kullanılmayan öğeleri çıkarır).
  • Önbelleği kritik veriler için tek adres olarak görmeyin. Doğruluk kaynağını kalıcı depolamada tutun. Böylece önbellek kullanılamazsa sistem çalışmaya devam edebilir.
  • Önbelleğe erişilemezse özgün veri deposuna bir yedek yol planlayın ve okumalar gerçekleştikçe yeniden doldurun.

Ö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.

gradyan arka plan
Kaynaklar

Kaynaklar

Eğitim
Azure kaynakları
En son geliştirici teknolojisini keşfedin ve yeni beceriler edinin.
Eğitim
Öğrenci geliştirici kaynakları
Kariyerinize hızlı başlangıç yapmak ve dünyada olumlu bir etki bırakmak için beceriler kazanın.
Etkinlikler
Azure etkinlikleri ve web seminerleri
Dijital olarak veya yüz yüze katılarak yeni beceriler edinin, yeni teknolojileri keşfedin ve topluluğunuzla bağlantı kurun.
SSS

Sık sorulan sorular

  • Önbelleğe alma, sık erişilen verileri hızlı bellekte tutar. Böylece uygulamalar, her seferinde birincil veritabanına ulaşmadan sonuçları hızlıca döndürebilir. Bu, gecikmeyi ve arka uç yükünü azaltır. Böylece sistemler daha fazla eşzamanlı isteği işleyebilir.
  • Önbelleğe alma, sık istenen verileri hızlı bellekten sunarak performansı iyileştirir. Bu da gecikmeyi azaltır, veritabanı yükünü ve maliyetini düşürür, yüksek istek hacmini destekler ve trafik artışları sırasında yardımcı olur.
  • Bir örnek çıkışı önbelleğe almadır. Bir web sunucusu, bir sayfanın işlenen çıkışını (HTML ve istemci betikleri) bellekte depolar. Ardından, sayfa kodunu yeniden çalıştırmak yerine tekrar ziyaretlerde bu önbelleğe alınmış çıkışı sunar.
  • Bir önbellek, hızlı erişim için daha küçük ve geçici bir veri alt kümesini saklarken, veritabanı veya depolama ise uzun süreli saklama için eksiksiz ve dayanıklı veri kümesini tutar. Önbelleğe alınmış veriler kaybolursa kalıcı kopya yine de veritabanında bulunur. Önbellekler, kritik veriler için yetkili depolama alanı olarak kullanılmak için tasarlanmamıştır.