İçeriğe geç
academia.sh

Ders 10 / 21

Sertifika İptali

İptal kararı ile doğrulayanın bunu öğrenmesi arasındaki pencere ölçülür: günlük liste yayınında ortalama 29,5 saat ve 271.877 kabul edilen bağlantı, çevrimiçi sorguda 1,5 saat ve 13.925 bağlantı, sunucunun taşıdığı yanıtta 0,5 saat ve 4.621 bağlantı; listenin penceresini iki saate indirmek günlük indirmeyi 152 MB'tan 1.828 MB'a çıkarıyor ve sorgu yanıtsız kaldığında yumuşak başarısızlık 2 yol açarken sert başarısızlık 6.161 meşru bağlantı düşürüyor.

İçindekiler

Önceki ders kırılan bir kökün, depolardan çıkarılmadığı her makinede geçerli kalmaya devam ettiğini gösterdi. Aynı sorun tek bir uç kalem için de geçerlidir: bir sunucunun özel anahtarı denetim dışına çıktığında ya da bir sayaç ucu sahadan sökülüp alındığında o kalemin geçersiz sayılması gerekir — ama kalemin alanları değişmez. Geçerlilik penceresi hâlâ açıktır, imza hâlâ doğrulanır, ad hâlâ eşleşir. Bir önceki dersin on dört kalemi, iptal edilmiş bir kalem için de eksiksiz tutar.

İptal bu yüzden sertifikanın dışında durur: doğrulayanın başka bir yerden öğrenmesi gereken bir bilgidir. Öğrenmenin iki temel yolu vardır — iptal edilmiş kalemlerin listesini dağıtmak ya da her kullanımda otoriteye tek tek sormak. Bu ders ikisini aynı ölçüde karşılaştırır: karar ile öğrenme arasında kaç saat geçiyor, o pencerede kaç bağlantı kabul ediliyor ve öğrenme kanalı çalışmadığında verilen karar kaç yol açıyor.

  • PK11. İptal, bir kalemin geçerlilik penceresi dolmadan geçersiz sayılması kararıdır. Karar otoritede verilir ve kalemin alanlarına dokunmaz.
  • PK12. Öğrenme penceresi, iptal kararı ile o kararın belirli bir doğrulayana ulaşması arasındaki süredir. İstemcilerin tazeleme anları eşit dağıtılmıştır; bu bir model kararıdır.
  • PK13. Pencerede kabul edilen bağlantı, pencere süresi ile istemcinin bağlantı hızının çarpımıdır. Adetler, hızlar, liste boyutu ve kesinti süresi kurgudur.
  • PK14. Yumuşak başarısızlık, durum öğrenilemediğinde bağlantının kabul edilmesi; sert başarısızlık reddedilmesidir. Üçüncü bir seçenek yoktur.
  • PK15. Sunucunun taşıdığı yanıt, durum yanıtını sunucunun kendi tazeleyip bağlantı sırasında istemciye vermesidir; istemcinin dış bir uca sorması gerekmez.

Öğrenmenin Penceresi

Üç yöntemin farkı bir mekanizma farkı değil, bir gecikme farkıdır. İptal listesinde karar önce bir yayına girer, sonra istemci o yayını kendi sırasında indirir; iki gecikme üst üste biner. Çevrimiçi sorguda yayın gecikmesi yoktur, yalnız istemcinin önbelleği vardır.

// iptal.mjs — iptal karari ile ogrenme arasindaki pencerenin modeli. MODELDIR.
// Kurgu bolgesel olcum agi: adetler, hizlar ve saatler uydurmadir.
export const SINIF = [
  // ad, istemci adedi, istemci basina saatte baglanti
  ["sayac ucu", 4100, 2],
  ["ic servis", 26, 30],
  ["personel is istasyonu", 262, 1],
].map(([ad, adet, hiz]) => ({ ad, adet, hiz }));

export const IPTAL = 30;              // kurgu iptal karari ani, saat
export const KESINTI = 40;            // kurgu sorgulayici kesintisi, dakika
export const KAYIT_BAYT = 28;         // iptal listesinde kalem basina bayt (kurgu)
export const IPTALLI = 1240;          // listede duran iptal edilmis kalem sayisi (kurgu)

