Dağıtık Sistemler Terimleri Sözlüğü

Dağıtık sistemler modern yazılım mimarilerinin omurgasını oluşturmaktadır. Bu nedenle dağıtık sistemler terminolojisinde en sık kullanılan terimleri bir araya getirerek bir kaynak oluşturmak istedim. Kaynağa ekleme yaparak geliştirmeyi planlıyorum.

Faydalı bir kaynak olması dileğiyle.


Kaynaklar


Sözlük

A

ACID Veritabanı işlemlerinin (transaction) güvenilirliğini garanti altına almak için kullanılan bir dizi özelliktir. Atomicity (Atomiklik), Consistency (Tutarlılık), Isolation (İzolasyon) ve Durability (Dayanıklılık) kelimelerinin baş harflerinden oluşur.

API Gateway Mikroservis mimarilerinde, istemcilerden gelen tüm istekleri kabul eden, bu istekleri uygun servislere yönlendiren ve sonuçları istemciye geri döndüren bir ara katmandır.

Asynchronous Communication (Asenkron İletişim) Dağıtık sistemlerde bileşenlerin, birbirlerini bloklamadan mesaj alışverişi yapmalarını sağlayan iletişim modelidir. Gönderici, mesajı iletir ve alıcıdan anında yanıt beklemeden kendi işlemlerine devam eder. Bu sayede bileşenler zaman bakımından gevşek bağlanır (loosely coupled in time).

At-Least-Once Semantics Bu garanti, bir mesajın veya işlemin alıcıya en az bir kez (yani, bir veya daha fazla kez) ulaşacağını taahhüt eder. Bu modelde sistem, bir mesajı kaybetmektense tekrar işleme riskini alır.

At-Most-Once Semantics Bu garanti, bir mesajın veya işlemin alıcıya en fazla bir kez (yani, sıfır ya da bir kez) ulaşacağını taahhüt eder. Bu modelde sistem, bir mesajı tekrar işleme riskini almaktansa kaybetmeyi tercih eder.

Atomic Multicast (Atomik Çok Noktaya Yayın) Tüm katılımcıların mesajları aynı sırayla almasını ve teslim etmesini garanti eden multicast türüdür

Availability (Erişilebilirlik) Bir sistemin, kullanıcı isteklerine her zaman yanıt verebilme yeteneğini ifade eder. Erişilebilirlik, yalnızca sistemin çalışıyor olması değil, aynı zamanda hatalı olmayan bir düğümün, makul süre içinde geçerli bir yanıt üretebilmesi anlamına gelir.


B

B-Tree Veritabanı sistemlerinde en yaygın kullanılan dengeli ağaç tabanlı indeksleme yapısıdır. Verileri sıralı şekilde disk üzerinde saklar ve belirli bir anahtara göre hızlı erişim sağlar. Her düğüm birden fazla anahtar ve alt düğüm göstergesi içerdiği için, arama, ekleme ve silme işlemleri O(log n) karmaşıklıkla çalışır.

Back-of-the-Envelope Estimation Bir sistemin kapasite veya performans gereksinimlerini, detaylı analizler yerine temel varsayımlar ve yaygın performans rakamları kullanarak hızlıca tahmin etme yöntemidir.

Batch Processing (Toplu İşleme) Büyük miktarda verinin biriktirilip belirli zaman aralıklarında ya da gruplar halinde işlenmesini sağlayan veri işleme modelidir. Veriler saklanıp topluca işlenir.

Block Storage (Blok Depolama) Veriyi sabit boyutlu bloklara bölerek depolayan depolama yöntemidir. Bloklar genellikle bir disk adresi (block address) ile tanımlanır ve dosya sistemi birleştirilerek kullanılır.

Blob Storage (Blob Depolama) Veriyi nesne (object) olarak depolayan depolama yöntemidir. Her nesne; veri (data), metadata (açıklayıcı bilgiler) ve benzersiz bir kimlik (object ID veya key) içerir. Blob storage genellikle dosya tabanlı sistemlere kıyasla daha esnek ve ölçeklenebilir olup, büyük miktarda yapılandırılmamış verinin saklanmasına uygundur.

Byzantine Generals Problem (Bizans Generalleri Problemi) Bu problem, dağıtık sistemlerde fikir birliğine (consensus) varmanın zorluğunu anlatan bir alegoridir. Hikayeye göre, bir şehri kuşatan birkaç Bizans generali vardır. Bu generallerin, şehre hep birlikte "saldırmak" ya da hep birlikte "geri çekilmek" üzerine ortak bir karar vermesi gerekir. Aralarındaki iletişim sadece haberciler aracılığıyla sağlanır. Problemin ana zorluğu şudur: Generallerden bazıları hain olabilir. Hain bir general, farklı generallere farklı mesajlar göndererek oy birliğini sabote etmeye çalışabilir. Örneğin, bir generale "saldır" emri gönderirken, diğerine "geri çekil" emri gönderebilir. Eğer sadık generaller, hainlerin kim olduğunu bilmeden ortak bir karara varamazlarsa, saldırı başarısız olur. Bu problem, dağıtık bir sistemdeki düğümlerin (node) bir kısmının hatalı çalışabileceği veya kötü niyetli (malicious) davranabileceği durumlarda bile sistemin genelinin nasıl ortak bir karara varabileceği sorununu temsil eder.

