集羣,冗餘,負載均衡集羣,負載均衡,主從複製,讀寫分離,分佈式,分佈式計算,分佈式計算平臺,並行計算......剛剛踏入服務器架構的菜鳥們每每會被這些概念弄的不知所云,一臉懵逼。那麼今天就來談談這些概念所表明的意義以及它們的使用場景。html
形成菜鳥們困惑的緣由,主要是廣義和狹義,以及目的和客觀做用 兩個方面。
因此,太深的概念沒必要深究,也沒有必要吹毛求疵。純概念化的東西毫無心義,更重要的是它的使用場景,固然,概念在必定程度上自己就是說明了它的使用場景。全部這些概念都是爲了解決生產環境的實際問題。前端
那麼,咱們實際生產環境中都有什麼問題呢?mysql
1. 當數據庫性能遇到問題時,是否可以橫向擴展,經過添加服務器的方式達到更高的吞吐量,從而充分利用現有的硬件實現更好的投資回報率。linux
這兩個概念並非對立關係, 多臺服務器作集羣(不是主從),自己就有冗餘和負載均衡的效果。nginx
狹義上來講,集羣就是把多臺服務器虛擬成一臺服務器,而冗餘的每臺服務器都是獨立的。web
**集羣的側重點在於協同,多臺服務器協同分擔工做,提高效率。
冗餘的側重點在於防止單點故障,一主多備的架構,也就是「主從複製」。因此數據冗餘=高可用集羣=主從。**算法
主從必定程度上起到了負載均衡的做用。但其實主要目的仍是爲了保證數據冗餘和高可用性。
主從只提供一種成本較低的數據備份方案加上不完美的災備和負載均衡。因爲複製存在時間差,不能同步讀,因此只是不完善的負載均衡和有損災備。sql主從顯然達不到集羣的嚴格度,不管是HA 還AA(多活並行集羣),主從都達不到數據一致性的集羣要求,
主從很難嚴格界定是那種模式,能夠歸類爲:有必定冗餘度的非一致性異步副本(不可靠不一樣步),對於沒有嚴格一致性要求的系統,能夠定製爲分擔負載、查詢過期報表的一種措施。數據庫
仍是上面提到的,所謂集羣,簡單來講就是「多臺服務器協同分擔工做」,重點在「協同」上。因此,任務調度是集羣的核心技術,由於集羣是一組相互獨立的、經過高速網絡互聯的計算機,它們構成了一個組,並以單一系統的模式加以管理。apache
集羣有負載均衡集羣,高可用集羣,高性能集羣,分別側重於抗併發,避免單點故障和大數據下的並行處理。三者也有不一樣的實現方法,但同時這三者又是相輔相成的。
Load Balance負載均衡着重在於提供服務併發處理能力的集羣。是爲了消除性能瓶頸,固然也能夠起到備份工做。把負載壓力根據某種算法合理分配到集羣中的每一臺計算機上,以減輕主服務器的壓力,下降對主服務器的硬件和軟件要求。
實現原理:一個負載均衡器加上一個集羣實現的。負載均衡集羣中有一個分發器或者叫調度器,咱們將其稱之爲Director,它處在多臺服務器的上面,分發器根據內部鎖定義的規則或調度方式從下面的服務器羣中選擇一個以此來響應客戶端發送的請求。分攤到多個操做單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工做任務。
High Available高可用以提高服務在線的能力的集羣。
高可用集羣主要是爲了不單點故障存在的,備機平時不參與工做。高可用集羣是服務的可用性比較高,當咱們某臺服務器死機後不會形成咱們的服務不可用。其工做模式則是將一個具備故障的服務轉交給一個正常工做的服務器,從而達到服務不會中斷。通常來講咱們集羣中工做在前端(分發器)的服務器都會對咱們的後端服務器作一個健康檢查,若是發現咱們服務器當機就不會對其在作轉發。
衡量標準:可用性=在線時間/(在線時間+故障處理時間)
高可用性羣集,是保證業務連續性的有效解決方案,通常有兩個或兩個以上的節點,且分爲活動節點及備用節點。一般把正在執行業務的稱爲活動節點,而做爲活動節點的一個備份的則稱爲備用節點。當活動節點出現問題,致使正在運行的業務(任務)不能正常運行時,備用節點此時就會偵測到,並當即接續活動節點來執行業務。從而實現業務的不中斷或短暫中斷。
實現原理:利用集羣管理軟件,當主機故障時,備機可以自動接管主機的工做,並及時切換過去,以實現對用戶的不間斷服務。
High Performance高性能着重用於處理一個海量任務。高性能的集羣是當某一個任務量很是大的時候,咱們作一個集羣共同來完成這一個任務,因此又被稱爲「並行處理集羣」。充分利用集羣中的每一臺計算機的資源,實現複雜運算的並行處理,一般用於科學計算領域,好比基因分 析,化學分析等。
實現原理:並行處理集羣是將大任務劃分爲小任務,分別進行處理的機制。通常這樣的集羣用來科學研究與大數據運算等方面的工做。如今比較火的Hadoop就是使用的並行處理集羣。
HA和LB確實不是一個概念。解決方案的側重點徹底不一樣。HA偏重於備用資源,切機時會有業務的斷開的,保證了數據的安全,但形成資源的浪費。LB側重於資源的充分應用,沒有主備的概念,只有資源的最大限度的加權平均應用,基本不會業務的中斷。
從目的上來講:HA的目的是不中斷服務,LB的目的是爲了提升接入能力,雖然常常放一塊兒用,但確實是兩個不一樣的領域。從功能上來講:HA在一條路不通的時候提供另外一條路可走;LB是春運時的多個窗口。通俗來講HA其實就是春運一共有八個窗口售票,可是你們就都集中到一號窗口,一號窗口累趴下了後,你們一塊兒去二號,二號不行去三號,這樣就形成了閒置資源的一種浪費,可是LB就至關於八個窗口同時開放,均衡負載,不會使一個窗口(服務器)的壓力過大。LB一般採用在負載比較重的網絡服務中。一些比較大型的網站和郵件服務,併發量比較大的狀況。
HA和LB是兩個概念的問題,通常來講沒有誰優誰劣的標準,只有在特定的環境下,誰更適合的問題。 表面看LB通常都包含了高可用性,比HA功能更強,性能更好,但這只是概念上的「先進」,實際中不少場合HA是優選。 至於什麼是「好用」,仍是那句話,很差說,要看具體環境、應用和價格,沒有絕對的好。
向上拓展:升級單臺服務器的硬件。
缺點是在必定的範圍以內它的性能是上升的趨勢,可是超出範圍以後就是降低的趨勢。由於隨着它的cpu的個數增長咱們須要給咱們的cpu仲裁,並且隨着cpu個數的增長資源競爭性越大。向外拓展:增長新的服務器。 優勢是增減服務器很方便,並且沒有向上擴展隨着增長性能降低。
Docker的Swarm, Fleet, 谷歌的Kubernetes, apache的Mesos
四大集羣管理工具大比拼
所謂負載均衡,簡單點來講就是「把大訪問量分發給不一樣的服務器」,也就是分流請求。
LVS集羣中實現的三種IP負載均衡技術
幾種負載均衡技術的實現 - CSDN博客
web 負載均衡 - CSDN博客
六大Web負載均衡原理與實現 - CSDN博客
http重定向協議實現負載均衡(HTTP重定向就是應用層的請求轉發。用戶的請求其實已經到了HTTP重定向負載均衡服務器,服務器根據算法要求用戶重定向,用戶收到重定向請求後,再次請求真正的集羣)
優勢:簡單。
缺點:性能較差。
dns域名解析負載均衡(DNS域名解析負載均衡就是在用戶請求DNS服務器,獲取域名對應的IP地址時,DNS服務器直接給出負載均衡後的服務器IP。)
優勢:交給DNS,不用咱們去維護負載均衡服務器。
缺點:當一個應用服務器掛了,不能及時通知DNS,並且DNS負載均衡的控制權在域名服務商那裏,網站沒法作更多的改善和更強大的管理。
反向代理負載均衡(在用戶的請求到達反向代理服務器時(已經到達網站機房),由反向代理服務器根據算法轉發到具體的服務器。經常使用的apache,nginx均可以充當反向代理服務器。)
優勢:部署簡單。
缺點:代理服務器可能成爲性能的瓶頸,特別是一次上傳大文件。
IP負載均衡(LVS-NAT,在請求到達負載均衡器後,負載均衡器經過修改請求的目的IP地址,從而實現請求的轉發,作到負載均衡。)
優勢:性能更好。
缺點:負載均衡器的寬帶成爲瓶頸。直接路由負載均衡(LVS-DR,數據鏈路層負載均衡(在請求到達負載均衡器後,負載均衡器經過修改請求的mac地址,從而作到負載均衡,與IP負載均衡不同的是,當請求訪問完服務器以後,直接返回客戶。而無需再通過負載均衡器。 ))
IP隧道負載均衡(LVS-TUN, )
Linux服務器集羣系統(三)--LVS集羣中的IP負載均衡技術
集羣之LVS(負載均衡)詳解 - 一我的的天空@ - 博客園
LVS+Keepalived高可用負載均衡集羣架構實驗_服務器應用_Linux公社-Linux系統門戶網站
作了反向代理才能實現負載均衡。負載均衡是作反向代理的目的之一。
反向代理和負載均衡有何區別? - 知乎
5種
基於Nginx的軟件負載均衡實現解讀 - 文章 - 伯樂在線
默認的輪詢
指定權重
IP綁定IP_hash(每一個請求按訪問IP的hash結果分配,這樣每一個訪客固定訪問一個後端服務器,能夠解決session的問題)
第三方的fair和url_hash兩種方法
主從是一種用於數據容錯和災備的高可用解決方案,而不是一種處理高併發壓力的解決方案(負載均衡是用來抗併發的)。這是一個客觀做用和目的的問題。
主從複製是實現讀寫分離的技術之一,也是實現讀寫分離的前提條件。
作讀寫分離時最重要的就是確保讀庫和寫庫的數據統一,而主從複製是實現數據統一最簡單的方法(並不可以保證強數據一致性)。
讀寫分離,顧名思義,就是一個表只負責向前臺頁面展現數據,然後臺管理人員對錶的增刪改查在另外一個表中,把兩個表分開,就是讀寫分離。
主從複製則是一個表數據增刪改以後會即時更新到另外一個表中,保證兩個表的數據一致。
MySQL 主從複製 - 學習心得 - SegmentFault
高性能Mysql主從架構的複製原理及配置詳解 - CSDN博客
MySQL主從複製,雙機熱備實戰 - CSDN博客
深刻解析Mysql 主從同步延遲原理及解決方案
MySQL主從數據庫同步延遲問題解決
雙機熱備,雙機互備,雙機雙工
雙機熱備(主從複製):主機+備機,
雙機互備:主機(備機)+備機(主機),互爲主備
雙機雙工:主機+主機,兩臺機器同時運行。
何爲分佈式計算 - CSDN博客
分佈式計算泛型 - CSDN博客
廣義上的分佈式是指===》將不一樣的服務分佈在不一樣的服務器上,
而集羣指的是===》將幾臺服務器集中在一塊兒,實現同一業務。
分佈式中的每個節點,均可以作集羣。
而集羣並不必定是分佈式的。
舉例:就好比新浪網,訪問的人多了,他能夠作一個羣集,前面放一個響應服務器,後面幾臺服務器完成同一業務,若是有業務訪問的時候,響應服務器看哪臺服務器的負載不是很重,就將給哪一臺去完成。而分佈式,從窄意上理解,也跟集羣差很少,可是它的組織比較鬆散,不像集羣,有一個組織性,一臺服務器垮了,其它的服務器能夠頂上來。分佈式的每個節點,都完成不一樣的業務,一個節點垮了,哪這個業務就不可訪問了。