İçeriğe geç
academia.sh

Ders 30 / 30

Çoklu Küme Yönetimi

Bölge ve ortam ayrımı sayıya bağlanır: her ayrım ekseni için küme sayısı, sabit işletim saati, sürüm yükseltme penceresi ve patlama yarıçapı birlikte ölçülür. İstenen durum tek yerden çok kümeye dağıtıldığında yayılma penceresi, kısmi başarı ve sapan küme sayılır; iş yükünü kümelere dağıtan bir üst katman modellenip neyi bilmediği için hangi yanlış kararı verdiği gösterilir.

İçindekiler

Bir önceki dersin bütün sayıları tek bir kümeye aitti. Küme tek bir arıza birimidir — tek denetim düzlemi, tek durum deposu, tek yükseltme takvimi — ve bu konunun ikinci dersi düzlemin tamamı düştüğünde kümenin çalışmayı sürdürüp karar veremez hâle geldiğini ölçmüştü.

Çok kümeli işletim iş yükünü birden çok küme arasında bölmektir; ekseni ortam, bölge ya da kiracıdır. Devredilen karar bir üst kata çıkar: bir iş yükünün hangi kümede koşacağına insan değil bir üst katman karar verir. Ölçüm yine bölgesel ölçüm ağı üzerindedir ve kurgudur; gerçek küme koşturulmaz, sayılan şey node ile kurulmuş bir modeldir.

OI55. İş yükü on sekiz hücreye ayrılır: üç ortam, iki bölge, üç kiracı. OI56. İşletim saatleri kume-mimarisi konusundan girdidir: küme başına aylık 67 saat, iş yüküne ait 39 saat, otuz altı ayda küme başına 3 pencere. OI57. İstenen durum tek depodadır; her küme 15 turluk kendi periyoduyla çeker. Çekme anı ve ağ gecikmesi önceden yazılıdır. OI58. Altı kümede birinin kabul denetimi yeni bildirimi reddeder; o küme sapan kalır. OI59. Üst katman modeli 24 iş yükü ve 6 küme taşır; tohum 20260901 çıktıda görünür. OI60. Sonuç üç sınıfa ayrılır: doğru karar, yanlış karar, karar verememe.

Ayrım Ekseni, Yayılma ve Arıza Sınıfı

// bolme.mjs — 18 is yuku hucresi farkli eksenlerde bolunur; sabit maliyet, yayilma, ariza sinifi.
const ORTAM = 3, BOLGE = 2, HUCRE = ORTAM * BOLGE * 3;
const KUME_SAAT = 67, YUK_SAAT = 39, YUKSELTME = 3;   // 33+34 kume basina, 39 is yukune ait
const AYRIM = [["tek kume", 1], ["bolge", BOLGE], ["ortam", ORTAM],
  ["ortam x bolge", ORTAM * BOLGE], ["ortam x bolge x kiraci", HUCRE]];
const p = (x, n) => String(x).padStart(n);

console.log(`${HUCRE} hucre = ${ORTAM} ortam x ${BOLGE} bolge x 3 kiraci`);
console.log("ayrim           kume  hucre  patlama  saat/ay  36 ayda pencere");
for (const [ad, n] of AYRIM) {
  const h = Math.ceil(HUCRE / n);
  console.log(ad.padEnd(24) + p(n, 4) + p(h, 7) + p(`%${((100 * h) / HUCRE).toFixed(1)}`, 9) +
    p(YUK_SAAT + n * KUME_SAAT, 12) + p(n * YUKSELTME, 17));
}

