---
title: 'Yönetilen Önbellek Servisi'
source: 'https://academia.sh/tr/kurslar/bulut-depolama/yonetilen-onbellek-servisi'
course: 'Bulutta Depolama ve Veri'
language: tr
updated: '2026-08-17T18:06:56+00:00'
license: 'CC BY-SA 4.0'
---

# Yönetilen Önbellek Servisi

Bellek içi katmanın hizmet olarak kiralanmasının ölçülmesi: iki ölçekleme ekseninin aynı isabeti ve aynı faturayı vermesi, yüzde yüz isabetin en pahalı satır çıkması, bir düğüm değiştiğinde giden üç milyon üç yüz yetmiş bin anahtarın satın alınan kapasiteyi yüzde üç yüz yirmi beş aşması, ısınmanın parça sayısıyla kısalmaması, ve başka alandaki önbelleğin yedi yüz yirmi iki birimlik aktarım kalemi yazıp önbelleksiz düzenden pahalıya gelmesi.

Bir önceki ders erişim örüntüsünü genişletti: ikincil dizin ve değişim akışı, bölüm anahtarının
kapattığı sorguların bir bölümünü geri açtı. Ama açılan her sorgu hâlâ veri katmanına iniyor.

Bellek içi depolar ve tahliye politikaları daha önce ölçüldü; bu ders o mekaniği tekrarlamaz.
Burada bellek içi katman **kiralanan bir hizmettir** ve ölçülen üç şey ölçekleme biriminin ne
olduğu, bir düğüm değiştiğinde ne gittiği ve önbelleğin nerede durduğunun faturaya ne yazdığıdır.

- **YV25.** Kurgu bölgesel ölçüm ağının okuma kümesi üç ailedir: sayaç son okuması (2,4 milyon
  anahtar, 180 bayt), fatura özeti (600 bin, 2.400 bayt), iş emri kaydı (4 milyon, 600 bayt);
  toplam 4,272 GB.
- **YV26.** Her aile üç popülerlik dilimiyle modellenir. Model önbelleği anahtar başına olasılık
  sırasına göre doldurur, ilk dokunuş ıskalarını saymaz, rastgelelik kullanmaz.
- **YV27.** Okuma ortalama dört yüz, tepede üç bin istek/s; ayrıca sürekli dört yüz istek/s yazma
  vardır ve yazma önbelleğe uğramaz. Bir ay 2.592.000 saniye sayılır.
- **YV28.** Fiyatlar kurgudur, para biriminin adı **birim**dir: önbellek düğümü GB başına ayda
  altmış birim; okuma kapasitesi yüz istek/s adımıyla satın alınır, adım ayda otuz birimdir.
  Sağlayıcı düğüm belleğinin **yüzde yetmiş beşini** kullanıma açar.
- **YV29.** Gecikmeler kurgudur: veri katmanı 6 ms, aynı alandaki yönetilen önbellek 0,8 ms, başka
  alandaki 1,9 ms, süreç içi 0,02 ms. Alanlar arası aktarım GB başına bir birimdir.
- **YV30.** Sayaç toplayıcısı dakikalık toplamayı önbellekte biriktirip beş saniyede bir boşaltır;
  önbellek kopyasının gecikmesi 0,25 saniyedir. İkisi de kurgudur.

