İçeriğe geç
academia.sh

Ders 06 / 10

Bölgeler ve Erişilebilirlik Alanları

Kiralanan kalemin fiziksel olarak nerede durduğunun sayılması: tek alana yerleşimde bir alan kaybının ayakta bıraktığı kalem, iki ve üç alana yayılmanın fazladan kapasite bedeli, bölge kaybının alan yayılımından bağımsız kalması ve bölgeler arası gecikmenin gecelik toplu işe eklediği süre.

İçindekiler

Önceki ders sorumluluk sınırını çizdi: hangi kalemin bakımı sağlayıcıda, hangisi kiracıda, hangisi ikisinin de öteki yapıyor sandığı boşlukta. Sınır çizildi, ama bir soru sorulmadan kaldı — kiralanan şey fiziksel olarak nerede duruyor. Bir kira sözleşmesi hangi binada ve hangi elektrik hattında oturulduğunu söylemez; oysa o hat kesildiğinde hizmetin ne kadarının ayakta kaldığı bu bilgiye bağlıdır.

Erişilebilirlik alanı, kendi gücü, soğutması ve ağ girişi olan, komşusuyla aynı anda düşmeyecek biçimde ayrılmış bir yerleşim birimidir. Bölge, birbirine düşük gecikmeli bağlarla bağlanmış böyle alanların kümesidir. İkisi arasındaki fark bir coğrafya sorusu değil bir arıza alanı ayrımı sorusudur: iki kalem aynı alandaysa aynı arıza ikisini birlikte alır, ayrı alanlardaysa almaz. Bu dersin ölçtüğü şey o ayrımın karşılığı ve bedelidir. Dağıtım damgası ve coğrafi kopya ölçümü Dayanıklılık Kalıpları kursunda yapıldı; burada tekrarlanmaz.

Yerleşim Modeli

Aşağıdaki düzenek bir modeldir. Kurgu bölgesel ölçüm ağının kalemleri — su sayacı okuma toplayıcı, doğrulayıcı, faturalama, iş emri servisi, depolar ve gecelik toplu iş — kapsamlarına göre etiketlenir. Gerçek bir bölge, alan ya da sağlayıcı yoktur; kapasite sayıları kurgu bir birim/saat cinsindendir.

  • BC1. Bir bölge, bağımsız güç, soğutma ve ağ girişi olan en az üç erişilebilirlik alanından oluşur.
  • BC2. Ağın 13 kalemi vardır ve her kalem alan, bölge ya da küresel kapsamlıdır.
  • BC3. Alan kapsamlı kalemin hangi alana konacağını kiracı seçer. Bölge ve küresel kapsamlı kalemi sağlayıcı dağıtır; dağıtımın ayrıntısı kiracıya görünmez ve sınanamaz.
  • BC4. Bir alan kaybı o alandaki bütün kalemleri aynı anda alır; iki alan aynı anda düşmez.
// cografya/model.mjs — bolge/alan yerlesimi MODELIDIR: kurgu olcum aginin kalemleri, kapsamlari
// ve taban kapasiteleri. Gercek bolge, alan ya da saglayici yoktur; butun sayilar kurgudur.
export const ALAN = ["a1", "a2", "a3"];        // bir bolgedeki ayri ariza alanlari (kurgu)

// ad, kapsam, taban kapasite (kurgu birim/saat), yazma ucu tekil mi
export const KALEM = [
  ["okuma-toplayici", "alan", 12, false], ["abone-ucu", "alan", 6, false],
  ["faturalama", "alan", 4, false], ["is-emri-servisi", "alan", 3, false],
  ["okuma-deposu", "alan", 8, true], ["tarife-deposu", "alan", 2, true],
  ["gecelik-toplu-is", "alan", 5, true], ["dogrulayici", "bolge", 6, false],
  ["ham-okuma-deposu", "bolge", 3, false], ["okuma-kuyrugu", "bolge", 2, false],
  ["yuk-dagitici", "bolge", 2, false], ["anahtar-yonetimi", "bolge", 1, false],
  ["ad-cozumleme", "kuresel", 1, false],
];