const TUR = 120, U = 15, YAYIN = 10, OKUMA = 26;   // 26: bos dogrulama turunun okumasi
const ofset = (i) => (i * 4) % U, ag = (i) => [0, 1, 2, 1, 2, 0][i % 6];   // onceden yazili
const RED = 3;                                    // bu kumenin kabul denetimi reddediyor
function yayilma(n) {
  const alma = [...Array(n).keys()].map((i) => {
    if (i % 6 === RED) return null;                          // sapan kume: hic uygulayamiyor
    let t = YAYIN;
    while ((t - ofset(i)) % U !== 0) t++;
    return t + ag(i);
  });
  const g = alma.filter((x) => x !== null);
  const kismi = [...Array(TUR - YAYIN).keys()]
    .filter((k) => { const y = g.filter((x) => x <= YAYIN + k).length; return y > 0 && y < n; }).length;
  const tur = n * Math.floor(TUR / U);
  return [Math.min(...g), Math.max(...g), kismi, n - g.length, tur, tur * OKUMA];
}
console.log("\nistenen durum tek depoda; degisiklik 10. turda, periyot 15 tur");
console.log("kume  ilk  son  pencere  kismi tur  sapan  uzlasma turu  okuma");
for (const [, n] of AYRIM) {
  const [i, s, k, sp, t, o] = yayilma(n);
  console.log(p(n, 4) + p(i, 5) + p(s, 5) + p(s - i, 9) + p(k, 19) + p(sp, 7) + p(t, 14) + p(o, 16));
}

const ARIZA = [["denetim duzlemi", 1], ["dugum kaybi", 1], ["surum yukseltme", 1],
  ["kabul kurali degisikligi", 1], ["hatali bildirim", 0], ["paylasilan veri deposu", 0]];
const yal = ARIZA.filter((a) => a[1]);
console.log(`\nariza sinifi ${ARIZA.length}: bolunmeyle yalitilan ${yal.length} (etkilenen hucre ${HUCRE}` +
  ` -> ${HUCRE / 2}); yalitilmayan ${ARIZA.length - yal.length} — ` +
  ARIZA.filter((a) => !a[1]).map((a) => a[0]).join(", ") + ` — iki kumede de ${HUCRE}/${HUCRE}`);
18 hucre = 3 ortam x 2 bolge x 3 kiraci
ayrim           kume  hucre  patlama  saat/ay  36 ayda pencere
tek kume                   1     18   %100.0         106                3
bolge                      2      9    %50.0         173                6
ortam                      3      6    %33.3         240                9
ortam x bolge              6      3    %16.7         441               18
ortam x bolge x kiraci    18      1     %5.6        1245               54

istenen durum tek depoda; degisiklik 10. turda, periyot 15 tur
kume  ilk  son  pencere  kismi tur  sapan  uzlasma turu  okuma
   1   15   15        0                  0      0             8             208
   2   15   20        5                  5      0            16             416
   3   15   25       10                 10      0            24             624
   6   15   25       10                105      1            48            1248
  18   12   25       13                108      3           144            3744

ariza sinifi 6: bolunmeyle yalitilan 4 (etkilenen hucre 18 -> 9); yalitilmayan 2 — hatali bildirim, paylasilan veri deposu — iki kumede de 18/18

Birinci tablonun iki sütunu ters yöne gider. Patlama yarıçapı — bir kümenin kaybında etkilenen hücre oranı — yüzde yüzden yüzde 5,6’ya iner; aylık sabit saat 106’dan 1.245’e, yükseltme penceresi üçten elli dörde çıkar. Bölgeye bölmek yarıçapı yüzde elliye ve yükü 173 saate, ortama bölmek yüzde 33,3’e ve 240 saate taşır: fark yalnız eksendir — bölge ekseni arıza, ortam ekseni değişiklik yalıtımı satın alır.

İkinci tabloda yayılma penceresi tek kümede sıfır, altı kümede on turdur ve o on tur boyunca küme kümesi kısmen yeni, kısmen eskidir. Asıl sayı kısmi başarı sütunundadır: altı kümede on değil yüz beştir, çünkü bir kümenin kabul denetimi bildirimi reddeder. Sapan tek küme, geçici bir pencereyi kalıcı bölünmeye çevirir. Uzlaşma yükü de çarpılır: 208 kalem okuma 3.744’e çıkar.

Son satır çok kümenin kazandırmadığı yeri verir: altı arıza sınıfının dördü yalıtılır, ikisi yalıtılmaz. Paylaşılan veri deposu ile tek depodan çıkıp iki kümeye birden yayılan hatalı bildirim, on sekiz hücrenin on sekizini durdurmayı sürdürür. Bölmek arıza birimini böler, veri katmanını bölmez.

Kararı Bir Üst Katmana Devretmek