```js
// onbellek/onbellek.mjs — model: bellek ici katman hizmet olarak kiralandiginda ne degisiyor.
// Tahliye politikalari M17/K06'da olculdu, tekrarlanmaz. Is kumesi populerlik dilimleriyle
// modellenir, rastgelelik yok; fiyatlar kurgudur ve 1 GB = 1e9 bayt sayilir.
const DILIM = [                       // [aile, dilim, anahtar, bayt, erisim payi]
  ["sayac", "sicak", 150000, 180, 0.15], ["sayac", "ilik", 850000, 180, 0.20],
  ["sayac", "soguk", 1400000, 180, 0.16],
  ["fatura", "sicak", 18000, 2400, 0.10], ["fatura", "ilik", 140000, 2400, 0.09],
  ["fatura", "soguk", 442000, 2400, 0.04],
  ["isemri", "sicak", 80000, 600, 0.06], ["isemri", "ilik", 620000, 600, 0.10],
  ["isemri", "soguk", 3300000, 600, 0.10],
];
const SIRA = [...DILIM].sort((a, b) => b[4] / b[2] - a[4] / a[2]);  // anahtar basina olasilik
const doldur = (kap) => {             // onbellek en cok istenen anahtardan baslayarak dolar
  let kalan = kap, anahtar = 0, isabet = 0;
  const tutulan = [];
  for (const [, , n, b, pay] of SIRA) {
    const alinan = Math.min(n, Math.floor(kalan / b));
    if (alinan === 0) break;
    kalan -= alinan * b; anahtar += alinan; isabet += pay * alinan / n;
    tutulan.push([pay * alinan / n, pay / n]);   // [tutulan pay, anahtar basina olasilik]
  }
  return { anahtar, isabet, tutulan };
};
const TEPE = 3000, YAZMA = 400, ORAN = 0.75, GB_UCRET = 60;
const ucret = (inen) => Math.ceil((inen + YAZMA) / 100) * 30;
const sutun = (E, sol = 1) => (h) =>
  h.map((d, i) => String(d)[i < sol ? "padEnd" : "padStart"](E[i])).join("");
const y1 = sutun([14, 5, 16, 14, 11, 15, 10, 8, 15]);
console.log(y1(["dugum x GB", "GB", "kullanilabilir", "anahtar(bin)", "isabet(%)",
  "inen(istek/s)", "kapasite", "dugum", "toplam(birim)"]));
for (const [ad, d, g] of [["onbellek yok", 0, 0], ["1 x 1", 1, 1], ["1 x 2", 1, 2],
  ["2 x 1", 2, 1], ["1 x 4", 1, 4], ["1 x 8", 1, 8]]) {
  const o = d ? doldur(d * g * 1e9 * ORAN) : { anahtar: 0, isabet: 0 };
  const inen = Math.round(TEPE * (1 - o.isabet));
  const kap = ucret(inen), dug = d * g * GB_UCRET;
  console.log(y1([ad, d * g, (d * g * ORAN).toFixed(2), (o.anahtar / 1e3).toFixed(0),
    (o.isabet * 100).toFixed(1), inen, kap, dug, kap + dug]));
}

// --- Bir dugum degistiginde ------------------------------------------------------
// 2 GB duzen. Karma anahtar adini dagittigi icin her parca her dilimden esit pay alir.
const D = doldur(2 * 1e9 * ORAN), INEN = Math.round(TEPE * (1 - D.isabet)) + YAZMA;
const ALINAN = ucret(INEN - YAZMA) / 30 * 100, BEKLEYEN = YAZMA * 5, GECIKME = 0.25;
const y2 = sutun([14, 18, 16, 15, 10, 15]);
console.log("\n" + y2(["parca", "kaybolan anahtar", "kaybolan erisim", "inen(istek/s)",
  "asim(%)", "bekleyen kayit"]));
for (const [p, kopyali] of [[1, 0], [2, 0], [4, 0], [8, 0], [16, 0], [4, 1]]) {
  const anahtar = Math.round((kopyali ? INEN * GECIKME : D.anahtar) / p);
  const pay = kopyali ? 0 : D.isabet / p;
  const inen = Math.round(TEPE * (1 - D.isabet + pay)) + YAZMA;
  console.log(y2([kopyali ? `${p} (kopyali)` : p, anahtar, (pay * 100).toFixed(1), inen,
    ((inen / ALINAN - 1) * 100).toFixed(0),
    Math.round((kopyali ? YAZMA * GECIKME : BEKLEYEN) / p)]));
}
const donen = (t) => D.tutulan.reduce((a, [pay, r]) => a + pay * (1 - Math.exp(-r * TEPE * t)), 0);
const isinma = (oran) => {
  let alt = 1, ust = 1e6;
  for (let k = 0; k < 60; k++) {
    const t = Math.sqrt(alt * ust);
    if (donen(t) < oran * D.isabet) alt = t; else ust = t;
  }
  return ust.toFixed(0);
};
console.log(`isinma, parca sayisindan bagimsiz: %50 ${isinma(0.5)} s, %90 ${isinma(0.9)} s`);

// --- Onbellek nerede duruyor -----------------------------------------------------
const VERI_MS = 6, ALAN_UCRET = 1, AY = 2592000;   // ms; alanlar arasi birim/GB; saniye/ay
const ORT_BAYT = DILIM.reduce((a, [, , , b, pay]) => a + b * pay, 0);
const y3 = sutun([10, 26, 11, 14, 11, 11, 10, 15], 2);
const satir = (kume, ad, h, ms, okuma, bayt, tepe, yazma, onbellek, uzak) => {
  const inen = Math.round(tepe * (1 - h));
  const kapasite = Math.max(1, Math.ceil((inen + yazma) / 100)) * 30;
  const aktarim = (uzak ? h * okuma * bayt / 1e9 : 0) * ALAN_UCRET;
  console.log(y3([kume, ad, (h * 100).toFixed(1), (ms + (1 - h) * VERI_MS).toFixed(2),
    onbellek, kapasite, aktarim.toFixed(0), (onbellek + kapasite + aktarim).toFixed(0)]));
};
console.log("\n" + y3(["kume", "duzen", "isabet(%)", "gecikme(ms)", "onbellek", "kapasite",
  "aktarim", "toplam(birim)"]));
const TAM = (ad, h, ms, onbellek, uzak) =>
  satir("tam kume", ad, h, ms, 400 * AY, ORT_BAYT, TEPE, YAZMA, onbellek, uzak);
TAM("onbellek yok", 0, 0, 0, false);
TAM("surec ici 12 x 256 MB", doldur(256e6).isabet, 0.02, 0, false);
TAM("yonetilen 2 GB ayni alan", D.isabet, 0.8, 2 * GB_UCRET, false);
TAM("yonetilen 2 GB baska alan", D.isabet, 1.9, 2 * GB_UCRET, true);
// Tarife tablosu: 20 bin anahtar x 2000 bayt = 40 MB, ayda 320 milyon okuma, tepe 900/s.
const TAR = (ad, h, ms, onbellek, uzak) =>
  satir("tarife", ad, h, ms, 320e6, 2000, 900, 0, onbellek, uzak);
TAR("surec ici 12 x 40 MB", 1, 0.02, 0, false);
TAR("yonetilen 1 GB ayni alan", 1, 0.8, GB_UCRET, false);
TAR("yonetilen 1 GB baska alan", 1, 1.9, GB_UCRET, true);
```