export const kapsamli = (k) => KALEM.filter(([, k2]) => k2 === k);
export const TABAN = kapsamli("alan").reduce((a, [, , c]) => a + c, 0);       // 40 birim
export const BOLGE_KIRA = kapsamli("bolge").reduce((a, [, , c]) => a + c, 0); // dagitimi saglayicida
export const KURESEL_KIRA = kapsamli("kuresel").reduce((a, [, , c]) => a + c, 0);

// n alana yayilan bir yerlesimde bir alan kaybindan sonra ayakta kalan taban kapasite orani
export const ayaktaOran = (n) => (n - 1) / n;
// kayiptan sonra tam kapasite icin her alana taban/(n-1) konur; toplam kiralanan = TABAN*n/(n-1)
export const carpan = (n) => (n < 2 ? Infinity : n / (n - 1));

export function planOlc(n) {
  const alanKalem = kapsamli("alan").length;
  const ayaktaKalem = n < 2 ? 0 : alanKalem;          // tek alanda kopya yok, hepsi ayni alanda
  const tam = n < 2 ? Infinity : TABAN * carpan(n);
  return {
    n, ayaktaKalem, alanKalem, ayaktaOran: ayaktaOran(n),
    yalin: TABAN + BOLGE_KIRA + KURESEL_KIRA,          // fazladan almadan kiralanan
    tam: n < 2 ? Infinity : tam + BOLGE_KIRA + KURESEL_KIRA,
    fazladan: n < 2 ? Infinity : tam - TABAN,
    yazmaKesen: kapsamli("alan").filter(([, , , t]) => t).length, // yazma ucu tek alandadir
  };
}

Bir Alan Düştüğünde

Ölçü iki sayıyı birlikte okur: kayıptan sonra ayakta kalan ve tam kapasiteyi geri getirmek için fazladan kiralanan. İkincisi olmadan birincisi bir karar taşımaz.

// cografya/olc.mjs — bir alan dustugunde ayakta kalan kalem, ayakta kalan kapasite ve
// tam kapasiteyi geri getirmenin fazladan bedeli; alan sayisi arttikca ikisi birlikte
import { KALEM, TABAN, BOLGE_KIRA, KURESEL_KIRA, kapsamli, planOlc, carpan } from "./model.mjs";

const s = (x, n) => String(x).padStart(n);
const y = (x) => (Number.isFinite(x) ? x.toFixed(2) : "-");
const AD = { 1: "tek-alan", 2: "iki-alan", 3: "uc-alan", 4: "dort-alan" };

console.log(`${KALEM.length} kalem: ${kapsamli("alan").length} alan kapsamli, ` +
  `${kapsamli("bolge").length} bolge kapsamli, ${kapsamli("kuresel").length} kuresel.`);
console.log(`alan kapsamli taban kapasite ${TABAN} birim; bolge kapsamli kira ${BOLGE_KIRA}, ` +
  `kuresel kira ${KURESEL_KIRA} birim (kurgu).`);
console.log(`alan secimini kiraci yapmayan kalem: ${KALEM.length - kapsamli("alan").length}`);
console.log();

console.log("plan      | alan | ayakta kalem | ayakta kapasite | yalin kira | tam kapasite kirasi | fazladan");
console.log("----------|------|--------------|-----------------|------------|---------------------|---------");
for (const n of [1, 2, 3, 4]) {
  const p = planOlc(n);
  console.log(`${AD[n].padEnd(9)} | ${s(n, 4)} | ${s(`${p.ayaktaKalem}/${p.alanKalem}`, 12)} | ` +
    `${s(`%${(100 * p.ayaktaOran).toFixed(1)}`, 15)} | ${s(y(p.yalin), 10)} | ` +
    `${s(y(p.tam), 19)} | ${s(y(p.fazladan), 8)}`);
}