// ust-katman.mjs — is yukunun hangi kumeye dusecegine karar veren ust katman ve bilmedigi kalemler.
const HEPSI = ["olcum", "saha", "rapor"];
const KUME = [                            // ad, ortam, bolge, kapasite, kabul ettigi kiracilar
  ["gel-b1", "gelistirme", "b1", 34, HEPSI], ["gel-b2", "gelistirme", "b2", 34, HEPSI],
  ["haz-b1", "hazirlik", "b1", 36, HEPSI], ["haz-b2", "hazirlik", "b2", 36, HEPSI],
  ["ure-b1", "uretim", "b1", 50, ["olcum", "saha"]], ["ure-b2", "uretim", "b2", 26, ["rapor"]]];

const r = ((t) => () => (t = (t * 48271) % 2147483647) / 2147483647)(20260901);   // tohum gorunur
const ORTAM = ["gelistirme", "hazirlik", "uretim"];
const YUK = Array.from({ length: 24 }, (_, i) => ({ ortam: ORTAM[i % 3],
  bolge: r() < 0.5 ? "b1" : "b2", kiraci: HEPSI[Math.floor(r() * 3)], birim: 4 + Math.floor(r() * 9) }));

function kos({ yas = 0, bolgeVar = true, kiraciVar = true }) {
  const dolu = Object.fromEntries(KUME.map(([a]) => [a, 0]));
  let defter = { ...dolu };
  const s = { dogru: 0, red: 0, uzak: 0, ihlal: 0, yok: 0 };
  YUK.forEach((y, i) => {
    if (i % (yas + 1) === 0) defter = { ...dolu };            // defter yas kadar gec tazeleniyor
    let aday = KUME.filter(([, o]) => o === y.ortam);
    if (kiraciVar) aday = aday.filter(([, , , , k]) => k.includes(y.kiraci));
    if (bolgeVar) aday = [...aday].sort((a, b) => (b[2] === y.bolge) - (a[2] === y.bolge));
    const sec = aday.find(([a, , , k]) => defter[a] + y.birim <= k);
    if (!sec) { s.yok++; return; }                             // karar verilemedi
    const [ad, , bolge, kap, kiracilar] = sec;
    if (dolu[ad] + y.birim > kap) { s.red++; return; }         // gercek kapasite yetmedi
    dolu[ad] += y.birim;
    if (!kiracilar.includes(y.kiraci)) s.ihlal++;
    else if (bolge !== y.bolge) s.uzak++;
    else s.dogru++;
  });
  return s;
}

const SENARYO = [["tam bilgi", {}], ["kapasite 8 yerlestirme eski", { yas: 8 }],
  ["veri bolgesi bildirilmemis", { bolgeVar: false }], ["kiraci kisiti bildirilmemis", { kiraciVar: false }],
  ["ucu birden eksik", { yas: 8, bolgeVar: false, kiraciVar: false }]];
const p = (x, n) => String(x).padStart(n);
console.log(`${YUK.length} is yuku, ${KUME.length} kume (3 ortam x 2 bolge); tohum 20260901`);
console.log("senaryo                      dogru  yanlis  verilemedi  dolu  uzak  ihlal");
for (const [ad, se] of SENARYO) {
  const o = kos(se);
  console.log(ad.padEnd(28) + p(o.dogru, 5) + p(o.red + o.uzak + o.ihlal, 8) + p(o.yok, 12) +
    p(o.red, 6) + p(o.uzak, 6) + p(o.ihlal, 7));
}
console.log(`kalem: ${YUK.length} is yuku x 3 + ${KUME.length} kume x 2 = ${YUK.length * 3 + KUME.length * 2}` +
  `; yalnizca kume kapasitesi olcumdur`);
24 is yuku, 6 kume (3 ortam x 2 bolge); tohum 20260901
senaryo                      dogru  yanlis  verilemedi  dolu  uzak  ihlal
tam bilgi                      18       3           3     0     3      0
kapasite 8 yerlestirme eski    18       6           0     3     3      0
veri bolgesi bildirilmemis     13      10           1     0    10      0
kiraci kisiti bildirilmemis    18       4           2     0     0      4
ucu birden eksik               13      11           0     0     8      3
kalem: 24 is yuku x 3 + 6 kume x 2 = 84; yalnizca kume kapasitesi olcumdur

