Can you summarize the following document?
        
  負載均衡最重要的一個應用是利用多臺伺服器提供單一服務,這種方案有時也被稱為伺服器農場。通常,負載平衡主要應用於Web網站,大型的Internet Relay Chat網路,高流量的檔案下載網站,NNTP(Network News Transfer Protocol)服務和DNS服務。現在負載平衡器也開始支援資料庫服務,稱之為資料庫負載平衡器。  對於網際網路服務,負載平衡器通常是一個軟體程式,這個程式偵聽一個外部埠,網際網路使用者可以通過這個埠來訪問服務,而作為負載平衡器的軟體會將使用者的請求轉發給後臺內網伺服器,內網伺服器將請求的響應返回給負載平衡器,負載平衡器再將響應傳送到使用者,這樣就向網際網路使用者隱藏了內網結構,阻止了使用者直接訪問後臺(內網)伺服器,使得伺服器更加安全,可以阻止對核心網路棧和執行在其它埠服務的攻擊。  當所有後臺伺服器出現故障時,有些負載平衡器會提供一些特殊的功能來處理這種情況。例如轉發請求到一個備用的負載平衡器、顯示一條關於服務中斷的訊息等。負載平衡器使得IT團隊可以顯著提高容錯能力。它可以自動提供大量的容量以處理任何應用程式流量的增加或減少。

  DNS輪循(或DNS的迴圈機制),是指一種負載分發,負載均衡或者容錯性地提供多個冗餘的IP服務主機的技術。

  當前,負載均衡器有各種各樣的工作排程演算法(用於決定將前端使用者請求傳送到哪一個後臺伺服器),最簡單的是隨機選擇和輪循。更為高階的負載均衡器會考慮其它更多的相關因素,如後臺伺服器的負載,響應時間,執行狀態,活動連線數,地理位置,處理能力,或最近分配的流量。

  高效能系統通常會使用多層負載均衡。另外專用的硬體負載均衡器以及純軟體負載均衡器,包括開源的,例如Apache Web伺服器的mod proxy balancer擴充套件,nginx,Varnish和Pound反向代理和負載均衡器。使用Gearman將合適的計算任務分發給多臺計算機,如此大量的任務就可以更快的完成了。  對於一個多層次架構體系,在負載均衡器或網路分發器後面有兩種設計,術語稱之為Bowties和Stovepipes。Stovepipe設計中,事務是從頂部分發的,然後從一個固定通道通過一系列硬體和軟體裝置,到達最終目的地。如果使用Bowties設計,在每一層中事務處理有多條路徑可供選擇。在事務處理的網路結構中可能會是Stovepipes,也可以是Bowties,或者根據每一層的實際需求採用雜貨構架。

  負載均衡器需要處理的一個重要問題是:如何儲存使用者會話?如果會話資訊儲存在後臺伺服器,使用者接下來的請求可能會被分配到不同的後臺伺服器,此時使用者會話就無法繼續。負載均衡器可以快取使用者會話,然後將使用者請求分發到不同的後臺伺服器。但是這將帶來負載均衡器的負載問題。  理想下,在負載均衡後面的伺服器叢集(Server cluster)不應該儲存會話(session-aware),如此一來,一個使用者不管什麼時候連線任何一個後端伺服器都不會收到影響。常用的方案是通過一個磁碟資料庫(傳統資料庫)或者一個記憶體資料庫(如: Memcached),例項可參考:Django 快取框架。 將會話資訊存到磁碟資料庫的這個方案由於會增加資料庫的負載,所以這個方案對效能的提高並不好。磁碟資料庫最好是用來儲存會話時間比較長的會話資料。  為了避免資料庫出現單點故障,並且提高其擴充套件性,資料庫通常會複製到多臺伺服器上,通過負載均衡器來分發請求到資料庫伺服器上。微軟ASP.NET中的狀態伺服器技術就是一個典型的會話資料庫的例子。叢集中的所有伺服器都將它們的會話資訊儲存到狀態伺服器上,同時它們可以向狀態伺服器查詢會話資料。  另一個簡單的解決方案是,將一個指定的使用者的的今後的所有請求都會傳送到同一個後臺伺服器——這種方案也被稱為“粘性(sticky)會話”或者“持續化(persistence)”。但該方案的不足之處在於:無法容錯(故障轉移),假如後臺伺服器故障,該使用者的所有的會話的訪問,自然地會話本身也將丟失。即便是資料庫伺服器也發生該情況。雖然Web服務(Web Service)不存在狀態和粘性(sticky),但是使用者和資料庫存是繫結的(存在粘性)。  第二個方案是依據使用者名稱,客戶端IP來分配提供服務的伺服器,也可以隨機分配。因為客戶可能是通過DHCP,NAT或者Web代理來連線Internet的,其IP地址可能經常變換,這使得這個方案的服務質量無法保障。隨機分配由負載均衡器將會話資訊儲存儲存。如果負載均衡器被替換或故障,這些資訊可能會丟失;另外(負載均衡器)負載較高的時候,為保證分配表空間不會被耗盡,超時的分配資訊必須被刪除。隨機分配方法也要求客戶會維持會話狀態,如果客戶瀏覽器禁用了cookies的功能,就會引起問題。優秀的負載均衡器會使用多種持續(會話保持)技術,以避免其中某些不可以用時引起故障。  幸運的是有一種更有效的方法,通常客戶瀏覽器可以儲存使用者的每個會話資訊。例如使用瀏覽器cookie,對資料加密並加上一個時間戳就可以保證安全了;URL重寫。將會話資訊儲存在客戶端通常是首選方案,因為這樣負載均衡器就可以靈活的選擇後臺伺服器來處理使用者請求。然而這種方法不適應於一些較複雜的電子商務,因為電子商務中會話資料較大,而且需要伺服器需要經常重新處理會話資訊;與此同時,URL重寫由於使用者可以改變會話流資料而存在安全問題;加密客戶端cookies也一直存在著安全方面的爭議,因為HTTP很容易遭到中間人攻擊,除非所有的會話都通過HTTPS,否則無法保證安全性。

  不論是軟體負載均衡器,還是硬體負載均衡器都有一系列的特性:

  負載均衡對通訊鏈路的冗餘是非常有用的。例如,一家公司可能有多條網際網路接入線路以保證某一條故障時仍可以正常接入網際網路。  故障轉移的架構意味著一條連線正常使用,另外一條連線作為備用,當第一條出現故障時才會被啟用。  使用負載均衡器,兩條(多條)連線可以都投入使用。有一個裝置或者程式實時監控著所有連線的連通性,並且對正在傳送的包進行選路。同時使用多條連線可以增加頻寬。  許多電信公司在其內部網路或連線到外部網路(其它電信網路)都有多條線路可以使用。為避免某條鏈路出現網路堵塞,最小化連線其它網路的費用或者提高網路的可靠性,它們使用負載均衡將流量從一條鏈路轉移到另一條鏈路。IEEE 802.1aq - Shortest Path Bridging  負載均衡的另一個用途是監控網路活動。負載均衡器能用於將巨大的網路流量分割為幾個子流並使用網路分析器,每個都讀取原始資料的一部分。這對於監視10GbE, STM64高速網路非常有用,在這些網路上由於資料量太大進行復雜的資料處理幾乎是不可能的。  在電子郵件伺服器的應用 Anti-spam Gateway或Anti-spam伺服器端軟體 與備援關係 系統紀錄檔案的掃描(log scan)

  負載均衡經常被用於實現故障轉移-當一個或多個元件出現故障時能持續提供服務這些元件都在持續監控(例如:Web伺服器通過請求一個已知頁面來監控是否正常工作)中,當一個元件沒有響應,負載均衡器就會發現並不再向其傳送資料。同樣當一個元件重新上線,負載均衡器會重新開始向其傳送資料。為了能夠如前所述正常工作,負載均衡體系中至少要有一個冗餘服務。採用一用一備方案(一個元件提供服務,一個備用,當主元件故障時備用元件將接管繼續提供服務)比故障轉移方案更加經濟,靈活。有些型別的RAID系統使用的熱備份功能跟這是類似的作用。
負載平衡(Load balancing)是一種計算機技術,用來在多個計算機(計算機叢集)、網路連線、CPU、磁碟驅動器或其他資源中分配負載,以達到最佳化資源使用、最大化吞吐率、最小化響應時間、同時避免過載的目的。 使用帶有負載平衡的多個伺服器元件,取代單一的元件,可以通過冗餘提高可靠性。負載平衡服務通常是由專用軟體和硬體來完成。 主要作用是將大量作業合理地分攤到多個操作單元上進行執行,用於解決網際網路架構中的高併發和高可用的問題。