Byzantine Fault (Bizans Hatası) Bir dağıtık sistemde, bir bileşenin diğer bileşenlere rastgele veya kötü niyetli (yanlış) bilgiler göndererek sistemin tutarlılığını bozmaya çalıştığı bir hata türüdür.

Byzantine Fault Tolerance (Bizans Hata Toleransı) Bir sistemin, bileşenlerinden bazıları Bizans hataları sergilese bile doğru şekilde çalışmaya ve fikir birliğine varmaya devam edebilme yeteneğidir. Martin Kleppmann'ın "Designing Data-Intensive Applications" kitabında belirtildiği gibi, toleransı sağlamanın temel bir kuralı vardır:

Toplam n düğümün bulunduğu bir sistemde, f sayıda hatalı (hain) düğümü tolere edebilmek için n > 3f koşulunun sağlanması gerekir. Yani, 1 hain generali tolere etmek için en az 4 generale ihtiyaç vardır.


C

Cache (Önbellek) Sık erişilen veya hesaplanması/erişimi maliyetli olan verilerin, daha hızlı bir depolama katmanında (genellikle RAM veya yakın bellek) geçici olarak tutulması tekniğidir. Önbellek sayesinde, sonraki erişimlerde veriler doğrudan bu hızlı depodan okunur; böylece yanıt süresi azalır ve arka uç sistemlerin (ör. veritabanı) yükü hafifler.

CAP Teoremi (CAP Theorem) Eric Brewer tarafından öne sürülen ve daha sonra Gilbert & Lynch (2002) tarafından biçimsel olarak kanıtlanan ilkeye göre, bir dağıtık sistem aynı anda şu üç özelliği tam olarak sağlayamaz:

Ağ bölünmesi (partition) kaçınılmaz olduğundan, pratikte geliştiriciler genellikle Tutarlılık ve Erişilebilirlik arasında bir seçim yapmak zorunda kalır.

Celebrity / Hot Spot Problem (Sıcak Nokta Problemi) Veri bölümlemede (sharding), belirli bir bölüme (shard) orantısız bir şekilde fazla trafik gelmesi durumudur. Örneğin, bir sosyal ağda çok popüler bir kullanıcının tüm verilerinin aynı shard'da olması, o shard'ın aşırı yüklenmesine neden olur. Bu, "sıcak nokta" (hot spot) olarak da bilinir.

Change Data Capture - CDC (Veri Değişikliği Yakalama) Bir veritabanında yapılan ekleme, güncelleme ve silme gibi değişiklikleri tespit edip yakalayan ve bu değişiklikleri diğer sistemlerin kullanabileceği bir olay akışı (event stream) olarak sunan bir tekniktir.

Clock Drift (Saat Kayması) Bir cihazın donanım saatinin, gerçek zamandan yavaşlaması veya hızlanması durumudur.

Clock Skew (Saat Sapması) Farklı cihazlardaki saatlerin, aynı anda farklı zaman göstermesidir. Ağ gecikmesi ve drift nedeniyle oluşur.

Circuit Breaker (Devre Kesici) Bir servise yapılan istekler belirli bir oranda başarısız olduğunda, o servise daha fazla istek göndermeyi geçici olarak durduran bir tasarım desenidir. Bu, hatalı bir servisin aşırı yüklenmesini ve hatanın sistemin diğer kısımlarına yayılmasını (cascading failure) engeller.

Column-Oriented Storage (Sütun Odaklı Depolama) Veriyi satır satır depolamak yerine, her sütunun tüm değerlerini bir arada depolayan bir veritabanı depolama tekniğidir. Analitik sorgularda genellikle tablonun tamamı yerine sadece belirli sütunlara erişildiği için, bu depolama şekli disk I/O'sunu önemli ölçüde azaltır ve sorgu performansını artırır.

Conflict Resolution (Çakışma Çözümü) Dağıtık sistemlerde aynı verinin farklı kopyalarında yapılan güncellemeler sonucunda çelişkili (conflicting) durumların nasıl giderileceğini tanımlar. Yöntemler arasında son yazma kazansın (last write wins), vektör saatleri (vector clocks) ve uygulama düzeyinde çözümleme (application-level resolution) bulunur.

