တသမတ်တည်းခန်းလျှောလျှော်ထားသောစနစ်များကိုဖြန့်ဝေထားသောစနစ်များတွင်အသုံးပြုသောဒေတာခွဲဝေချထားသည့် algorithm ဖြစ်ပြီး, ၎င်းသည် virtual hash လက်စွပ်ပေါ်တွင်မြေပုံ node များဖြင့်မြေပုံ node များဖြင့်ကျုံ့သည့်အခါဆာဗာ node များ၏အကျိုးသက်ရောက်မှုကိုလျော့နည်းစေသည်။
ပါဝင်သော algorithm ၏အဓိကအယူအဆတစ်ခုမှာပါ 0 င်သည့် node များအားလုံးကို hash function မှတဆင့်လက်စွပ်နေရာတစ်ခုသို့မြေပုံရေးဆွဲရန်နှင့်ဒေတာပစ္စည်းများသည်အတူတူပင် hash function ကို သုံး. ဤနေရာသို့လည်းမြေပုံဆွဲထားသည်။ ဒေတာများကိုလက်ယာရစ် ဦး တည်ချက်တွင်ပထမဆုံး node သို့ခွဲဝေချထားပေးလိမ့်မည်။
တသမတ်တည်း hash တွင် hash function ကို data များကို data များကို data များကို hash တန်ဖိုးများသို့မြေပုံများကိုမြေပုံဆွဲရန်အသုံးပြုသည်။ CRC32, MD5, Sha1 ကဲ့သို့သောဘုံလုပ်ဆောင်ချက်များကိုစသည်တို့ဖြစ်သည်။
ရုပ်ပိုင်းဆိုင်ရာဆာဗာ node တစ်ခုစီသည်ပိုမိုမျှတသောဝန်ခွဲဝေမှုကိုရရှိရန်အတွက် virtual node မျိုးစုံနှင့်ကိုက်ညီနိုင်သည်။ Virtual Node များသည်အမှန်တကယ် node များမဖြန့်ချိဖြန့်ဖြူးခြင်းနှင့်ခြုံငုံဖြည့်စွက်ညီညွတ်မှုကိုတိုးတက်စေနိုင်သည်။
ဒေတာများကိုသိုလှောင်ရန်လိုအပ်သည့်အခါ hash တန်ဖိုးကို၎င်း၏သော့ချက်တန်ဖိုးပေါ်တွင် အခြေခံ. တွက်ချက်သည်။ မတွေ့ပါကပထမ node ကိုပြန်ပို့ပါ။ ဤနည်းလမ်းသည် node များအရေအတွက်ပြောင်းလဲမှုများကြောင့်အကြီးစားဒေတာရွှေ့ပြောင်းမှုကိုရှောင်ရှားနိုင်သည်။
ဤတွင် PHP တွင်ရေးသားထားသောတသမတ်တည်းသော HAH အကောင်အထည်ဖော်မှုဥပမာတစ်ခုမှာ PHP တွင်ရေးသားထားသောတသမတ်တည်းရှိသောအကောင်အထည်ဖော်မှုဥပမာတစ်ခုဖြစ်သည်။
class ConsistentHash
{
private $nodes = array();
private $position = array();
public function addNode($node)
{
$this->nodes[$node] = true;
$this->updatePosition();
}
public function removeNode($node)
{
unset($this->nodes[$node]);
$this->updatePosition();
}
public function getNode($key)
{
if (empty($this->nodes)) {
return null;
}
$pos = $this->hash($key);
foreach ($this->position as $node => $position) {
if ($pos <= $position) {
return $node;
}
}
return reset($this->position);
}
private function updatePosition()
{
$positions = array();
foreach ($this->nodes as $node => $value) {
for ($i = 0; $i < 3; $i++) {
$positions[$node . '_' . $i] = $this->hash($node . '_' . $i);
}
}
asort($positions);
$this->position = $positions;
}
private function hash($str)
{
return crc32($str);
}
}
// အသုံးပြုမှုဥပမာ
$hash = new ConsistentHash();
$hash->addNode('Server1');
$hash->addNode('Server2');
$hash->addNode('Server3');
$server = $hash->getNode('data123');
echo $server; // output ဖြစ်လိမ့်မည် Server1
အထက်ဖော်ပြပါကုဒ်သည်ရိုးရှင်းသောတသမတ်တည်းရှိသော Hash အတန်းအစားကိုတည်ဆောက်ပြီး node များထည့်ခြင်း, node များထည့်သွင်းခြင်း, virtual node ယန္တရားကိုမိတ်ဆက်ပေးခြင်းအားဖြင့်,
တသမတ်တည်းခန်းလျှောလျှော်သည်ထိရောက်သောတည်ငြိမ်ပြီးတည်ငြိမ်သောဖြန့်ဖြူးသောဝန်ဟန်ချက်ညီမှုဖြေရှင်းနည်းတစ်ခုဖြစ်ပြီးအထူးသဖြင့် node များမကြာခဏပြောင်းလဲသွားသောနေရာတွင်စနစ်အခြေအနေများအတွက်သင့်တော်သည်။ ဤဆောင်းပါးသည် developer များကသီအိုရီရှင်းလင်းချက်များနှင့် PHP အကောင်အထည်ဖော်မှုဥပမာများမှတဆင့်အခြေခံဆေးထည့်ခြင်း၏အခြေခံအသုံးပြုမှုကိုကျွမ်းကျင်စေသည်။ ကြီးမားသောဖြန့်ဝေထားသောစနစ်များကိုဒီဇိုင်းဆွဲသည့်အခါတသမတ်တည်းထားရှိ algorithms ကိုနားလည်သဘောပေါက်ခြင်းနှင့်ကျင့်သုံးခြင်းတို့သည်စနစ်၏ပမာဏနှင့်တည်ငြိမ်မှုကိုသိသိသာသာတိုးတက်စေနိုင်သည်။