console.log();
console.log("alan | carpan | fazladan birim | bir onceki plana gore kazanc");
console.log("-----|--------|----------------|-----------------------------");
let oncekiFazladan = null;
for (const n of [2, 3, 4, 5, 6]) {
  const f = TABAN * carpan(n) - TABAN;
  const kazanc = oncekiFazladan === null ? "-" : y(oncekiFazladan - f);
  console.log(`${s(n, 4)} | ${s(y(carpan(n)), 6)} | ${s(y(f), 14)} | ${s(kazanc, 28)}`);
  oncekiFazladan = f;
}

console.log();
const p2 = planOlc(2);
console.log(`bir alan kaybinda yazma ucu kesilen kalem: ${p2.yazmaKesen}/${kapsamli("alan").length}` +
  ` — yayilma okumayi kurtarir, tekil yazma ucunu kurtarmaz.`);
13 kalem: 7 alan kapsamli, 5 bolge kapsamli, 1 kuresel.
alan kapsamli taban kapasite 40 birim; bolge kapsamli kira 14, kuresel kira 1 birim (kurgu).
alan secimini kiraci yapmayan kalem: 6

plan      | alan | ayakta kalem | ayakta kapasite | yalin kira | tam kapasite kirasi | fazladan
----------|------|--------------|-----------------|------------|---------------------|---------
tek-alan  |    1 |          0/7 |            %0.0 |      55.00 |                   - |        -
iki-alan  |    2 |          7/7 |           %50.0 |      55.00 |               95.00 |    40.00
uc-alan   |    3 |          7/7 |           %66.7 |      55.00 |               75.00 |    20.00
dort-alan |    4 |          7/7 |           %75.0 |      55.00 |               68.33 |    13.33

alan | carpan | fazladan birim | bir onceki plana gore kazanc
-----|--------|----------------|-----------------------------
   2 |   2.00 |          40.00 |                            -
   3 |   1.50 |          20.00 |                        20.00
   4 |   1.33 |          13.33 |                         6.67
   5 |   1.25 |          10.00 |                         3.33
   6 |   1.20 |           8.00 |                         2.00

bir alan kaybinda yazma ucu kesilen kalem: 3/7 — yayilma okumayi kurtarir, tekil yazma ucunu kurtarmaz.

Birinci satır bu dersin en sert sayısıdır: tek alana yerleşimde bir alan düştüğünde ayakta kalan kalem 0/7 ve ayakta kalan kapasite yüzde 0. Yedeklilik ya da yeniden başlatma politikası bu satırı değiştirmez: kaybedilen şey kopya değil, kopyaların oturduğu tek arıza alanıdır.

İki alana yayılınca ayakta kalan kalem 7/7 oluyor, ama ayakta kalan kapasite yüzde 50’de kalıyor: kalemin var olması ile yükü kaldırması ayrı sayılardır. Kayıptan sonra tam kapasite isteniyorsa her alanın tek başına bütün yükü taşıması gerekir ve kiralanan 55 birimden 95 birime çıkar. Üçüncü sütun asıl kararı veriyor: üç alana yayılan aynı güvence 75 birime düşüyor. Alan sayısı arttıkça her alana düşen pay 1/(n1)1/(n-1) ile küçüldüğü için üç alan iki alandan 20 birim ucuza aynı işi yapıyor — arıza alanı eklemek kapasite bedelini artırmaz, düşürür.

İkinci tablo bu düşüşün nerede durduğunu gösteriyor. Fazladan bedel ikiden üçe geçişte 20 birim azalıyor, üçten dörde geçişte 6,67, dörtten beşe 3,33. Dördüncü alan üçüncünün kazandırdığının üçte birini kazandırıyor; azalan getiri noktası üç alandır ve dördüncü alanın gerekçesi kapasite bedeli değil, artık başka bir şey olmak zorundadır.

Son satır yayılmanın karşılamadığı yeri adlandırıyor. Yedi kalemin üçünde yazma ucu tekildir; o uç hangi alandaysa, o alanın kaybı okuma trafiğini değil ama yazmayı kesintiye uğratır. Alanlara yayılmak 7/7 kalemi ayakta tutarken 3/7 kalemin yazma yolunu ayakta tutmaz.