Consensus (Fikir Birliği) Bir grup düğümün (node), hatalar ve ağ gecikmeleri olmasına rağmen tek bir değer veya karar üzerinde anlaşmaya varmasını sağlayan süreçtir.

Consistency (Tutarlılık) Dağıtık sistemlerde, tüm düğümlerin aynı anda aynı veriyi görmesini ifade eden bir özelliktir. Farklı tutarlılık modelleri farklı garantiler sunar. Güçlü tutarlılık, bir yazma işlemi tamamlandıktan sonra yapılacak tüm okumaların bu yeni değeri görmesini garanti ederken, zayıf tutarlılık geçici tutarsızlıklara izin verebilir.

Consistency Model (Tutarlılık Modeli) Dağıtık veri depolarında (veritabanı, önbellek vb.), uygulamalara verilen görünürlük ve güncelleme garantilerini tanımlayan sözleşmedir. Bir düğüme yapılan yazmanın diğer düğümler tarafından ne zaman ve hangi sırada görüleceğini belirler.

Consistent Hashing (Tutarlı Hashleme) Bir hash tablosuna yeni sunucular eklendiğinde veya çıkarıldığında yeniden eşlenmesi gereken anahtar sayısını en aza indiren bir hashleme tekniğidir.

Consistent Prefix Reads (Tutarlı Önek Okumaları) Bir dizi yazma işleminin belirli bir sırayla gerçekleştiği durumlarda, okuma yapan bir gözlemcinin bu yazmaları her zaman aynı sırada görmesini garanti eden bir tutarlılık modelidir.

Coordination Models (Koordinasyon Modelleri) Dağıtık sistemlerde düğümlerin birlikte karar almasını ve uyumlu hareket etmesini sağlayan mekanizmalardır.

Crash Fault (Çökme Hatası) Bir düğümün tamamen durması ve hiçbir işlem yapamaması durumudur. Düğüm yanıt vermez ama yanlış veya yanıltıcı bilgi göndermez.


D

Directed Acyclic Graph (Yönlendirilmiş Döngüsüz Graf - DAG) Kenarları yönlendirilmiş ve döngü içermeyen bir çizge (graf) yapısıdır. Dağıtık sistemlerde, özellikle iş akışlarının (workflow) ve hesaplama bağımlılıklarının modellenmesinde sıkça kullanılır.

Distributed Transaction (Dağıtık İşlem) Birden fazla düğümü kapsayan ve atomiklik (ya hep ya hiç) garantisi gerektiren işlemdir. Tüm katılımcı düğümlerin aynı sonucu kabul etmesi gerekir; aksi halde işlem geri alınır. Bu amaçla Two-Phase Commit (2PC), Three-Phase Commit (3PC) gibi koordinasyon protokolleri kullanılır.

Distributed Lock Manager (Dağıtık Kilit Yöneticisi) Dağıtık sistemlerde birden fazla sürecin aynı kaynağa eşzamanlı erişmesini engelleyen mekanizmadır.

Distributed System (Dağıtık Sistem) Birden çok bağımsız bilgisayarın (düğümün), ağ üzerinden mesajlaşarak tek bir bütünsel sistem gibi çalıştığı sistemdir. Her düğüm kendi yerel durumuna sahiptir; sistemin genel davranışı bu düğümlerin etkileşiminden ortaya çıkar.

Dataflow (Veri Akışı) Bir sistemde verinin kaynaklardan hedeflere doğru nasıl aktığını ve dönüştürüldüğünü tanımlar. Dağıtık işleme çerçevelerinde (örn. Apache Beam, Flink) veri akışı, operatörler ve kenarlarla temsil edilen yönlendirilmiş grafikler (directed acyclic graphs - DAG) şeklinde modellenir.

Deadlock (Kilitlenme) Birden fazla sürecin, birbirlerinden bekledikleri kaynakları hiçbir zaman serbest bırakmaması nedeniyle ilerleyemediği durumdur.

De-normalization (Denormalizasyon) Veritabanı performansını artırmak amacıyla, bilinçli olarak veri tekrarına izin verilmesidir.

Document Data Model (Belge Veri Modeli) Veriyi, JSON veya XML gibi esnek, yarı yapılandırılmış belgeler (document) halinde saklayan bir NoSQL veri modelidir. Her belge kendi şemasına sahip olabilir. İlişkisel modeldeki gibi katı bir şema gerektirmez.


E

Elasticity (Elastisite) Bir sistemin, gelen yüke göre kaynaklarını otomatik olarak artırıp azaltabilme yeteneğidir. Yük arttığında yeni kaynaklar eklenir, yük azaldığında ise gereksiz kaynaklar serbest bırakılır. Özellikle yükün tahmin edilemez olduğu durumlarda maliyet verimliliği sağlar.