Tam bilgi satırı kusursuz değildir: yirmi dört iş yükünün on sekizi doğru yerleşir, üçü uzak bölgeye düşer, üçü için karar verilemez — ilki kapasiteden, ikincisi kiracı kısıtından gelir.

Kapasite defterinin yaşlanması tanıdık kaymayı üretir. Defter sekiz yerleştirme eskidiğinde yanlış karar üçten altıya çıkar ve karar verememe üçten sıfıra iner: eskiyen defter havuzu olduğundan boş gösterir, üst katman “yer yok” demeyi bırakıp dolu kümeyi seçer.

İki bildirim kalemi ayrı ayrı ölçülür. Veri bölgesi bildirilmediğinde doğru karar on üçe iner ve uzak yerleştirme ona çıkar; hiçbiri reddedilmez, iş yükleri çalışır ve yalnız gecikme sınırını aşar — sessiz sınıf. Kiracı kısıtı bildirilmediğinde dört iş yükü kabul etmeyen kümeye gider ve bu yanlış gürültülüdür, çünkü kümenin kabul denetimi onu yakalar. Üçü birden eksikken karar verememe sıfırlanır: hiçbir şey bilmeyen bir üst katman hiç tereddüt etmez. Seksen dört kalemin yalnız altısı ölçümdür.

Özet

  • 18 hücre 1’den 18 kümeye bölündükçe patlama yarıçapı %100’den %5,6’ya iner; aylık işletim 106’dan 1.245 saate, yükseltme penceresi 3’ten 54’e çıkar.
  • Yayılma penceresi tek kümede 0, altı kümede 10 turdur; reddeden tek bir sapan küme kısmi başarıyı 105 tura çıkarır. Uzlaşma yükü küme sayısıyla çarpılır: 208 kalem okuma 3.744’e çıkar.
  • 6 arıza sınıfının 4’ü bölmeyle yalıtılır; paylaşılan veri deposu ve tek depodan yayılan hatalı bildirim iki kümede de 18 hücrenin 18’ini etkiler.
  • Üst katman tam bilgiyle 24 iş yükünün 18’ini doğru yerleştirir; kapasite 8 yerleştirme eskidiğinde yanlış karar 3’ten 6’ya, karar verememe 3’ten 0’a gider ve veri bölgesi yazılmadığında 10 iş yükü sessizce uzak bölgeye düşer.

Kurs Kapanışı

