Selecting a Key
همونطور که در پست قبلی اشاره شد باید به تابع هش یک ورودی داده بشه، انتخاب اینکه ورودی تابع هش چی باشه خیلی مهمه.
فرض کنید بخوایم دو پارامتر ip و path (همون route درخواست) رو به عنوان ورودی تابع هش در نظر بگیریم:
shard(request.ip, request.path)
اتفاقی که میفته اینه که مثلا دو درخواست از یک کشور مثل فرانسه ممکنه به دو تا shard مختلف توزیع بشن که این اصلا خوب نیست، ما میخوایم دیتای موقعیت های جغرافیایی یکسان رو تو یه shard نگه داریم
حالا فرض کنید کلید ورودی تابع shard رو اینگونه تغییر بدیم
shard(country(request.ip), request.path)
طبیعتا تو این حالت خیلی sharding بهتری صورت میگیره
همین یه مثال ساده نشون میده که چقدر انتخاب کلید ورودی تابع هش میتونه موثر باشه در عملکرد سیستم shard شده و اگه کلید خوبی انتخاب نکنیم شاید عملا فقط دردسرهای خودمونو زیاد کرده باشیم و sharding تاثیر چندانی نداشته باشه تو بهبود عملکرد سیستم...
#designing_distributed_systems_brendan_burns
@gocasts
Post #58
601
Go Casts | Systems & Agents 🚀 An Examination of Sharding Functions سوال مهمی که وجود داره اینه که اساسا بر طبق چه معیار و الگویی باید درخواست ها بین node های مختلف shard بشن؟ مسئولیت map کردن درخواست ورودی به یک shard خاص بر عهده sharding function هست. معمولا sharding function خیلی شبیه…