Emergent Behavior (Beliren Davranış) Basit bileşenlerin ve kuralların bir araya gelerek, tek tek bileşenlerin özellikleriyle açıklanamayan karmaşık ve öngörülemeyen bir sistem davranışı ortaya çıkarmasıdır. Dağıtık sistemlerin karmaşıklığı genellikle bu tür beliren davranışlardan kaynaklanır.

Exactly-once Semantics Bir mesajın veya operasyonun, ağ hataları veya tekrarlanan denemelere rağmen tam olarak bir kez işleneceğini garanti eden bir sistem özelliğidir. Dağıtık sistemlerde bunu sağlamak oldukça zordur ve genellikle idempotent alıcılar ve işlem takibi gibi karmaşık mekanizmalar gerektirir.

Eventual Consistency (Nihai Tutarlılık) Bir dağıtık sistemde, yeni bir yazma işlemi yapıldıktan sonra, eğer başka bir güncelleme olmazsa, tüm replikaların eninde sonunda (eventually) en son yazılan değeri yansıtacağını garanti eden bir tutarlılık modelidir. Güncellemenin yayılması sırasında, farklı replikalardan okuma yapan istemciler geçici olarak eski veriyi görebilirler. Yüksek erişilebilirlik (availability) gerektiren sistemlerde sıkça tercih edilir.

Eviction Policy (Tahliye Politikası) Önbellek (cache) dolduğunda, yeni bir öğeye yer açmak için hangi mevcut öğenin çıkarılacağına karar veren kuraldır.


F

Fail-Safe Bir sistemin hata durumunda, hasarı en aza indirecek veya güvenliği sağlayacak şekilde önceden tanımlanmış güvenli bir duruma geçme yeteneğidir.

Failover Birincil bir sunucu veya sistem bileşeni arızalandığında, trafiğin veya operasyonların otomatik olarak yedek (ikincil) bir bileşene aktarılması sürecidir. Yüksek erişilebilirliğin temel bir bileşenidir.

Flow Control (Akış Kontrolü) Bir göndericinin, alıcının işleyebileceğinden daha hızlı veri göndermesini önleyen bir mekanizmadır. Alıcının aşırı yüklenmesini ve veri kaybını engeller.


G

Gossip Protocol Dağıtık sistemlerdeki düğümlerin, bilgiyi birbirlerine rastgele ve periyodik olarak yaydığı bir iletişim protokolüdür. Ölçeklenebilir ve hata toleranslıdır.


H

Happened-Before Relationship Dağıtık bir sistemde olaylar arasında kısmi bir sıralama tanımlayan bir ilişkidir. Eğer A olayı B olayından önce gerçekleşirse (örneğin, aynı süreçte A, B'den önceyse veya A, B'ye bir mesaj gönderdiyse), A -> B olarak ifade edilir. Bu ilişki, sistemdeki nedenselliği (causality) anlamak için temel bir araçtır.

High Availability (Yüksek Erişilebilirlik) Bir sistemin, hata durumlarında dahi sürekli hizmet verebilme yeteneğidir. Erişilebilirlik (Availability) kavramının pratikteki hedefidir.

Horizontal Scaling (Yatay Ölçekleme) Sistemin kapasitesini artırmak için mevcut sunuculara daha fazla güç (CPU, RAM) eklemek yerine, sisteme daha fazla sunucu ekleme yöntemidir. Dağıtık sistemlerin temel ölçeklenme stratejisidir ve neredeyse sınırsız bir büyüme potansiyeli sunar. Yük dengeleyiciler ve bölümleme (sharding) gibi tekniklerle birlikte kullanılır.


I

Idempotence (İdempotentlik) Bir operasyonun bir kez veya birden çok kez tekrarlanmasının aynı sonucu üretmesi durumudur.


L

Leader and Follower (Lider ve Takipçi) Lider tabanlı replikasyon modelinin temel bileşenleridir. Yazma isteklerini yalnızca "lider" (master) düğüm kabul eder. Lider, veriyi yazdıktan sonra bu değişikliği "takipçi" (follower/slave) düğümlere kopyalar. Okuma istekleri ise hem liderden hem de takipçilerden yapılabilir. Bu, sistemdeki yazma işlemlerini merkezileştirerek tutarlılığı yönetmeyi kolaylaştırır.

Leader Election (Lider Seçimi) Dağıtık sistemlerde, koordinasyon ve replikasyon için bir düğümün lider olarak seçilmesi sürecidir.