Bölge Düştüğünde ve Eşzamanlı Yazmanın Bedeli

Alan ayrımı bir bölgenin içindeki arızayı böler. Bölgenin kendisi — ortak ağ girişi, ortak denetim düzlemi, ortak coğrafya — bölünmez.

  • BC5. Bir bölgedeki alanlar arası gidiş-dönüş 1,2 ms, iki bölge arası 68 ms (kurgu).
  • BC6. Gecelik toplu iş 480.000 okuma kaydı yazar, paralellik 8, pencere 240 dk; tepe gün hacmi üç katıdır. Taban yazma süresi 4,0 ms.
// cografya/bolge.mjs — bolge kaybi alan yayilimindan bagimsizdir; bolgeler arasi gecikme
// eszamanli yazmaya bir sayiyla baglanir. Sureler MODELDEN turetilir, saat okunmaz.
import { KALEM, TABAN, BOLGE_KIRA, KURESEL_KIRA, kapsamli, planOlc } from "./model.mjs";

const s = (x, n) => String(x).padStart(n);
const y = (x, n = 2) => x.toFixed(n);
const KAYIT = 480_000, PARALEL = 8, PENCERE = 240, TEPE = 3;  // kurgu: gecelik toplu is
const YAZMA = 4.0, ALAN_RTT = 1.2, BOLGE_RTT = 68.0;          // kurgu ms

console.log("plan      | alan kaybinda ayakta | bolge kaybinda ayakta | tek bolge kira | iki bolge kira");
console.log("----------|----------------------|-----------------------|----------------|---------------");
for (const n of [1, 2, 3]) {
  const p = planOlc(n);
  const kira = Number.isFinite(p.tam) ? p.tam : p.yalin;
  console.log(`${["tek-alan", "iki-alan", "uc-alan"][n - 1].padEnd(9)} | ` +
    `${s(`${p.ayaktaKalem}/${KALEM.length}`, 20)} | ${s(`${kapsamli("kuresel").length}/${KALEM.length}`, 21)} | ` +
    `${s(y(kira), 14)} | ${s(y(2 * kira - KURESEL_KIRA), 14)}`);
}
console.log(`bolge kaybi uc planda da ayni: yalniz kuresel kalem ayakta.`);
console.log();

console.log("yazma duzeni          | gidis-donus | yazma suresi | verim (yazma/s) | toplu is | tepe gun");
console.log("----------------------|-------------|--------------|-----------------|----------|---------");
for (const [ad, rtt] of [["alan ici", 0], ["alanlar arasi", ALAN_RTT], ["bolgeler arasi", BOLGE_RTT]]) {
  const sure = YAZMA + rtt;
  const dk = (KAYIT * sure) / PARALEL / 60_000;
  console.log(`${ad.padEnd(21)} | ${s(y(rtt) + " ms", 11)} | ${s(y(sure) + " ms", 12)} | ` +
    `${s(y((1000 / sure) * PARALEL), 15)} | ${s(y(dk) + " dk", 8)} | ${s(y(TEPE * dk) + " dk", 8)}`);
}
console.log(`pencere ${PENCERE} dk; tepe gunde bolgeler arasi eszamanli yazma penceresinin ` +
  `%${y((100 * TEPE * KAYIT * (YAZMA + BOLGE_RTT)) / PARALEL / 60_000 / PENCERE, 1)}'ini kullanir.`);
console.log();

console.log("kapsam   | kalem |  kira | yerlesim karari | kayip sinanabilir | cikista tasinan");
console.log("---------|-------|-------|-----------------|-------------------|----------------");
for (const [k, kira] of [["alan", TABAN], ["bolge", BOLGE_KIRA], ["kuresel", KURESEL_KIRA]]) {
  const kiraci = k === "alan";
  console.log(`${k.padEnd(8)} | ${s(kapsamli(k).length, 5)} | ${s(y(kira), 5)} | ` +
    `${(kiraci ? "kiraci" : "saglayici").padEnd(15)} | ${(kiraci ? "evet" : "hayir").padEnd(17)} | ` +
    `${kiraci ? "evet" : "hayir"}`);
}
const devir = KALEM.length - kapsamli("alan").length;
console.log(`devredilen yerlesim karari ${devir}/${KALEM.length}; ` +
  `bunlarin kirasi ${y(BOLGE_KIRA + KURESEL_KIRA)} birim ve fazladan kapasite bedeli 0.`);
plan      | alan kaybinda ayakta | bolge kaybinda ayakta | tek bolge kira | iki bolge kira
----------|----------------------|-----------------------|----------------|---------------
tek-alan  |                 0/13 |                  1/13 |          55.00 |         109.00
iki-alan  |                 7/13 |                  1/13 |          95.00 |         189.00
uc-alan   |                 7/13 |                  1/13 |          75.00 |         149.00
bolge kaybi uc planda da ayni: yalniz kuresel kalem ayakta.

yazma duzeni          | gidis-donus | yazma suresi | verim (yazma/s) | toplu is | tepe gun
----------------------|-------------|--------------|-----------------|----------|---------
alan ici              |     0.00 ms |      4.00 ms |         2000.00 |  4.00 dk | 12.00 dk
alanlar arasi         |     1.20 ms |      5.20 ms |         1538.46 |  5.20 dk | 15.60 dk
bolgeler arasi        |    68.00 ms |     72.00 ms |          111.11 | 72.00 dk | 216.00 dk
pencere 240 dk; tepe gunde bolgeler arasi eszamanli yazma penceresinin %90.0'ini kullanir.

kapsam   | kalem |  kira | yerlesim karari | kayip sinanabilir | cikista tasinan
---------|-------|-------|-----------------|-------------------|----------------
alan     |     7 | 40.00 | kiraci          | evet              | evet
bolge    |     5 | 14.00 | saglayici       | hayir             | hayir
kuresel  |     1 |  1.00 | saglayici       | hayir             | hayir
devredilen yerlesim karari 6/13; bunlarin kirasi 15.00 birim ve fazladan kapasite bedeli 0.

Birinci tablonun ikinci sütunu üç satırda da aynı: bölge kaybında ayakta kalan kalem 1/13 ve ayakta kalan tek kalem ad çözümlemesidir. Alan ayrımına ödenen 20 ya da 40 birim bu sütunu bir kalem bile oynatmıyor. İkinci bölgede tam kopya tutmak üç alanlı planda kirayı 75’ten 149 birime çıkarıyor, yani alan ayrımının bedelinin yaklaşık dört katı. Arıza alanı ayrımı katmanlıdır ve her katmanın bedeli ayrı ödenir.

İkinci tablo o bedelin gizli kısmını gösteriyor. Alanlar arası 1,2 ms’lik gidiş-dönüş bir eşzamanlı yazmayı 4,0 ms’den 5,2 ms’ye çıkarıyor; toplu iş 4,00 dakikadan 5,20 dakikaya uzuyor — yüzde 30’luk bir artış, 240 dakikalık pencerede fark etmez. Bölgeler arası 68 ms aynı yazmayı 72,0 ms yapıyor ve yazma verimi 2000’den 111,11 yazma/s‘ye düşüyor. Toplu iş 72 dakikaya çıkıyor; tepe günde 216 dakika ile pencerenin **yüzde 90’ını** yiyor ve elde 24 dakika kalıyor. Bölgeler arası eşzamanlı yazma bir dayanıklılık kararı gibi görünür, ama faturayı kesen yer gecelik toplu işin penceresidir.

Devredilen Karar ve Çıkışta Taşınan

Üçüncü tablo bu dersin kiralama defteridir. On üç kalemin 7’sinde yerleşim kararı kiracıdadır: hangi alana kaç kopya konacağı yazılabilir, sınanabilir ve bir alan düşürülerek ölçülebilir. Kalan 6 kalemde karar devredilmiştir; bunların kapsamı bölge ya da küreseldir ve hangi alanlara nasıl dağıtıldıkları kiracıya görünmez.

