亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP memcached 如何確定在集群中的哪個節點上存儲密鑰?

PHP memcached 如何確定在集群中的哪個節點上存儲密鑰?

PHP
富國滬深 2023-04-28 17:18:46
我有一些數據要存儲在 memcached 中(使用 PHP libmemcached 客戶端:https://www.php.net/manual/en/intro.memcached.php)。它在我的網絡應用程序中出現得非常頻繁。為了減少單個 memcached 節點的流量,我在密鑰末尾附加了一個 1 到 10 之間的隨機數,希望客戶端不會將所有密鑰存儲在單個節點上。我曾假設分配密鑰的過程是隨機的,但在 15 個節點中,至少有一半的密鑰進入了同一個節點。這讓我覺得對于它如何決定將哪個節點用于給定密鑰,有一些更具確定性的東西。有誰知道它是怎么做到的?
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

它使用哈希。以最簡單的形式,想象一下,如果您在密鑰上運行像 MD5 這樣的哈希函數,您可以使用第一個字節來確定它應該去哪個服務器。

這很重要,因為如果 2 個服務器與多個 memcached 服務器通信,它們需要可靠地為相同的密鑰選擇相同的服務器。隨機是不好的,因為這意味著客戶端可能會嘗試get()從存儲該項目的不同服務器進行訪問。

如果您有 15 個節點,并且超過一半的項目存儲在 1 個節點中,則您是:1. 極度不走運或 2. 某些配置不正確并且您的某些服務器標記為離線。

底層哈希比簡單的“md5”更復雜,它使用“一致性哈?!彼惴?。這意味著如果您有 15 個節點并丟失 1 個,大多數密鑰仍將解析到同一臺服務器。關于“一致性哈?!钡奈恼潞荛L,因此應該很容易獲得技術細節。


查看完整回答
反對 回復 2023-04-28
  • 1 回答
  • 0 關注
  • 132 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號