Leaderless Replication (Lidersiz Replikasyon) Herhangi bir lider düğümün olmadığı, birden çok düğümün yazma ve okuma isteklerini kabul edebildiği bir replikasyon modelidir. Tutarlılığı sağlamak için genellikle "quorum" (çoğunluk) kullanılır. Örneğin, bir yazma işleminin başarılı sayılması için W adet düğüme, bir okuma işleminin başarılı sayılması için ise R adet düğüme ulaşılması gerekir. Eğer W + R > N (toplam replika sayısı) ise, okuma işlemlerinin en güncel veriyi görmesi garanti altına alınır.

Linearizability (Doğrusallaştırılabilirlik) Dağıtık sistemlerdeki en güçlü tutarlılık modellerinden biridir. Tüm işlemler, tek bir global zaman çizelgesinde, gerçek zaman sırasıyla uyumlu olarak görünür. Bir işlem tamamlandığında, sonraki tüm işlemler bu sonucu görür.

Livelock (Canlı Kilitlenme) Süreçlerin çalışmaya devam etmesine rağmen hiçbirinin ilerleyememesi durumudur. Deadlock’tan farklı olarak, süreçler sürekli durum değiştirir ama işlerini bitiremezler.

Liveness (Canlılık) Bir dağıtık sistemin, istenen "iyi" bir olayın eninde sonunda gerçekleşeceğini garanti eden özelliğidir. Canlılık özellikleri, sistemin “ilerleme” yapmasını sağlar.

Load Balancer (Yük Dengeleyici) Gelen ağ trafiğini, arkasındaki birden çok sunucuya (sunucu havuzu) dağıtan bir cihaz veya yazılımdır. Bu, tek bir sunucunun aşırı yüklenmesini önler, sistemin erişilebilirliğini ve güvenilirliğini artırır.

Logical Clock (Mantıksal Saat) Dağıtık bir sistemde, olaylar arasında fiziksel zamana bağlı olmadan bir neden-sonuç sıralaması (bkz. Happened-Before) oluşturmak için kullanılan bir mekanizmadır. Fiziksel saatlerin senkronizasyon zorlukları olmadan olayları sıralamaya yardımcı olur. Lamport saati (Lamport clock) en bilinen örneğidir.

Loose Coupling (Gevşek Bağlılık) Gevşek Bağlılık, bir sistemdeki bileşenlerin (örneğin, servisler, modüller) birbirlerine minimum düzeyde bağımlı olacak şekilde tasarlanması prensibidir. Gevşek bağlı bir sistemde, bir bileşende yapılan bir değişiklik, diğer bileşenleri etkilemez veya çok az etkiler.

Log-Structured Merge-Tree (LSM-Ağacı) Yazma performansı yüksek olması için optimize edilmiş bir veri yapısıdır. Yazma işlemleri doğrudan sıralı bir log dosyasına (veya bellekteki bir yapıya) eklenir, bu da diskteki rastgele yazma ihtiyacını ortadan kaldırır. Daha sonra, bu veriler periyodik olarak birleştirilip sıkıştırılarak daha büyük ve sıralı segmentler (SSTable) halinde diske yazılır. B-Ağaçlarına göre yazma verimi çok daha yüksektir ancak okuma performansı biraz daha düşük olabilir.


M

MapReduce Büyük veri setlerini paralel ve dağıtık bir şekilde işlemek için kullanılan bir programlama modelidir. İki ana adımdan oluşur. Map aşaması, veri setini alır, filtreler veya dönüştürür ve anahtar-değer çiftleri halinde ara sonuçlar üretir. Reduce ise, Map aşamasından gelen ara sonuçları anahtarlarına göre gruplar ve bu gruplar üzerinde birleştirme (aggregation) işlemi yaparak nihai sonucu üretir.

Materialized View (Gerçekleştirilmiş Görünüm) Bir sorgunun sonucunu fiziksel olarak depolayan bir veritabanı nesnesidir. Karmaşık ve maliyetli sorguların sonuçları önceden hesaplanıp bir tablo gibi saklanır. Bu, sorgu performansını önemli ölçüde artırır, ancak temel veriler değiştiğinde bu görünümün de güncellenmesi gerekir.

Message Queue (Mesaj Kuyruğu) Sistem bileşenleri arasında asenkron iletişimi sağlayan bir ara katman bileşenidir. "Üretici" (producer) servisler mesajları kuyruğa gönderir, "tüketici" (consumer) servisler ise bu mesajları kuyruktan alıp işler.

Monotonic Clock (Monotonik Saat) Sadece ileri doğru hareket eden ve asla geri gitmeyen bir zaman ölçerdir. Gerçek duvar saatleri (time-of-day clock) senkronizasyon nedeniyle geri alınabilirken, monotonik saatler genellikle sistemin başlangıcından itibaren geçen süreyi ölçmek için kullanılır ve süre ölçümleri için daha güvenilirdir.