Ders Devredilen karar Gereken bilgi ve maliyeti Yanlış kararın kaynağı
Orkestrasyon İhtiyacı yerleştirme 6 kalem, 4’ü ölçüm yazısız kısıt, 4 yanlış yer
Denetim Düzlemi Bileşenleri isteğin karara dönmesi 50 okuma, 7 yazma kayıtsız ölüm, sanılan 3
Düğüm Bileşenleri düğüm canlı mı 10 saniyede 19 kalem eşik, 26 yanlış ölü
Uzlaşma Döngüsü farkın kapatılması gecikmeli rapor, 0,13 iş/tur kayıtsız niyet, 32 gereksiz kopya
Yerel ve Yönetilen Küme düzlemin işletimi 21 kalem, 106 saat erişim kaybı, 5 ayar yok
Kapsül paketleme sınırı 3 kalem, biri tahmin kopya oranı yok, 4 fazla örnek
Kopya Kümeleri ve Sürüm Nesneleri kopya sayısı, geçiş hızı 1 sayı, 2 ayar kapsül içi kapalı, 6 boşa
Servis Nesneleri isteğin gideceği kapsül 3 kalem, 1 tur çözümleme liste yaşı, 216 bayat istek
Dış Erişim dış isteğin iç servisi 4 bildirim, 14–36 yüzey kapsama yazısız, 6 yanlış
Yapılandırma ve Sır Nesneleri ayarın kapsüle ulaşması 3 bildirim, 3 tur yayılım okuma anı, 36 bayat
Depolama ve Birimler talep–arz eşlemesi 76 kalem, 72 bildirim/tur envanter yaşı, 134 yanlış
Durum Bilgili Uygulamalar hangi kopya hangi veri kopya başına 3, 15 kalem ad kalıcı değil, 7 öksüz birim
İşler ve Zamanlanmış İşler bitti mi, yeniden mi gece başına 4, 120 kalem süre bilinmez, 5 atlanan gece
Ad Alanları ve Kotalar isteğin kabulü istek başına 3, 180 kalem kullanım görünmez, 22 baskı
Kaynak İstekleri ve Sınırları yerleştirme 42 kalem, 36’sı bildirim kullanım yok, 5.503 çakışma
Zamanlama Kısıtları uygun düğüm kümesi 39 kalem, ölçüm yok yanlış etiket, yerleşen 15 → 16
İşaretler ve Toleranslar düğüm kimi kabul eder 27 kalem, doğrulayan yok fazla tolerans, 3 yabancı kapsül
Tahliye ve Öncelikler baskıda kim çıkar 17 öncelik, kritiklik 0 değer ölçülmez, şişiren korunur
Yatay Ölçekleme kopya sayısı 120 ölçüt, 3 tur eski kendi kararı görünmez, 510 kopya-tur
Dikey ve Küme Ölçekleme boyut, düğüm sayısı turda 60 örnek neden ölçütte yok, 12 fazla olay
Dağıtım Kalıpları ilerle ya da dur 4 kalem, sürüm etiketi seyrek ölçüt, 851 istek
Sağlık Denetimleri yeniden başlat, trafiğe aç 3 denetim, 3 eşik açılış ayrılmaz, 113 öldürme
Rol Tabanlı Erişim Denetimi isteği kim yapabilir 1344 hücrenin 43’ü iz eskir, 28 yükseltme yolu
Ağ Politikaları bağlantı meşru mu 18 kural ya da 6 izde yok, 119 gereksiz açık
Güvenlik Bağlamı tanım kabul edilsin mi tek kalem, tanımın kendisi beyana bakar, 13 sessiz açık
Paketleme ve Şablonlama nesne kümesini kim yazar 7 değer, 3 dal ortaklık yazısız, 3/5 ayrık
Özel Kaynak Tanımları bildirim geçerli mi 10 alan, 120 alan yükü şema dar, 4 sessizce yanlış
Denetleyici Kalıbı olaya ne yapılacak 5 madde, 240 okuma bakım görünmez, 12 yeniden başlatma
Küme Gözlemlenebilirliği hangi soru yanıtlanır 10.131 seri, 26,1 GB toplanmamış ayrıntı, 12’den 5’i
Çoklu Küme Yönetimi iş yükü hangi kümede 84 kalem, 1.245 saat eski kapasite, 6 yanlış

Otuz satır tek bir kuralın örneğidir: bir kararı devretmek, o kararın dayandığı bilgiyi sürekli ve zamanında üretmeyi gerektirir; sistemin bilmediği her kalem bir yanlış karar sınıfı üretir. Son sütunda dört kaynak tekrar eder. Eskiyen bilgi on satırdadır: karar anındaki sayı gerçeğin gerisindedir ve gecikme büyüdükçe karar verememe yanlış karara dönüşür. Kapsam dışında kalan durum sekiz satırdadır: sistem baktığı yerde doğru davranır, bakmadığı yerde salınır ya da sessizce sapar. Bildirilmemiş kalem yedi, doğrulanmayan beyan beş satırdadır — ve yanlış yazılmış bir beyan çoğu zaman bir iyileşme gibi görünür. Sistem yanlış kararı bilgisiz olduğu için değil, bilebileceği bir kalem bulunmadığı için verir. Bu kursun ölçü birimi olan devrin bedeli budur: kazanç adım sayısında görünür, bedel bilgi kaleminde birikir.

Geriye tek soru kalır ve M22/K04 Sürekli Tümleştirme ve Teslimat onu üstlenir. Küme istenen durumu uyguluyor: bildirimi okuyor, farkı kapatıyor, kabul denetiminden geçiriyor, yetkiyi sınıyor. Ama o istenen durumu kim, neye bakarak ve hangi denetimden geçirerek değiştiriyor? Otuz satırdaki bildirim kalemlerinin hepsini bir insan yazıyor; kümenin bütün titizliği, kendisine verilen bildirimin doğruluğunu hiçbir yerde sınamıyor.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat