An Examination of Sharding Functions
سوال مهمی که وجود داره اینه که اساسا بر طبق چه معیار و الگویی باید درخواست ها بین node های مختلف shard بشن؟
مسئولیت map کردن درخواست ورودی به یک shard خاص بر عهده sharding function هست.
معمولا sharding function خیلی شبیه به hashing function هست و مثلا bucket-based hashtable رو میشه عملا به عنوان sharding function استفاده کرد
معمولا برای sharding function از hashing function هایی استفاده میکنن که یه object رو هر چی که باشه به یه integer hash تبدیل میکنه، بعد از محاسبه باقیمانده اون integer بر تعداد shard ها، مشخص میشه که درخواست باید به کدوم shard ارسال بشه
این hash function باید دو تا خصوصیت داشته باشه:
Determinism
همیشه تابع برای یک ورودی خاص باید یک خروجی ثابت و معین رو برگردونه
Uniformity
توزیع خروجی تابع باید uniform باشه (اینطوری نباشه که روی یه سری shard ها لود وحشتناک بره و روی یه سری لودی نباشه)
ShardNO = hash(Req) % numberOfShards
#designing_distributed_systems_brendan_burns
@gocasts
Post #57
595
Go Casts | Systems & Agents 🚀 Replicated, Sharded Caches گاهی اوقات سیستم کش به میزانی در عملکرد سیستم شما تاثیرگذاره که سیستم شما نمیتونه fail شدن یک shard رو تحمل کنه حتی برای مدت موقت، در این گونه مواقع میشه از ترکیب دو الگو استفاده کرد، یعنی یه سری shard وجود داشته باشه که دیتاهای…