Monotonic Reads (Monoton Okumalar) Bir kullanıcının bir veriyi okuduktan sonra, daha sonraki okumalarında asla o verinin daha eski bir versiyonunu görmemesini garanti eden bir tutarlılık modelidir. Örneğin, zaman akışında geriye gitme gibi anomalileri önler.

Mutual Exclusion (Karşılıklı Dışlama) Birden fazla sürecin (process) aynı anda paylaşılan bir kaynağa (örneğin, bir dosya veya bellek bölgesi) erişmesini engelleyen mekanizmalardır.


N

Network Time Protocol (NTP) Ağ üzerindeki bilgisayarların saatlerini senkronize etmek için kullanılan bir protokoldür. Milisaniye hassasiyetinde zaman senkronizasyonu sağlar.


P

PACELC Theorem PACELC Teoremi, dağıtık bir sistemin iki farklı senaryo altında farklı ödünler vermek zorunda olduğunu belirten bir ilkedir. Eğer bir Ağ Bölünmesi (Partition) olursa, sistem Erişilebilirlik (Availability)ve Tutarlılık (Consistency) arasında bir seçim yapmak zorundadır (CAP Teoremi). Aksi takdirde (Else), yani sistem normal şekilde çalışıyorken, sistem Gecikme Süresi (Latency) ve Tutarlılık (Consistency) arasında bir seçim yapmak zorundadır.

Partially Synchronous System (Kısmen Senkron Sistem) Ağ gecikmelerinin ve işlem hızlarının çoğunlukla belirli bir sınır içinde olduğu, ancak zaman zaman bu sınırları aşabildiği bir sistem modelidir. Hem tamamen senkron hem de tamamen asenkron modellerden daha gerçekçidir ve birçok pratik dağıtık algoritma bu model varsayımı altında tasarlanır.

Partitioning / Sharding (Bölümleme / Parçalama) Büyük bir veritabanını daha küçük ve yönetilebilir parçalara (partition veya shard) ayırma işlemidir. Özellikle çok büyük veri hacimlerine veya yüksek yazma/okuma trafiğine sahip sistemlerde ölçeklenebilirliği artırmak için kullanılır. Veriler genellikle bir "sharding key" (parçalama anahtarı) kullanılarak bölümlere dağıtılır. Yatay ölçeklendirmenin temel bir tekniğidir.

Physical Clock (Fiziksel Saat) Makinelerin donanımsal saatleridir. Gerçek dünyadaki zamanı ölçerler ancak drift ve skew sorunlarına açıktır.

Precision Time Protocol (PTP) Mikrosaniye hassasiyetinde zaman senkronizasyonu sağlayan bir protokoldür. Özellikle finansal işlemler ve telekomünikasyon gibi yüksek hassasiyet gerektiren uygulamalarda kullanılır.


Q

Quorum (Çoğunluk) Bir operasyonun (okuma veya yazma) başarılı sayılması için gereken minimum replika sayısını ifade eder. Örneğin, N=3 replika varsa ve yazma quorum'u W=2 olarak belirlenmişse, bir yazma işleminin en az 2 replikaya başarıyla yazılması gerekir.


R

Rebalancing (Yeniden Dengeleme) Bölümlenmiş (partitioned) bir veritabanı kümesine yeni düğümler eklendiğinde veya çıkarıldığında, verinin ve sorgu yükünün düğümler arasında adil bir şekilde yeniden dağıtılması işlemidir. Bu işlem, sistemin performansını ve verimliliğini korumak için kritik öneme sahiptir.

Read Quorum Bir okumanın en güncel veriyi görmesi için gerekli minimum replika sayısı.

Read Your Writes (Kendi Yazdıklarını Oku) Bir kullanıcının, yaptığı bir yazma işlemini takip eden okuma işlemlerinde bu yazmayı mutlaka görmesini garanti eden bir tutarlılık modelidir.

Redundancy (Yedeklilik) Bir sistemin hata toleransını ve erişilebilirliğini artırmak için aynı bileşenin veya verinin birden fazla kopyasını bulundurma tekniğidir.

Reliability (Güvenirlik) Bir sistemin donanım arızaları, yazılım hataları veya insan hataları gibi beklenmedik durumlarda bile doğru şekilde (istenilen performansta ve doğru işlevi yerine getirerek) çalışmaya devam etme yeteneğidir. Güvenilir bir sistem, hataları tolere edebilir ve hataların sistemin tamamen çökmesine neden olmasını engeller.

Reliable Multicasting (Güvenilir Çok Noktaya Yayın) Multicast iletişiminde, tüm hedeflerin ya mesajı almasını ya da hiçbirinin almamasını garanti eden protokollerdir. Paket kaybı veya düğüm hataları olsa bile güvenilirlik sağlanır.

