高效能伺服器負載平衡的一個可行方案

來源:互聯網
上載者:User

面試官總愛問一些負載平衡的問題,不知道是他們真的遇到了還是自己意淫的。我只想說,在你否定別人的想法時,是否是真的認真考慮過別人的想法是不是比你的好。

大概意思就是說多個使用者請求服務,伺服器是一個叢集,在客戶與伺服器之間加了一層負載平衡,使得每個使用者能夠正常請求服務,而且負載平衡機構可以把使用者的請求分到一個合適的伺服器上。這樣就能夠使伺服器能夠達到最佳的工作狀態。

不過對於這種問題,大多數人給出的解決方案都是基於socket和Epool的,但是這種方案下,一台機器也就處理200-300Mbps的流量的負載。下面給出另一個解決方案。基於網路資料包捕獲的解決方案。

平台:Linux + 曙光零拷貝網卡

曙光零拷貝推出了千兆網卡和萬兆網卡,說白了就是捕包速度為1000Mbps和10000Mbps。

 _______         _________                ________|       |       |         |              |        ||Clients| ----->|Balancer |------------->|Servers ||_______|       |_________|              |________|

可以通過修改資料包來進行負載平衡。例如Client請求Balancer,Balancer根據多個Server的情況,選擇一個合適Server進行處理,之後把這個資料包的目的IP改成選定的Server的IP,目的MAC改成Server的MAC,源MAC改成Balancer自身的MAC。那麼可以再通過網卡把修改過的包發出去。這個包就會被相應的Server處理。Server返回來的資料包,我們把其源IP改成Balancer的IP,源MAC改成Balancer的MAC,目的MAC改成用戶端的MAC,之後通過網卡發送出去。這樣就實現了Balancer的準系統。需要注意的是,我們必須維護一個Client-Server的對應關係。這個對應關係很容易維護,而且能夠做到非常高效。並且修改資料包的MAC和IP簡直是不用什麼開銷。

現在看一下這個方案相比前面的方案的優點。

因為Balancer雙向收發包,那麼處理的峰值流量需打個對摺。如果使用10000Mbps的網卡,那麼能雙向處理5000Mbps。(能捕獲10000Mbps流量的網卡並不是我瞎說的,我們當年用這個網卡處理過7Gb/s的流量,因為我們實在是擷取不到更大的流量了。)也就是說這樣一個Balancer敵得過socket方式的20個Balancer。再進一步算個帳,如果原來有100個Balancer,那麼現在只需要5個Balancer,那麼那省下的95台伺服器是一筆不小的開銷,但是還省下了95台伺服器的電費,維護費。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.