Ders 13 / 15
Kalıcı Adres ve Ad Tümleştirmesi
Örnek değiştiğinde adresin ne olduğunun üç düzende ölçülmesi: geçici adreste beş kalemin elle güncellenmesinin fark etme süresini dört yüz elli saniyeye ve bayat isteği on bin sekiz yüze çıkarması, kalıcı adresin bunu iki yüze indirmesi, ad üzerinden çözümlemenin arada durması, ve kalıcı adresin kendi bedeli — bölge kotası, taşıma işlemi, boşta duran adresin aylık ücreti ve bırakıldıktan sonra geri alınamaması.
İçindekiler
Bir önceki ders dengeleyiciyi kurdu ve bütün ölçümleri tek bir şeyi sabit sayarak yaptı: istemcinin bağlandığı uç. O uç sabit değildir.
Kurgu bölgesel ölçüm ağının toplayıcıları düzenli olarak değişiyor. Biri bakım penceresinde yeniden yaratılıyor, biri sağlık denetiminden düştüğü için değiştiriliyor, biri de ölçekleme grubunun kararıyla ekleniyor. Her değişimde makinenin kendisi yenilenir — ve makinenin adresi makineye aittir, makineyle birlikte gider.
Adresi elinde tutan yerler ise makinede değildir. İstemcinin yapılandırma dosyasında, izleme sisteminin hedef listesinde, bir güvenlik grubunun kaynak alanında, üçüncü taraf duyarga sahiplerinin izin listesinde ve işletim belgesinde ayrı ayrı yazılıdır. Bu ders adresin kararlılığını üç düzende karşılaştırır ve kalıcı adresin kendi faturasını sayar.
Ad kaydının yaşam süresinin nasıl işlediği daha önce ölçüldü; bu ders o ölçümü tekrarlamaz, yaşam süresini girdi olarak alır.
- BA37. Kurgu ölçüm ağında bir dönem üç bin altı yüz saniyedir ve içinde üç örnek değişimi olur: bakım, sağlıksızlık, ölçekleme. Toplayıcıya gelen istek hızı sabit sekiz istek/saniyedir.
- BA38. Adresi elinde tutan kalemler beş tanedir: istemci yapılandırması, izleme hedefi, güvenlik grubu kaynağı, üçüncü tarafın izin listesi, işletim belgesi. Elle güncellenen bir kalem kurgu olarak doksan saniye sürer ve kalemler sırayla güncellenir.
- BA39. Kalıcı adresin yeni örneğe taşınması yirmi beş saniye, ad kaydının güncellenmesi doksan saniye sürer; ikisi de kurgudur. Ad kaydının yaşam süresi altmış saniyedir ve girdidir — bu değerin nasıl ölçüldüğü daha önce yapıldı, burada yeniden ölçülmez.
- BA40. Ad üzerinden düzende eski örnek yaşam süresi boyunca ayakta tutulur; bayat çözümlemeler bu yüzden eski örneğe gider, boşluğa değil.
- BA41. Kalıcı adres kotası bölge başına beştir. Bağlı adres ücretsiz, boşta duran adres saatte bir birimdir; ay yedi yüz yirmi saattir. Para birimi kurgudur ve adı birimdir.
- BA42. Bırakılan adres havuza döner ve ikinci haftada başka bir kiracıya verilir. Bayat isteğin haftalık sönüm çarpanı 0,55’tir; başlangıç değeri ve çarpan kurgudur.
// adres/kararlilik.mjs — model: ornek degistiginde adresin ne oldugu. Kurgu bolgesel olcum // aginin toplayicilari uc kez degisiyor. Ad kaydinin yasam suresi daha once olculdu; burada // girdidir, yeniden olculmez. Para birimi kurgudur: "birim". const OLAY = [["bakim", 600], ["sagliksizlik", 1500], ["olcekleme", 2900]]; const HIZ = 8; // istek/saniye, sabit const KALEM = ["istemci yapilandirmasi", "izleme hedefi", "guvenlik grubu kaynagi", "ucuncu tarafin izin listesi", "isletim belgesi"]; const KALEM_SURE = 90; // kurgu: elle guncellenen bir kalem 90 saniye const TASIMA = 25; // kurgu: kalici adresin yeni ornege tasinmasi const KAYIT = 90; // kurgu: ad kaydinin guncellenmesi const YASAM = 60; // girdi: ad kaydinin yasam suresi (daha once olculdu) // [ad, elle kalem, tasima, kayit, yasam suresi devrede mi, bayat istek nereye gidiyor] const DUZEN = [ ["gecici adres", KALEM.length, 0, 0, false, "eski adres / yeni sahip"], ["kalici adres", 0, TASIMA, 0, false, "dusuyor"], ["ad uzerinden", 0, 0, KAYIT, true, "eski ornek"], ["kalici adres + ad", 0, TASIMA, 0, false, "dusuyor"], ]; const farkEtme = (d) => d[1] * KALEM_SURE + d[2] + d[3] + (d[4] ? YASAM : 0); const E = [20, 12, 15, 18, 16, 25]; const yaz = (h) => h.map((d, i) => String(d)[i ? "padStart" : "padEnd"](E[i])).join(""); console.log(yaz(["duzen", "elle kalem", "fark etme(sn)", "olay basina istek", `${OLAY.length} olayda`, "bayat istek nereye"])); for (const d of DUZEN) { const s = farkEtme(d); console.log(yaz([d[0], d[1], s, s * HIZ, s * HIZ * OLAY.length, d[5]])); } // --- Kalici adresin kendi bedeli ------------------------------------------------ // Toplayicilar ucuncu taraf duyarga sahiplerinin izin listesinde adresle yaziyor; bu yuzden // her ornek ayri bir kalici adres istiyor. Kota ve ucret kurgudur. const KOTA = 5, BOSTA_UCRET = 1, SAAT = 720; // birim/saat, kurgu aylik saat const K = [12, 16, 15, 16, 18, 14]; const yaz2 = (h) => h.map((d, i) => String(d)[i ? "padStart" : "padEnd"](K[i])).join(""); console.log("\n" + yaz2(["tepe ornek", "ortalama ornek", "gereken adres", "kota disi ornek", "bosta adres-saat", "aylik birim"])); for (const tepe of [3, 5, 7, 9]) { const ortalama = Math.round(tepe * 0.6); const ayrilan = Math.min(tepe, KOTA); const bosta = Math.max(0, ayrilan - ortalama); console.log(yaz2([tepe, ortalama, tepe, Math.max(0, tepe - KOTA), bosta * SAAT, bosta * SAAT * BOSTA_UCRET])); } // --- Birakilan adres: geri alinamayan kalem ------------------------------------- // Adres birakildiginda havuza doner. Yayimlanmis oldugu icin istemcilerde yasamaya devam eder; // sonum carpani kurgudur. Adres ikinci haftada baska bir kiraciya veriliyor. const BASLANGIC = 4200, SONUM = 0.55, HAFTA = 6, DEVIR = 2; const H = [8, 16, 22, 26]; const yaz3 = (h) => h.map((d, i) => String(d)[i ? "padStart" : "padEnd"](H[i])).join(""); console.log("\n" + yaz3(["hafta", "bayat istek", "adresin sahibi", "yabanciya giden (toplam)"])); let toplam = 0; for (let h = 1; h <= HAFTA; h += 1) { const istek = Math.round(BASLANGIC * SONUM ** (h - 1)); if (h >= DEVIR) toplam += istek; console.log(yaz3([h, istek, h < DEVIR ? "havuzda" : "baska kiraci", h < DEVIR ? 0 : toplam])); }
duzen elle kalem fark etme(sn) olay basina istek 3 olayda bayat istek nereye gecici adres 5 450 3600 10800 eski adres / yeni sahip kalici adres 0 25 200 600 dusuyor ad uzerinden 0 150 1200 3600 eski ornek kalici adres + ad 0 25 200 600 dusuyor tepe ornek ortalama ornek gereken adres kota disi ornek bosta adres-saat aylik birim 3 2 3 0 720 720 5 3 5 0 1440 1440 7 4 7 2 720 720 9 5 9 4 0 0 hafta bayat istek adresin sahibi yabanciya giden (toplam) 1 4200 havuzda 0 2 2310 baska kiraci 2310 3 1271 baska kiraci 3581 4 699 baska kiraci 4280 5 384 baska kiraci 4664 6 211 baska kiraci 4875
Kalem Sayısı Süreyi Belirliyor
Birinci tablonun ikinci sütunu bu dersin çekirdeğidir: elle güncellenen kalem sayısı.
Geçici adres düzeninde bu sayı beştir. Örnek değiştiğinde adres de değişir ve adresi tutan beş yerin beşi de elle güncellenmelidir. Üçüncü sütun bunun süreye çevrilmiş hâlidir: beş kalem, kalem başına doksan saniye, toplam dört yüz elli saniye. İstemcinin değişimi fark etmesi bu kadar sürüyor.
Fark etme süresi bir yetenek sorunu değildir, kalem sayısının doğrudan çarpımıdır. Altıncı bir yer adresi tutmaya başlasa süre beş yüz kırk saniyeye çıkar. Adresi kaç yerde yazdığını bilmeyen bir kurulumda fark etme süresi de bilinmez.
Dördüncü sütun bunu isteğe çeviriyor: saniyede sekiz istek, olay başına üç bin altı yüz bayat istek. Dönemde üç olay olduğu için toplam on bin sekiz yüz.
İkinci satır kalıcı adresi koyuyor. Adres artık örneğe ait değildir; ayrı bir kaynaktır ve örnek değiştiğinde yeni örneğe taşınır. Elle güncellenen kalem sayısı beşten sıfıra iniyor, çünkü beş yerdeki değer hiç değişmiyor. Fark etme süresi taşıma işleminin kendisine, yirmi beş saniyeye iniyor; bayat istek olay başına iki yüze, dönemde altı yüze düşüyor. On bin sekiz yüzden altı yüze: on sekiz kat.
Üçüncü satır ad üzerinden çözümlemeyi ölçüyor. Adres yine geçicidir ama beş kalem adresi değil adı tutuyor; değişimde güncellenen tek şey ad kaydıdır. Elle kalem sıfır, ama süre kalıcı adresinkinden altı kat uzun: doksan saniye kayıt güncellemesi artı altmış saniye yaşam süresi, toplam yüz elli saniye. Yaşam süresi burada ölçülmüyor, katılıyor.
Dördüncü satır ikisini birleştiriyor: ad kalıcı adrese işaret ediyor, örnek değiştiğinde yalnız adres taşınıyor, kayıt hiç değişmiyor. Süre kalıcı adresin süresine, yirmi beş saniyeye dönüyor ve yaşam süresi denklemden çıkıyor. Ad tümleştirmesinin kalıcı adresi gereksiz kılmadığı, tersine onunla birlikte çalıştığı yer burasıdır.
Bayat İsteğin Nereye Gittiği
Son sütun aynı sayıların çok farklı üç anlamı olduğunu gösteriyor. Bayat istek sayısı tek başına karar taşımaz; o isteklerin nereye ulaştığı taşır.
Kalıcı adres düzenlerinde bayat istekler düşüyor. Adres taşınma anında hiçbir arayüze bağlı değildir; istemci bağlanamaz, hata alır, yeniden dener. Altı yüz istek kayboldu ve bunu istemci de biliyor.
Ad üzerinden düzende bayat istekler eski örneğe gidiyor. Bu, düzenin bir yan etkisi değil, bir kararın sonucudur: eski örnek yaşam süresi boyunca ayakta tutuluyor. Üç bin altı yüz istek doğru yanıtı alıyor. Bedeli tabloda görünmüyor ama sayılabilir: altmış saniye × üç olay = yüz seksen örnek-saniye boyunca iki örnek birden çalışıyor. Yaşam süresi uzadıkça hem pencere hem bu fazladan kapasite büyür.
Geçici adres düzeninde bayat istekler eski adrese gidiyor ve o adres artık serbesttir. Dört yüz elli saniyelik pencere boyunca üç bin altı yüz istek, kime ait olduğu bilinmeyen bir adrese ölçüm verisi ve kimlik bilgisi taşıyor. Üç düzen arasında sayıca en kötüsü aynı zamanda niteliğe göre de en kötüsüdür — ama bu iki kötülük birbirinden bağımsızdır. Bayat isteği sıfıra indirmek onun yabancıya gitmesini engellemez; bunun için adresin kime ait olduğunun değişmemesi gerekir.
Kalıcı Adresin Faturası
İkinci tablo kalıcı adresi kendi başına ölçüyor. Toplayıcılar üçüncü taraf duyarga sahiplerinin izin listesinde adresle yazılı olduğu için her örneğin ayrı bir kalıcı adrese ihtiyacı var.
Üçüncü sütun ihtiyacı, dördüncü sütun ise kotayı gösteriyor. Bölge başına beş kalıcı adres vardır. Tepe örnek sayısı yediye çıktığında iki örnek, dokuza çıktığında dört örnek kalıcı adres alamıyor. Bu örnekler ne kadar doğru yapılandırılırsa yapılandırılsın üçüncü tarafın izin listesinden geçemez. Kalıcı adres, sayısı sabit bir kaynaktır ve ölçeklenen bir gruba takılmıştır: grup büyüyebilir, adres havuzu büyümez.
Beşinci ve altıncı sütunlar ters yöndeki bedeli sayıyor. Ayrılan adres tepe değere göre tutulmalıdır, ama grup ortalamada tepe değerin altında çalışır. Tepe beş, ortalama üç iken iki adres ayın çoğunda hiçbir örneğe bağlı değildir: bin dört yüz kırk adres-saat, aylık bin dört yüz kırk birim. Kullanılmayan adres ücretlidir; bağlı adres değildir.
İki sütun birlikte okunduğunda kalıcı adresin dar bandı görünüyor. Tepe üç ile beş arasında kota yetiyor ama boşta ücret en yüksek noktasında. Tepe dokuzda boşta ücret sıfıra iniyor — çünkü beş adresin beşi de her zaman bağlı — ama dört örnek adressiz kalıyor. Kalıcı adres ne az ölçeklenen ne çok ölçeklenen bir gruba oturuyor; ortada dar bir aralıkta çalışıyor.
Üçüncü bedel tabloda sayı olarak değil, birinci tablonun ikinci satırında duruyor: taşıma bir işlemdir. Adres kendiliğinden yeni örneğe geçmez; bir çağrı yapılır, adres eski arayüzden çözülür ve yenisine bağlanır. Yirmi beş saniyelik pencere ile altı yüz düşen istek bu işlemin süresidir. İşlemin bir başka yüzü daha var: adresi bir örnekten alıp başkasına bağlayabilen yetki bir yönetim ucudur ve o yetkiye sahip olan, trafiği kendi örneğine çekebilir. Kalıcı adres istemcinin gördüğü değeri sabitlerken, o değerin arkasındaki makineyi değiştirebilen bir düğme ekliyor.
Bırakılan Adres
Üçüncü tablo bu dersin geri alınamayan kalemini ölçüyor.
Kalıcı adres bırakıldığında havuza döner. Bırakma tek bir işlemdir ve geri alınmaz: aynı adresin yeniden verilmesi diye bir işlem yoktur. Adres ikinci haftada başka bir kiracıya veriliyor.
Sorun adresin gitmesi değildir. Sorun adresin yayımlanmış olmasıdır. Beş kalemde yazılıydı ve o beş kalemin hepsi senin denetiminde değil: üçüncü tarafın izin listesi ve bir başkasının işletim belgesi senin güncelleme turuna girmez. İlk hafta dört bin iki yüz istek bırakılan adrese gitmeye devam ediyor. Sönüm sürüyor ama bitmiyor: altıncı haftada hâlâ iki yüz on bir istek var.
İkinci sütunun toplamı asıl sayıdır. İkinci haftadan altıncı haftaya kadar dört bin sekiz yüz yetmiş beş istek, adresin yeni sahibine gitti. Bu isteklerin içinde ölçüm verisi, toplayıcı kimliği ve belki bir erişim belirteci var. Yeni sahip hiçbir şey yapmadı; adresi kiraladı ve trafik geldi.
Bu yüzeyin kapatılması geriye dönük değildir. Adres bırakıldıktan sonra yapılabilecek tek şey kalemleri güncellemektir, ve senin denetimindeki kalemler zaten güncellenmişti. Yüzeyi kapatan tek karar adresi bırakmamaktır — yani boşta duran adresin aylık bin dört yüz kırk birimini ödemeye devam etmektir. Fatura ile yüzey aynı kararın iki yüzüdür.
Elde Kalan Karar
Bu katmanda sağlayıcının devraldığı kalemler: adres havuzunun yönetimi, bırakılan adresin yeniden dağıtımı, ad çözümleme altyapısının kendisi ve kotanın büyüklüğü.
Elde kalan altı kalem: hangi düzenin kullanılacağı, adresin kaç kalemde yazılı olduğu, yaşam süresi değeri, eski örneğin ne kadar ayakta tutulacağı, kaç kalıcı adres ayrılacağı ve adresin bırakılıp bırakılmayacağı. Beşi her an değişir ve beşinin de sayısı bu derste ölçüldü.
Altıncısı değişmez: bırakılmış bir adres geri alınmaz. Bir dengeleyicinin katmanı gibi bu da yaratılış anında değil, bırakma anında kilitlenen bir karardır — ve bırakma, elde kalan kalemler içinde en kolay yapılanıdır: tek bir çağrı, hiçbir uyarı, aylık ücretin sıfırlanması. Bedeli aylar sonra, adresi hiç bilmediğin bir kiracının izin listesinde okurken görünür.
Açılan yüzeyler de üç tanedir ve üçü de bu derste eklendi: taşıma yetkisi (trafiği başka bir örneğe çekebilen bir düğme), ad kaydını değiştirebilen yetki (istemci hiçbir şey fark etmeden bütün trafiği yönlendirir) ve bırakılmış adresin yabancıya taşıdığı istek. Üçü de “adres kararlı olsun” cümlesinin içinde görünmez.
Özet
- Geçici adres düzeninde beş kalem elle güncelleniyor ve fark etme süresi doğrudan bu sayının çarpımı: dört yüz elli saniye, olay başına üç bin altı yüz bayat istek, üç olayda on bin sekiz yüz.
- Kalıcı adres elle güncellenen kalemi sıfıra, fark etme süresini yirmi beş saniyeye ve bayat isteği altı yüze indirdi — on sekiz kat. Ad üzerinden çözümleme arada duruyor: yüz elli saniye, üç bin altı yüz istek, çünkü kayıt güncellemesine yaşam süresi ekleniyor.
- Bayat istek sayısı tek başına karar taşımıyor: kalıcı adreste istekler düşüyor, ad düzeninde ayakta tutulan eski örneğe gidiyor (yüz seksen örnek-saniye fazladan kapasite), geçici adreste serbest kalmış bir adrese gidiyor.
- Kalıcı adres dar bir bantta çalışıyor: tepe dokuz örnekte dört örnek kota dışı kalıyor, tepe beşte ise iki adres boşta duruyor ve ayda bin dört yüz kırk birim yazıyor. Bağlı adres ücretsiz, boşta adres ücretlidir.
- Bırakılan adres geri alınmaz ve yayımlanmış olduğu için ölmez: ikinci haftadan altıncıya kadar dört bin sekiz yüz yetmiş beş istek adresin yeni sahibine gitti. Yüzeyi kapatan tek karar adresi bırakmamak, yani boşta ücreti ödemeye devam etmektir.
Sonraki Adım
Son iki ders isteğin bulduğu ucu kurdu: dengeleyici hangi örneğe gideceğini belirledi, adres ve ad o ucun kararlı kalmasını sağladı. Ölçüm ağının panosuna gelen her istek artık doğru makineye varıyor.
Her istek hâlâ o makineye varıyor. Bölge haritası, sayaç listesi ve varlık dosyaları uzaktaki bir istemci için de aynı yolu kat ediyor ve kaynak sunucudan çıkan her bayt için çıkış ücreti yazılıyor. Aynı harita günde binlerce kez, aynı bölgeden dışarı çıkıyor.
Bu yanıtların bir bölümü istemciye çok daha yakın bir yerde tutulabilir. Kenar önbelleğinin mekaniği daha önce ölçüldü; sonraki ders kenarı kiralanan bir hizmet olarak ele alır ve üç şeyi sayar: isabet oranı kaynağa inen isteği ne kadar düşürüyor, kenar çıkışı ile kaynak çıkışı ayrı fiyatlandığında toplam fatura hangi isabet oranında dönüyor, ve geçersizleştirme kaç istek ile kaç saniyeye mal oluyor. Kenarın devraldığı kararlar da kalem kalem sayılır: önbellek anahtarı, tazelik ve sıkıştırma kararlarından kaçı elde kalıyor.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.