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.