Replication (Replikasyon) Aynı verinin birden çok kopyasını farklı düğümlerde (sunucularda) tutma işlemidir. Temel amaçları arasında yüksek erişilebilirlik (bir düğüm çökerse diğerleri hizmet verir), hata toleransı ve okuma performansını artırmak (okuma isteklerini farklı replikalara dağıtmak) bulunur.

Replication Lag (Replikasyon Gecikmesi) Asenkron replikasyonda, lider düğüme yazılan bir verinin takipçi düğümlere kopyalanması arasında geçen süredir. Yüksek replikasyon gecikmesi, okuma işlemlerinin eski veriyi görmesine neden olabilir ve tutarlılık sorunları yaratabilir.

Responsiveness (Yanıt Verebilirlik) Bir sistemin, belirlenen hizmet seviyesi hedeflerini (SLO) karşılama yeteneğidir. Genellikle isteklerin ne kadar hızlı yanıtlandığı ile ölçülür.

Row-Oriented Storage (Satır Odaklı Depolama) Row-Oriented Storage, geleneksel veritabanlarının büyük çoğunluğunda kullanılan ve bir tablodaki tek bir satıra ait tüm verilerin disk üzerinde ardışık olarak birlikte depolandığı bir tekniktir.


S

Safety Bir sistemin "kötü bir şeyin asla olmayacağını" garanti eden bir özelliğidir. Sistemin yanlış bir duruma girmesini engeller.

Saga Tek bir ACID işlemiyle yapılamayan uzun süreli dağıtık işlemleri yönetmek için kullanılan bir tasarım desenidir. İşlem, her biri kendi yerel işlemini yapan bir dizi adımdan oluşur. Eğer bir adım başarısız olursa, önceki adımların etkilerini geri alan "telafi edici işlemler" (compensating transactions) çalıştırılır.

Serializability (Serileştirilebilirlik) En güçlü izolasyon seviyesidir. Eş zamanlı olarak çalışan bir grup işlemin sonucunun, bu işlemlerin sanki birbiri ardına (seri olarak) çalıştırılmış gibi olmasını garanti eder. Bu, her türlü yarış durumu (race condition) ve eşzamanlılık problemini ortadan kaldırır, ancak genellikle performans maliyeti yüksektir.

Scalability (Ölçeklenebilirlik) Bir sistemin artan yüke (veri hacmi, trafik, kullanıcı sayısı vb.) başa çıkabilme yeteneğidir.

Single Point of Failure (Tek Hata Noktası) Bir sistemde, arızalanması durumunda tüm sistemin çalışmasını durduracak olan tek bir bileşendir.

Skewed Workload (Eğik İş Yükü) İş yükünün veya veri erişiminin, sistemdeki düğümler veya bölümler arasında eşit olmayan bir şekilde dağılması durumudur. Bu, bazı düğümlerin aşırı yüklenmesine (hot spot) neden olurken diğerlerinin atıl kalmasına yol açar.

SSTable (Sorted String Table) LSM-Ağaçları tarafından kullanılan, anahtara göre sıralanmış ve değişmez (immutable) bir dosya formatıdır. Veriler bir kez yazıldıktan sonra değiştirilmez, bu da sıkıştırma ve okuma verimliliğini artırır.

Synchronous Communication (Senkron İletişim) Senkron iletişim, bir göndericinin bir istek gönderdikten sonra, alıcıdan bir yanıt gelene kadar bloke olduğu (beklediği) bir iletişim modelidir. Gönderici, yanıt gelene veya bir zaman aşımı (timeout) oluşana kadar başka bir iş yapamaz.

State Machine Replication (Durum Makinesi Replikasyonu) Bir servisin durumunu birden çok sunucuya kopyalayarak hata toleransı sağlayan yöntemdir. Tüm replikalar aynı başlangıç durumuna sahiptir ve aynı deterministik işlemleri aynı sırayla çalıştırarak aynı sonuca ulaşır.

Stateless Architecture (Durumsuz Mimari) Sunucuların istemciden gelen istekler arasında herhangi bir durum (session state) saklamadığı tasarım yaklaşımıdır. Her istek, işlenmesi için gereken tüm bilgileri içerir.

Stream Processing (Akış İşleme) Veriyi, üretildiği anda veya çok kısa bir gecikmeyle sürekli bir akış (stream) halinde işleme modelidir. Toplu işlemenin (batch processing) aksine, veriyi biriktirip periyodik olarak işlemek yerine, olay bazlı ve gerçek zamanlı olarak işler.

Strong Consistency (Güçlü Tutarlılık) Her okuma, en güncel yazmayı görür.


T

