Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Consistent Hashing: Hash Ring, Virtual Node'lar ve C# ile Implementasyon
Consistent hashing, node sayısı değiştiğinde key'lerin yalnız yaklaşık 1/(N+1)'ini taşıyan dağıtım yöntemidir: 4'ten 5 node'a geçişte hash % N key'lerin %80'ini taşırken C# ile yazılan hash ring 200 virtual node ile ~%20'sini taşıyor ve yükü ortalamanın ±%10'unda tutuyor. Özellikler xUnit testleriyle sabitleniyor; rendezvous hashing, Redis Cluster'ın hash slot'ları ve string.GetHashCode tuzağı da yazıda.
Unique ID Üretimi: Auto-Increment, UUIDv4, UUIDv7 ve Snowflake
Sharding'li ya da çok instance'lı bir sistemde ID seçimi benzersizlik, sıralanabilirlik, boyut, koordinasyon ve ID'nin dışarıya ne sızdırdığı arasında bir trade-off'tur: UUIDv7 koordinasyonsuz ve index dostu, Snowflake 64 bite sığar ama worker ID ve saat yönetimi ister. .NET'in CreateVersion7'sinin milisaniye içinde sıra garanti etmediğinin, C# Snowflake generator'ın ve JavaScript'in 2^53 sınırının gerçek çıktıları.