```
dugum x GB       GB  kullanilabilir  anahtar(bin)  isabet(%)  inen(istek/s)  kapasite   dugum  toplam(birim)
onbellek yok      0            0.00             0        0.0           3000      1020       0           1020
1 x 1             1            0.75          1476       63.8           1085       450      60            510
1 x 2             2            1.50          3370       87.0            390       240     120            360
2 x 1             2            1.50          3370       87.0            390       240     120            360
1 x 4             4            3.00          4880       93.6            193       180     240            420
1 x 8             8            6.00          7000      100.0              0       120     480            600

parca           kaybolan anahtar kaybolan erisim  inen(istek/s)   asim(%) bekleyen kayit
1                        3370000            87.0           3400       325           2000
2                        1685000            43.5           2095       162           1000
4                         842500            21.8           1442        80            500
8                         421250            10.9           1116        40            250
16                        210625             5.4            953        19            125
4 (kopyali)                   49             0.0            790        -1             25
isinma, parca sayisindan bagimsiz: %50 539 s, %90 3514 s

kume      duzen                       isabet(%)   gecikme(ms)   onbellek   kapasite   aktarim  toplam(birim)
tam kume  onbellek yok                      0.0          6.00          0       1020         0           1020
tam kume  surec ici 12 x 256 MB            34.7          3.94          0        720         0            720
tam kume  yonetilen 2 GB ayni alan         87.0          1.58        120        240         0            360
tam kume  yonetilen 2 GB baska alan        87.0          2.68        120        240       722           1082
tarife    surec ici 12 x 40 MB            100.0          0.02          0         30         0             30
tarife    yonetilen 1 GB ayni alan        100.0          0.80         60         30         0             90
tarife    yonetilen 1 GB baska alan       100.0          1.90         60         30       640            730
```

## İki Eksen, Tek Eğri

Yönetilen önbellek servisi iki ölçekleme kolu sunar: düğümü büyütmek ve düğüm eklemek. Birinci
tablo ikisini yan yana koyuyor ve ilk okuma şudur: **fark yok.** İki GB'a bir düğümle de iki
düğümle de varılıyor; ikisinde de önbellekte üç milyon üç yüz yetmiş bin anahtar, isabet yüzde
seksen yedi, fatura üç yüz altmış birim. Ölçekleme birimi kararı **isabet ve fiyat üzerinden
verilemez.**

Faturanın kendisi ikinci okumadır. Önbelleksiz düzen bin yirmi birim; bir GB isabeti yüzde altmış
üç virgül sekize çıkarıp faturayı beş yüz ona, iki GB üç yüz altmışa indiriyor. Sonra eğri
**dönüyor**: dört GB'da dört yüz yirmi, sekiz GB'da altı yüz. Yüzde yüz isabetli satır iki GB'lık
satırdan **yüzde altmış yedi pahalıdır**; kalan yüz yirmi birim önbelleğe hiç uğramayan dört yüz
istek/s yazmaya gidiyor ve onu düşürmenin yolu önbellek değildir.