Tail Latency (Kuyruk Gecikmesi) Bir hizmetin yanıt süreleri dağılımının en yavaş ucunu ifade eder. Genellikle 95., 99. veya 99.9. yüzdelikler (p95, p99, p999) olarak ölçülür. Kullanıcı deneyimi için ortalama yanıtlama süresinden daha önemli olabilir.

Transmission Control Protocol (TCP) Ağ üzerindeki iki bilgisayar arasında güvenilir, sıralı ve hatasız veri iletimi sağlayan bağlantı tabanlı bir iletişim protokolüdür. TCP, veri paketlerinin doğru sırayla ve eksiksiz olarak iletilmesini garanti eder. Bu, paketlerin kaybolması, bozulması veya yanlış sırayla gelmesi durumunda yeniden iletim mekanizmaları kullanarak sağlanır.

Three-Phase Commit (3PC - Üç Aşamalı Onaylama) Dağıtık bir işlemdeki tüm katılımcıların işlemi ya hep birlikte onaylamasını (commit) ya da hep birlikte iptal etmesini (abort) sağlayan bir atomik işlem (atomic commit) protokolüdür. Bu protokol, daha yaygın olarak bilinen Two-Phase Commit (2PC) protokolünün en büyük zayıflığı olan bloklama (blocking) sorununu çözmeye çalışır.

Thundering Herd Problem Aynı olayı veya kaynağı bekleyen çok sayıda sürecin (process) ya da iş parçacığının (thread), olayın gerçekleşmesiyle birlikte aynı anda "uyanarak" kaynağa erişmeye çalışması durumudur. Bu süreçlerin hepsi aynı anda harekete geçtiği için, sistem üzerinde ani ve çok büyük bir yük oluşur.

Time-of-Day Clock (Duvar Saati) Gerçek dünyadaki zamanı (gün, ay, yıl) takip eden saattir. NTP (Network Time Protocol) gibi protokollerle senkronize edilebilir ve bu senkronizasyon sırasında zaman zaman ileri veya geri alınabilir veya kayma (clock drift) yaşanabilir. Bu nedenle, süre ölçümleri için güvenilir değildir.

Total Order Broadcast Bir grup sürece gönderilen mesajların, tüm süreçler tarafından aynı sırada alınmasını ve işlenmesini garanti eden bir protokoldür. Durum makinesi replikasyonu ve dağıtık veritabanlarında tutarlılığı sağlamak için temel bir yapı taşıdır.

Transaction (İşlem) Bir veya daha fazla okuma ve yazma operasyonunu tek bir mantıksal iş birimi olarak gruplayan yapıdır.

Two-Phase Commit (2PC - İki Aşamalı Onaylama) Birden çok düğümü kapsayan bir dağıtık işlemi (distributed transaction) atomik olarak onaylamak (commit) veya iptal etmek (abort) için kullanılan bir protokoldür.


U

User Datagram Protocol (UDP) Ağ üzerindeki iki bilgisayar arasında düşük gecikmeli ve bağlantısız (connectionless) veri iletimi sağlayan bir iletişim protokolüdür. UDP, TCP'nin aksine, veri paketlerinin doğru sırayla ve eksiksiz olarak iletilmesini garanti etmez. Bu nedenle, veri kaybı, bozulması veya yanlış sırayla gelmesi gibi durumlarda ek mekanizmalar gerektirebilir.


V

Vertical Scaling (Dikey Ölçekleme) Sistemin kapasitesini artırmak için mevcut bir sunucunun gücünü (CPU, RAM, depolama vb.) artırma yöntemidir. Yönetimi daha basittir ancak donanım limitleri ve yüksek maliyetler gibi sınırlamalara sahiptir. Ayrıca, tek bir sunucuya bağımlı olduğu için tek hata noktası (SPOF) riski taşır.


W

Weak Consistency (Zayıf Tutarlılık) Okumalar her zaman en güncel değeri görmek zorunda değildir; geçici tutarsızlık kabul edilir.

Write Conflict (Yazma Çakışması) İki veya daha fazla işlemin aynı veri öğesini aynı anda değiştirmeye çalışması durumudur. Bu çakışmaların nasıl çözüleceği sistemin tasarımına bağlıdır.

Write Quorum Bir yazma işleminin başarılı sayılması için gerekli minimum replika sayısı.

Writes Follow Reads (Yazmalar Okumaları Takip Eder) Sistemin kullanıcının kendi eylemleri arasındaki mantık zincirini ve zaman akışını doğru bir şekilde takip etmesini garanti altına alan bir tutarlılık modelidir. Bir kullanıcının oturumu içinde, bir yazma işlemi (write), kendisinden önce gelen okuma (read) işlemine nedensel olarak bağlıdır. Bu nedenle yazma işlemi, okunan veriyi oluşturan işlemden mantıksal olarak sonra gerçekleşmelidir.


home publications projects github