export const YONTEM = [
  // ad, yayin araligi (0 = gecikmesiz), istemcinin tazeleme araligi, istemci disa sorar mi
  ["iptal listesi", 24, 24, false],
  ["cevrimici durum sorgusu", 0, 4, true],
  ["sunucunun tasidigi yanit", 0, 2, false],
].map(([ad, yayin, tazeleme, disaSorar]) => ({ ad, yayin, tazeleme, disaSorar }));

// Bir istemcinin ogrenme ani: once karar yayina girer, sonra istemci kendi sirasinda tazeler.
export const pencere = (y, ofset) => {
  const yayinAni = y.yayin ? Math.ceil(IPTAL / y.yayin) * y.yayin : IPTAL;
  const ogrenme = yayinAni + (((ofset - yayinAni) % y.tazeleme) + y.tazeleme) % y.tazeleme;
  return ogrenme - IPTAL;
};

export const ISTEMCI = SINIF.flatMap((s) =>
  Array.from({ length: s.adet }, (_, i) => ({ sinif: s.ad, hiz: s.hiz, ofset: i })));

export const yaz = (g) => (h) =>
  h.map((v, i) => (i ? String(v).padStart(g[i]) : String(v).padEnd(g[0]))).join("");
// pencere.mjs — ogrenme penceresi, penceredeki baglanti ve basarisizlik kararinin actigi yol
import { SINIF, YONTEM, ISTEMCI, IPTAL, KESINTI, KAYIT_BAYT, IPTALLI, pencere, yaz }
  from "./iptal.mjs";

const TOPLAM = ISTEMCI.length;
const SAATLIK = ISTEMCI.reduce((t, i) => t + i.hiz, 0);
console.log(`${TOPLAM} istemci, saatte ${SAATLIK} baglanti, iptal karari ${IPTAL}. saatte`);
console.log(`liste boyutu: ${IPTALLI} iptalli kalem x ${KAYIT_BAYT} bayt = ` +
  `${IPTALLI * KAYIT_BAYT} bayt`);

const y1 = yaz([26, 10, 10, 10, 14, 12]);
console.log("\n" + y1(["yontem", "en kisa", "en uzun", "ortalama", "kabul edilen", "gunluk dis"]));
for (const y of YONTEM) {
  const p = ISTEMCI.map((i) => pencere(y, i.ofset));
  const kabul = ISTEMCI.reduce((t, i, k) => t + p[k] * i.hiz, 0);
  const ort = p.reduce((a, b) => a + b, 0) / TOPLAM;
  const disSorgu = y.disaSorar ? TOPLAM * (24 / y.tazeleme)
    : y.yayin ? TOPLAM * (24 / y.tazeleme) : 24 / y.tazeleme;
  console.log(y1([y.ad, `${Math.min(...p)} sa`, `${Math.max(...p)} sa`, `${ort.toFixed(1)} sa`,
    kabul, disSorgu]));
}

// Liste yayin araligini daraltmanin pencereye ve indirme hacmine etkisi.
const y4 = yaz([16, 12, 12, 14, 16]);
console.log("\n" + y4(["liste araligi", "en uzun", "ortalama", "kabul edilen", "gunluk MB"]));
for (const d of [24, 12, 6, 2]) {
  const y = { yayin: d, tazeleme: d };
  const p = ISTEMCI.map((i) => pencere(y, i.ofset));
  const mb = (TOPLAM * (24 / d) * IPTALLI * KAYIT_BAYT) / 1e6;
  console.log(y4([`${d} saat`, `${Math.max(...p)} sa`,
    `${(p.reduce((a, b) => a + b, 0) / TOPLAM).toFixed(1)} sa`,
    ISTEMCI.reduce((t, i, k) => t + p[k] * i.hiz, 0), mb.toFixed(0)]));
}

// Ayni pencerenin sinif basina dagilimi (iptal listesi ile cevrimici sorgu).
const y2 = yaz([24, 10, 14, 14, 12]);
console.log("\n" + y2(["sinif", "istemci", "liste kabul", "sorgu kabul", "oran"]));
for (const s of SINIF) {
  const grup = ISTEMCI.filter((i) => i.sinif === s.ad);
  const [liste, sorgu] = [YONTEM[0], YONTEM[1]].map((y) =>
    grup.reduce((t, i) => t + pencere(y, i.ofset) * i.hiz, 0));
  console.log(y2([s.ad, grup.length, liste, sorgu, `${(liste / sorgu).toFixed(1)}x`]));
}