Devrin karşılığı iki kalemdir. Birincisi, 15 birimlik kira içinde alanlar arası dağıtımın da bulunması: kiracı bu 6 kalem için 0 fazladan kapasite ödüyor, oysa aynı yedekliliği kendi kursaydı üç alanlı planda yüzde 50 fazladan öderdi. İkincisi, bu 6 kalemin işletim yükünün hiç görünmemesi. Devrin bedeli üçüncü sütundur: kayıp sınanamaz. Bir alanı düşürüp ölçmek yalnız 7 kalemde mümkündür; 6 kalem için elde yalnız sağlayıcının sözü vardır.

Çıkışta taşınan da aynı ayrımı izliyor. Alan kapsamlı 7 kalemin yerleşim planı bir tanımdır — kaç kopya, hangi ayrı arıza alanı, kayıptan sonra hangi kapasite — ve bu tanım başka bir kiralamada aynen kurulabilir. Bölge ve küresel kapsamlı 6 kalemin dağıtımı hiç görünmediği için taşınacak bir tanım da yoktur; karşı tarafta yeniden ölçülmesi, çoğu durumda yeniden satın alınması gerekir. Kiralanan coğrafyanın yarısına yakını, çıkarken elde kalmıyor.

Özet

  • Erişilebilirlik alanı bağımsız güç, soğutma ve ağ girişi olan bir yerleşim birimidir; bölge böyle alanların düşük gecikmeli kümesidir. Ayrım bir coğrafya değil bir arıza alanı ayrımıdır.
  • Tek alana yerleşimde bir alan kaybı 7 alan kapsamlı kalemin 0’ını ayakta bırakır ve ayakta kalan kapasite yüzde 0’dır; iki ve üç alanda 7/7 kalem ayakta kalır, ama yazma ucu tekil olan 3 kalemin yazma yolu ayakta kalmaz.
  • Kayıptan sonra tam kapasite için kiralanan iki alanda 95, üç alanda 75, dört alanda 68,33 birim: üç alan iki alandan 20 birim ucuzdur ve azalan getiri noktası üçüncü alandır.
  • Bölge kaybında ayakta kalan kalem üç planda da 1/13’tür; ikinci bölgede tam kopya üç alanlı kirayı 75’ten 149 birime çıkarır.
  • Bölgeler arası eşzamanlı yazma bir yazmayı 4,0 ms’den 72,0 ms’ye, gecelik toplu işi 4 dakikadan 72 dakikaya çıkarır; tepe günde 216 dakika ile 240 dakikalık pencerenin yüzde 90’ını kullanır.
  • Yerleşim kararı 13 kalemin 6’sında sağlayıcıya devredilmiştir: fazladan kapasite bedeli 0, ama kayıp sınanamaz ve çıkışta taşınacak bir tanım kalmaz.

Sonraki Adım

Bu ders coğrafyayı arıza tarafından okudu: kalemler nereye konursa bir kayıp neyi alır, ayakta kalan kaç olur, ayrımın bedeli kaç birimdir. Aynı coğrafyanın ikinci bir yüzü var ve bu derste hiç ölçülmedi: kalemler nereye konursa kullanıcıya ne kadar uzak kalır. Bölgeler arası 68 ms’lik gidiş-dönüş burada yalnız yazmanın maliyeti olarak göründü; aynı sayı uzaktaki bir aboneye gönderilen her yanıtın da içindedir ve o abone için hiçbir arıza olmadan da vardır. Sonraki ders kullanıcı dağılımını ve konum kümesini modelleyip ortalama mesafenin konum ekledikçe nasıl düştüğünü, konum başına bedeli ve düşüşün nerede durduğunu sayar; ayrıca kullanıcıya yakın konumun yapamadığı işi ve oradan dönen yanıtın bayatlığını ölçer.

İ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