關於 Multiget hole:spymemcached對此的實現方法

來源:互聯網
上載者:User
火丁說:『Multiget的無底洞問題

Facebook在Memcached的實際應用中,發現了Multiget無底洞問 題,具體表現為:出於效率的考慮,很多Memcached應用都已Multiget操作為主,隨著訪問量的增加,系統負載捉襟見肘,遇到此類問題,直覺通 常都是通過增加伺服器來提升系統效能,但是在實際操作中卻發現問題並不簡單,新加的伺服器好像被扔到了無底洞裡一樣毫無效果。

……

問題是很多用戶端,包括Libmemcached在內,在處理Multiget多伺服器請求時,使用的是串列的方式!也就是說,先請求一台伺服器,然後等待響應結果,接著請求另一台,結果導致用戶端操作時間累加,請求堆積,效能下降。

』那麼,spymemcached 是如何? Multiget(即getBulk)的?
  1. 給一組 key,[1,2,3,4,5]。
  2. 先算一下這些key都落在哪些節點上(通過 KetamaNodeLocator 的 public Iterator<MemcachedNode> getSequence(String k)。Now that we know how many servers it breaks down into.);
  3. 此時,得到一個map:<Node1,[1,3]>;<Node2,[2,4]>;<Node3,[5]>;
  4. 遍曆這個map,從每一個 mc node 讀出對應的 keys(即單節點的multiget操作);一個Node一個Node串列的;
  5. 拼成一個大map<key,value>返回。
 如火丁所言,此處不好最佳化,只能:
選擇特殊索引值進行散列,『保證相關的鍵只出現在一台伺服器上』。
spymemcached 相關文章:1)spymemcached 的 useNagle 問題與 TCP/IP延遲發送資料2)spymemcached :某個mc節點操作連續逾時超過998次就 Auto-Reconnect 的特性3)關於 Multiget hole:spymemcached對此的實現方法1)55最佳實務系列:MongoDB最佳實務 (2012-12-15 15:48)
2)55最佳實務系列:Logging最佳實務 (2012-12-15 16:43)3)最佳實務系列:前端代碼標準和最佳實務 (2012-12-19 23:33) 1)電商課題I:Throttle Limits for calls/requests in a clustered environment (2012-11-17 22:14)

2)電商課題V:分布式鎖 (2012-11-17 22:16)

3)電商課題:cookie防篡改 (2012-11-17 22:24)4)電商課題VI:分布式Session (2012-11-17 22:30)

5)電商課題:RBAC許可權控制 (2012-11-17 22:47)

6)電商課題:等冪性 (2012-11-22 23:52)

7)電商課題:用戶端的IP地址偽造、CDN、反向 Proxy、擷取的那些事兒 (2012-09-19 01:17)

8)電商課題:對付秒殺器等惡意訪問行為的簡單梳理 (2012-09-18 03:51)

9)電商課題VII:支付交易一般性準則 (2012-12-14 01:38)

贈圖一枚

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.