// Sorgulayici ulasilamadiginda verilen karar: yumusak ve sert basarisizlik.
const kesintiBaglanti = Math.round(SAATLIK * (KESINTI / 60));
const KARAR = [
  // ad, istemci disa soruyor mu, kabul mu, acilan yol, duran mesru is
  ["iptal listesi, onbellek gecerli", false, true, 0, 0],
  ["cevrimici sorgu, yumusak basarisizlik", true, true, 2, 0],
  ["cevrimici sorgu, sert basarisizlik", true, false, 0, kesintiBaglanti],
  ["sunucunun tasidigi yanit, sert", false, true, 0, 0],
];
const y3 = yaz([40, 11, 8, 13, 17]);
console.log(`\nsorgulayici kesintisi ${KESINTI} dk -> ${kesintiBaglanti} baglanti etkileniyor`);
console.log(y3(["karar", "dis bagim", "kabul", "acilan yol", "duran mesru is"]));
for (const [ad, dis, kabul, yol, duran] of KARAR)
  console.log(y3([ad, dis ? "var" : "yok", kabul ? "evet" : "hayir", yol, duran]));

const YOL = ["iptal edilmis kalem kabul edilir",
  "sorgulayiciya erisimi kesen taraf iptali gorunmez kilar"];
console.log("\nyumusak basarisizligin actigi yol:");
YOL.forEach((y, i) => console.log(`  ${i + 1}. ${y}`));
console.log(`sert basarisizligin bedeli: ${kesintiBaglanti} mesru baglanti, ` +
  `${KESINTI} dk boyunca`);
4388 istemci, saatte 9242 baglanti, iptal karari 30. saatte
liste boyutu: 1240 iptalli kalem x 28 bayt = 34720 bayt

yontem                       en kisa   en uzun  ortalama  kabul edilen  gunluk dis
iptal listesi                  18 sa     41 sa   29.5 sa        271877        4388
cevrimici durum sorgusu         0 sa      3 sa    1.5 sa         13925       26328
sunucunun tasidigi yanit        0 sa      1 sa    0.5 sa          4621          12

liste araligi        en uzun    ortalama  kabul edilen       gunluk MB
24 saat                41 sa     29.5 sa        271877             152
12 saat                17 sa     11.5 sa        105941             305
6 saat                  5 sa      2.5 sa         22973             609
2 saat                  1 sa      0.5 sa          4621            1828

sinif                      istemci   liste kabul   sorgu kabul        oran
sayac ucu                     4100        241820         12300       19.7x
ic servis                       26         22350          1230       18.2x
personel is istasyonu          262          7707           395       19.5x

sorgulayici kesintisi 40 dk -> 6161 baglanti etkileniyor
karar                                     dis bagim   kabul   acilan yol   duran mesru is
iptal listesi, onbellek gecerli                 yok    evet            0                0
cevrimici sorgu, yumusak basarisizlik           var    evet            2                0
cevrimici sorgu, sert basarisizlik              var   hayir            0             6161
sunucunun tasidigi yanit, sert                  yok    evet            0                0

yumusak basarisizligin actigi yol:
  1. iptal edilmis kalem kabul edilir
  2. sorgulayiciya erisimi kesen taraf iptali gorunmez kilar
sert basarisizligin bedeli: 6161 mesru baglanti, 40 dk boyunca

İlk tablo pencerenin şeklini veriyor. Günlük yayınlanan bir listede iptal kararı en iyi ihtimalle on sekiz, en kötü ihtimalle kırk bir saat sonra öğreniliyor; ortalama yirmi dokuz buçuk saat. Sayının yirmi dörtten büyük olması ilk bakışta şaşırtıcıdır ve iki gecikmenin toplanmasından gelir: karar otuzuncu saatte verildiği için o günün yayınını kaçırır, kırk sekizinci saatteki yayına girer, sonra her istemci kendi tazeleme sırasında indirir.

Çevrimiçi sorguda yayın gecikmesi ortadan kalkıyor ve pencere en fazla üç saate iniyor. Sunucunun yanıtı kendisi taşıdığında en fazla bir saat. Penceredeki bağlantı sayısı bu üç yöntemi kıyaslanabilir hâle getiriyor: 271.877, 13.925, 4.621. İlk iki yöntem arasında yirmi katına yakın fark var ve bu farkın tamamı zamansaldır — sınıf tablosu bunu doğruluyor, üç istemci sınıfının üçünde de oran on sekiz ile yirmi arasında. Pencere, istemcinin ne yaptığına değil, ne zaman sorduğuna bağlıdır.

