日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

图片服务器的url hash架构

發布時間:2023/11/27 生活经验 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图片服务器的url hash架构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是urlhash架構

url hash架構對url進行一次hash算法,然后通過hash結果找到對應的服務器。因為針對單一個url的hash結果是一樣的,所以理論上這個url會被永久分配到固定的一臺服務器上。另外因為經過了hash算法,所以分配url就很均勻,同時訪問量也可以達到均衡。

為什么要用urlhash架構

  • 圖片服務器的特點一是訪問量很大,二是容量也很大,通過簡單的負載均衡,可以解決訪問量大的問題,但是容量的問題并沒有改善。所以會造成容災問題。
  • 容災問題:系統某個時間段被訪問的數據嚴重超出緩存集群中最小單機的容納容量就會造成容災,容災會使大量單一鏈接穿透,直接對后臺的IO性能影響很大。
  • 雖然可以通過增加緩存容量的配置來解決容災問題,但是內存總是有限的,為每一臺機器增加超大內存成本上也開銷很大,另外在squid中也不宜配置很大的磁盤緩存,否則squid中的hash表會很大,性能很差。
  • 通過hash架構,可以充分利用緩存集群的內存,容災問題就不再取決于緩存集群中最小單機的容納容量,而是緩存集群中所有機器的容納容量之和。

各種urlhash架構

  1. 基于dns的hash架構
  2. 基于haproxy的自動hash架構
  3. 基于nginx的手動hash架構

基于dns的hash架構圖

基于dns的hash架構說明

  • 這個架構適合面向用戶的圖片系統,比如論壇、相冊、博客中的圖片上傳。這樣它才能夠保證文件名有一致的規范。
  • 這個架構圖分了36個域名,圖片文件名是用md5值起的,在md5值中取一位字母就可以表明它是在哪個域名里,域名就對應了機器,上傳分發的時候也是根據此字母來分發。

基于dns的hash架構優缺點

優點

  1. 使用了dns分流,成本較低,而且dns性能高,不用維護。
  2. 可突破IE默認每主機2個線程的限制。

缺點

  1. 可用性方面,如果有一臺機器宕機,則指向這臺機器的請求無法讀取。
  2. 分流方面,只能全部同步,成本較高
  3. 只適用于面向用戶的系統

基于nginx的自動hash架構圖

基于nginx的自動hash架構說明

  • 這是一種新的緩存架構,由nginx作為最前端,代理到緩存機器。
  • nginx后面是緩存組,由nginx經過url hash后將請求分到緩存機器。
  • 這個架構方便純squid緩存升級,可以在squid的機器上加裝nginx。
  • nginx有緩存的功能,可以將一些訪問量特大的鏈接直接緩存在nginx上,就不用經過多一次代理的請求。比如favicon.ico和網站的logo。

基于nginx的自動hash架構優缺點

優點

  1. 高性能
  2. 使用方便,后臺是什么樣關系不大
  3. 有很高的可用性
  4. 緩存架構,分流方便
  5. 可直接在nginx代理緩存部分鏈接

缺點

  1. url分流可控性弱,增減緩存機器都會引起緩存重新分配,意味著緩存全部失效。

基于nginx的手動hash架構說明

  • 這個架構圖和自動hash的架構是一樣的,唯一有差別的是hash算法的變化,自動hash是用nginx upstream hash模塊自帶的hash算法來實現分流,這個手動架構是自己設計一個算法來實現。
  • 算法設計思路是從url中取一個字符來作分流依據,比如定義鏈接的倒數第10個字符來分流,同樣可以分配得很均勻。
  • 手動架構可以避免自動架構中增減機器帶來的緩存失效問題,另外可以精確知道一個鏈接到底存在哪臺緩存上。

基于nginx的手動hash架構優缺點

優點

  1. 基本可以繼承自動架構的優點
  2. 避免增減機器的問題
  3. 精確知道鏈接存儲在哪臺緩存上

缺點

  1. 配置較復雜,要分配均勻配置不易。

采用Hash架構對bbs架構優化

  • 先前講的bbs架構采用的是lvs+squid作為前端,這樣的話squidclient更新緩存時需要更新所有的squid,這個效率很低下,使用hash架構就可以使squidclient每次只需要清理一臺squid,效率大為提升。
  • 推薦的是使用nginx手動hash架構,它可以精確知道鏈接會存在哪臺機器上,這樣就可以配置精確的備份機器。

?

總結

以上是生活随笔為你收集整理的图片服务器的url hash架构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。