Kullanılabilir sütunu üçüncü okumadır: sekiz GB satın alındığında altı GB kullanılıyor, aradaki
dörtte bir sağlayıcının defterine gidiyor. İş kümesi 4,272 GB olduğuna göre onu tümüyle bellekte
tutmak için gereken düğüm dört GB değil, sekiz GB'dır.

## Bir Düğüm Değiştiğinde

Düğüm değişimi olağan bir olaydır — sürüm yükseltmesi, yama penceresi ya da arızalı düğümün yerine
konması — ve önbellek kalıcı değildir: değişen düğümün belleği boş gelir.

Tek parçalı düzende üç milyon üç yüz yetmiş bin anahtarın **tamamı** gidiyor. İnen istek yedi yüz
doksandan üç bin dört yüze çıkıyor ve satın alınan sekiz yüz istek/s kapasitenin **yüzde üç yüz
yirmi beş üstüne** oturuyor. Bu bir çökme değil, kısılmadır: veri katmanı fazlasını geri çevirir,
pano boş döner.

Parça sayısı dalganın **yüksekliğini** düşürüyor: dört parçada aşım yüzde seksen, on altı parçada
yüzde on dokuz. Sayı düşüyor ama **hiçbir parça sayısında sıfırlanmıyor.** Son satır tek çözümü
gösteriyor: her parçaya bir kopya eklendiğinde düğüm değişimi devralmaya dönüşüyor ve giden anahtar
kırk dokuza — çeyrek saniyelik kopya gecikmesinde yazılmış anahtarlara — iniyor. Bedeli birinci
tabloda okunur: düğüm ücreti yüz yirmiden iki yüz kırka, toplam üç yüz altmıştan dört yüz seksene
çıkar.

Son sütun bu dersin **geri alınamayan kalemidir**. Toplayıcı dakikalık toplamayı önbellekte
biriktirip beş saniyede bir yazıyor; her an iki bin kayıt yalnızca bellektedir ve dört parçalı
düzende bir düğüm gittiğinde bunların beş yüzü kaybolur. Önbellekteki bir kopya geri getirilebilir,
önbellekteki bir **asıl** getirilemez.

Isınma satırı dalganın uzunluğunu veriyor: erişim payının yarısı beş yüz otuz dokuz, yüzde doksanı
3.514 saniyede geri geliyor. Bu süre **parça sayısından bağımsızdır**: karma anahtar adını
dağıttığı için her parça her popülerlik diliminden aynı oranda pay alır ve bir parçanın ısınma
eğrisi bütünün eğrisiyle aynıdır. **Bölmek dalganın yüksekliğini düşürür, uzunluğunu düşürmez.**
Dört parçalı düzende veri katmanı bir saate yakın süre satın alınanın üstünde yük taşır; o
pencerenin ne zaman açılacağı senin kararın değildir.

## Önbellek Nerede Duruyor

Üçüncü tablonun ilk dört satırı aynı okumayı dört düzende karşılıyor. Yönetilen önbellek aynı
alanda durduğunda hem en ucuz hem en hızlıdır: üç yüz altmış birim, 1,58 ms.

Süreç içi önbellek satırı hizmet olmanın ne getirdiğini gösteriyor. On iki uygulama örneğinin her
biri iki yüz elli altı MB ayırıyor — toplam üç GB — ve isabet yüzde otuz dört virgül yedide
kalıyor; yönetilen önbellek bir buçuk GB kullanarak yüzde seksen yediye çıkıyor. Fark bellek
miktarında değil, **havuzun tekliğinde**: on iki ayrı önbellek aynı anahtarların on iki kopyasını
tutar ve her biri yalnız kendi gördüğü isteklerle ısınır.

Dördüncü satır bu dersin aktarım kalemidir. Önbellek başka bir alana konduğunda isabet değişmiyor
ve faturaya **yedi yüz yirmi iki birimlik** yeni bir kalem yazılıyor: ayda bir milyar otuz altı
milyon sekiz yüz bin okumanın yüzde seksen yedisi, ortalama sekiz yüz bayt yanıt, GB başına bir
birim. Önbellek düğümünün kendisi yüz yirmi birimdir; yanlış alana koymanın bedeli düğümün **altı
katıdır** ve toplam bin seksen iki birim, yani **önbelleksiz düzenden pahalı**.

## Kazandırmadığı Durum

Son üç satır bölge tarife tablosunu ölçüyor: kırk MB, ayda üç yüz yirmi milyon okuma, her düzene
tümüyle sığan bir küme. Süreç içi önbellek otuz birime ve 0,02 milisaniyeye mal oluyor; aynı
alandaki yönetilen önbellek doksan birim ve 0,80 ms — üç kat pahalı, kırk kat yavaş. Başka alanda
yedi yüz otuz birim, yani **yirmi dört katı**.

