📚اConsistent Hashing که بود و چه کرد
یه الگوریتمه که برای توزیع دادهها بین سرورها یا نودها استفاده میشه. این الگوریتم طوری طراحی شده که وقتی یه نود جدید به سیستم اضافه میشه یا یه نود حذف میشه، تغییرات کمتری در توزیع دادهها به وجود بیاد.
مثلا وقتی دادهها باید بین چندین سرور تقسیم بشن. اگه از Consistent Hashing استفاده کنی، هر داده یه "هش" منحصر به فرد پیدا میکنه و بر اساس این هش، به یکی از نودها فرستاده میشه.
مثال با Redis Cluster:
فرض کنیم۳ تا سرور داریم و میخوایم دادهها رو بین این سرورها تقسیم کنیم. هر سرور یه هش خاص برای خودش داره. اگر دادهای رو بخوای ذخیره کنی، اون داده به یک هش تبدیل میشه و سپس داده به نودی که هشش به این مقدار نزدیکتره، ارسال میشه.
1. به هر سرور یه هش اختصاص میدیم:
سرور ۱ -> هش 1
سرور ۲ -> هش 2
...
فرض کنیم یکی از سرورها حذف بشه یا یه سرور جدید اضافه بشه. به جای اینکه کل دادهها دوباره توزیع بشه، فقط یه بخش از دادهها جابجا میشن. مثلا اگر سرور ۳ اضافه بشه، فقط دادههایی که به نزدیکترین سرور قبلی یعنی سرور ۲ میرفتن، به سرور ۳ منتقل میشن
🌏Source
یه الگوریتمه که برای توزیع دادهها بین سرورها یا نودها استفاده میشه. این الگوریتم طوری طراحی شده که وقتی یه نود جدید به سیستم اضافه میشه یا یه نود حذف میشه، تغییرات کمتری در توزیع دادهها به وجود بیاد.
مثلا وقتی دادهها باید بین چندین سرور تقسیم بشن. اگه از Consistent Hashing استفاده کنی، هر داده یه "هش" منحصر به فرد پیدا میکنه و بر اساس این هش، به یکی از نودها فرستاده میشه.
مثال با Redis Cluster:
فرض کنیم۳ تا سرور داریم و میخوایم دادهها رو بین این سرورها تقسیم کنیم. هر سرور یه هش خاص برای خودش داره. اگر دادهای رو بخوای ذخیره کنی، اون داده به یک هش تبدیل میشه و سپس داده به نودی که هشش به این مقدار نزدیکتره، ارسال میشه.
1. به هر سرور یه هش اختصاص میدیم:
سرور ۱ -> هش 1
سرور ۲ -> هش 2
...
فرض کنیم یکی از سرورها حذف بشه یا یه سرور جدید اضافه بشه. به جای اینکه کل دادهها دوباره توزیع بشه، فقط یه بخش از دادهها جابجا میشن. مثلا اگر سرور ۳ اضافه بشه، فقط دادههایی که به نزدیکترین سرور قبلی یعنی سرور ۲ میرفتن، به سرور ۳ منتقل میشن
🌏Source