Ortalama sütunu yanıltıcı olabilir. İptal edilmiş bir kalemi sunacak tarafın hangi istemciye gideceğini seçebildiği bir durumda geçerli olan sayı ortalama değil, en uzun penceredir: kırk bir saat. Ortalama, kaç bağlantının etkilendiğini söyler; en uzun pencere ise tek bir bağlantının ne kadar süre boyunca mümkün olduğunu söyler. İki sayı iki ayrı soruya bakar ve bir yöntemi seçerken ikisi de yazılır.

Pencereyi Daraltmanın Bedeli

İkinci tablo, liste yönteminin penceresinin bir kader olmadığını gösteriyor. Yayın aralığı yirmi dört saatten iki saate indirildiğinde ortalama pencere 29,5 saatten 0,5 saate düşüyor ve kabul edilen bağlantı 271.877’den 4.621’e — yani sunucunun taşıdığı yanıtla tam olarak aynı değere. Liste yöntemi çevrimiçi sorgudan yapısal olarak daha kötü değildir; yalnız varsayılan aralığıyla öyledir.

Bedeli ise son sütunda. İki saatlik aralık günlük indirmeyi 152 MB’tan 1.828 MB’a çıkarıyor, on iki katına. Bunun nedeni listenin tamamının her tazelemede yeniden indirilmesidir: dört bin üç yüz seksen sekiz istemcinin her biri, on iki kez, bin iki yüz kırk kalemlik listenin tamamını alır — oysa iptal edilen kalem bir tanedir. İptal listesi, aradığı tek kaydı bulmak için her seferinde bütün defteri taşır.

Listenin boyutu da sabit değil. Bin iki yüz kırk kalem, geçmişte iptal edilmiş her kalemin geçerlilik penceresi dolana kadar listede kalmasından gelir; iptal sayısı arttıkça liste büyür ve her tazelemede taşınan bayt onunla birlikte artar. Sıklığı artırmanın maliyeti bu yüzden zamanla kendiliğinden yükselir — aynı aralık, bir yıl sonra daha pahalıdır.

Dış sorgu sütunu ise ters yönde bir tablo çiziyor. Günlük listede istemci başına bir indirme var, toplam 4.388. Çevrimiçi sorguda istemci başına altı sorgu, toplam 26.328; her biri ayrı bir uca gidiyor ve her biri o ucun ayakta olmasını gerektiriyor. Sunucunun taşıdığı yanıtta ise günlük dış sorgu on iki, çünkü soran taraf istemci değil sunucudur ve bir kez sorup yanıtı bütün istemcilere dağıtır. En dar pencereyi veren yöntem, en az dış sorgu üreten yöntemdir; iki ölçü burada aynı yöne bakar.

Sorgu Yanıtsız Kaldığında

Son tablo dersin asıl ayrımını kuruyor. Çevrimiçi sorgunun eklediği şey yalnız hız değil, bir dış bağımlılıktır; ve o bağımlılık düştüğünde doğrulayanın elinde iki seçenek kalır.

Yumuşak başarısızlık bağlantıyı kabul eder. Kırk dakikalık kesintide altı bin yüz altmış bir bağlantı, durumu bilinmeden kurulur ve bu iki yol açar: iptal edilmiş bir kalem kabul edilir, ve sorgulayıcıya erişimi kesebilen taraf iptali görünmez kılar. İkincisi birincisini içerir — öğrenmenin tek kanalı düşürülebiliyorsa, iptal kararının kendisi düşürülebilir demektir.

Sert başarısızlık hiçbir yol açmaz ve altı bin yüz altmış bir meşru bağlantıyı düşürür. Kırk dakika boyunca ölçüm ağının veri alımı durur. Bu, ölçülebilir bir bedeldir ve yumuşak başarısızlığın açtığı iki yolun karşılığıdır; ikisinin arasında doğru bir seçim yoktur, yalnız yazılı bir seçim vardır.