Yönetilen önbellek burada hiçbir şey kazandırmıyor: küme zaten her sürecin belleğine sığdığı için
paylaşılan havuz gereksizdir, ağ üzerinden erişim saf bedeldir. Kural şudur: **yönetilen önbellek,
iş kümesi tek sürecin belleğine sığmadığında kazandırır.** Süreç içi düzenin bedeli tabloda yok:
on iki kopya, on iki ayrı tazelik penceresidir.

## Devredilen Karar

Kiralanan kümede kararlar şöyle bölünüyor:

| Grup | Sende | Sağlayıcıda | Yaratılışta sabit |
|---|---|---|---|
| sürüm | motor sürümü, yama penceresi | yamanın zorunlu olduğu an | — |
| bakım | yedekleme açık mı | değişim zamanı, düğüm yenileme, yedeğin yeri | — |
| ölçekleme | düğüm boyutu, parça sayısı, kopya sayısı | kullanılabilir bellek oranı | parça sayısı |
| veri | tahliye politikası, anahtar adlandırması, yaşam süresi | değişimde giden veri | — |
| ağ | kümenin alanı | istemcinin düştüğü düğüm | kümenin alanı |

On yedi kalemin **onu sende**, yedisi sağlayıcıda, ikisi yaratılışta sabit. Bakım grubunun dört
kaleminin üçü devredilmiştir; ikinci tablonun bir saatlik ısınma penceresi buraya bağlanır —
pencerenin **ne zaman açılacağına** karar veren sen değilsin.

Motor sürümünü sen seçiyorsun ama seçim tek yönlüdür: yükseltilen bir küme eski sürüme dönmez.
Ölçeklemede sabitlenen kalem **parça sayısıdır**; değiştirildiğinde bütün anahtarlar yeniden
dağıtılır ve dağıtım boyunca isabet düşer. Birinci tablonun "aynı isabet, aynı fiyat" sonucu bu
yüzden yanıltıcıdır: iki kol aynı yere çıkar ama biri geri dönülebilir, diğeri değildir. Kümenin
alanı da sabittir ve yedi yüz yirmi iki birimlik kalem doğrudan buna bağlıdır.

## Özet

- İki GB'a hangi yoldan varılırsa varılsın isabet yüzde seksen yedi, fatura üç yüz altmış birim:
  ölçekleme birimi kararı isabetten ve fiyattan okunamaz.
- Fatura eğrisi dönüyor: önbelleksiz bin yirmi, bir GB'da beş yüz on, iki GB'da üç yüz altmış, dört
  GB'da dört yüz yirmi, sekiz GB'da altı yüz birim. Yüzde yüz isabet en pahalı satırdır.
- Tek parçalı bir düğüm değişimi inen isteği satın alınan kapasitenin yüzde üç yüz yirmi beş üstüne
  çıkarıyor; on altı parçada bu yüzde on dokuza iner ama sıfırlanmaz. Isınma her düzende 3.514
  saniyedir. Geri alınamayan kalem yazma-arkası kipte bekleyen kayıtlardır.
- Önbelleği başka alana koymak yedi yüz yirmi iki birimlik aktarım kalemi yazıp toplamı önbelleksiz
  düzenin üstüne çıkarıyor. Kırk MB'lık tarife tablosunda süreç içi önbellek otuz, yönetilen
  önbellek doksan birim tutuyor: iş kümesi tek sürece sığdığında yönetilen önbellek kazandırmaz.

## Sonraki Adım

Bu derste aktarım tek bir sütundu ve tek bir fiyatı vardı: alanlar arası, GB başına bir birim. O
tek sütun, yerleşim kararı yanlış olduğunda faturanın en büyük kalemi oldu.

Ölçüm ağının geri kalanında aynı sütun defalarca yazılıyor: toplayıcı veri katmanına yazıyor, veri
katmanı okuma kopyasına çoğaltıyor, yedekler gönderiliyor, günlükler akıyor, pano yanıtları genel
ağa çıkıyor. Her akış, kaynağının ve hedefinin **nerede durduğuna** göre farklı fiyatlanıyor: aynı
alan, komşu alan, uzak bölge ya da internet.

Sonraki ders bu kursun para dersidir: aynı mimari üç yerleşimde koşturulup çıkış ücreti kalem kalem
çıkarılır, ardından kopya sayısı, günlük ve yedek gönderimi, kenar kullanımı ve sıkıştırma
kararlarının bu ücrete etkisi sayılır.