İlk ve dördüncü satırlar bu ikilemin nasıl kurulmadığını gösteriyor. Liste yönteminde istemcinin elinde geçerli bir önbellek varken dış bağımlılık yoktur; sorgulayıcının ayakta olup olmaması bağlantıyı etkilemez. Sunucunun taşıdığı yanıtta da yoktur, çünkü soran taraf istemci değildir. İkilem ortadan kalkmaz — sunucu yanıtı tazeleyemediğinde aynı iki seçenek sunucu tarafında yeniden kurulur — ama dört bin üç yüz seksen sekiz istemciden bir sunucuya taşınır. Yumuşak ya da sert başarısızlık kararını dört bin kez değil bir kez vermek, kararın kendisini değiştirmez; kararın verildiği yeri değiştirir ve o yer, izlenebilen tek yerdir.

Bir kalem türü ise bu üç yöntemin hiçbiriyle iptal edilemez. İptal listesini imzalayan, iptal edilecek kalemin vereni olan otoritedir; kök için bu, kökün kendi iptalini kendi imzasıyla duyurması demektir. Kırılmış bir kökün imzası kanıt taşımadığına göre, o duyuru da kanıt taşımaz. Bir önceki dersin 4.400 makinelik dokunuş sayısı tam olarak bu yüzden ödenir: kök iptal edilemediği için çıkarılır, ve çıkarma işi bir yayınla değil, makine makine yapılır.

Bütün bu ölçümün altında değişmeyen bir sınır duruyor. İptal, doğrulanan alanlarda iz bırakmayan tek karardır: iptal edilmiş bir kalem, öğrenme gerçekleşene kadar on dört kalemin on dördünü de geçer. Pencere daraltılabilir, sıfırlanamaz. Sıfırlamanın tek yolu, kalemin ömrünü öğrenme penceresinden kısa tutmaktır — o zaman iptal duyurusu tamamlanmadan kalem kendiliğinden düşer. Bu, iptali bir duyuru sorunu olmaktan çıkarıp bir yenileme sorununa çevirir; o ölçüm bu konunun beşinci dersinde yapılır.

Özet

  • İptal kararı sertifikanın alanlarına dokunmaz; iptal edilmiş bir kalem, öğrenme gerçekleşene kadar doğrulamanın bütün denetimlerini geçer. Ölçülen şey mekanizma değil, öğrenme gecikmesidir.
  • Günlük yayınlanan listede pencere 18–41 saat (ortalama 29,5) ve penceredeki bağlantı 271.877; çevrimiçi sorguda 0–3 saat ve 13.925; sunucunun taşıdığı yanıtta 0–1 saat ve 4.621. Oran üç istemci sınıfında da 18–20 kat arasında, çünkü fark tümüyle zamansaldır.
  • Yayın aralığını 2 saate indirmek listeyi çevrimiçi sorgunun da altına, 4.621 bağlantıya çekiyor; bedeli günlük indirmenin 152 MB’tan 1.828 MB’a çıkmasıdır, çünkü her tazelemede 1.240 kalemlik listenin tamamı yeniden iner.
  • Dış sorgu sayısı ters sıralanıyor: liste 4.388, çevrimiçi sorgu 26.328, sunucunun taşıdığı yanıt 12. En dar pencereyi veren yöntem en az dış bağımlılık üretendir.
  • Sorgulayıcının 40 dakikalık kesintisinde yumuşak başarısızlık 2 yol açıp 0 meşru işi durduruyor, sert başarısızlık 0 yol açıp 6.161 meşru bağlantıyı düşürüyor. Sunucunun yanıtı taşıması bu kararı ortadan kaldırmaz, 4.388 istemciden 1 sunucuya taşır.

Sonraki Adım

Bu üç dersin ölçtüğü her şey — alan denetimleri, zincirin kalemleri, iptal durumu — tek bir yerde, bağlantının kurulduğu ilk saniyelerde toplanır. O konuşma el sıkışmadır ve içinde her adımın kanıtladığı ayrı bir iddia vardır: karşı tarafın sunduğu kalemin geçerli olduğu, o kalemin özel anahtarını gerçekten elinde tuttuğu, konuşulan adın kaleme yazılı olduğu. Sonraki ders el sıkışmayı adım adım söker ve tek soruyu sorar: hangi adım hangi iddiayı kanıtlıyor, bir adım atlandığında hangi iddia kanıtsız kalıyor ve istemcinin de kalem sunması kaç kalem ekliyor.

İ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