集群的原理
1、集群的原理
通過一組協同工作的服務器可以實現數據的高并發、更穩定、高可用、時效性及魯棒性的目的服務器集合。
魯棒性:
魯棒是Robust的音譯,是指在服務器在異常和危險情況下的生存能力,所謂“魯棒性”,也是指控制系統在一定(結構,大小)的參數攝動下,維持其它某些性能的特性。根據對性能的不同定義,可分為穩定魯棒性和性能魯棒性。以閉環系統的魯棒性作為目標設計得到的固定控制器稱為魯棒控制器。
1.1、集群的擴展方式
1.1.1、垂直擴展
原理:更換性能(硬件)更強的服務器
優點:
①、垂直擴展時,技術難度低,便于實現;
②、服務器的拓撲結構無需更改;
缺點:
①、服務器垂直擴展有上限瓶頸;以及應用程序運行的并發的上線瓶頸;
②、垂直擴展時,相應的服務會中斷;
適用場景:小型的公司,并發量小且未來的無新業務上線;
1.1.2、水平擴展
原理:增加服務器的數量
優點:
①、服務器的上限變高,可以支持更高的并發量;
②、水平擴展時,服務不會中斷;
③、對于大型公司而言,性價比較高;
缺點:
①、水平擴展時,技術難度相對較高;
②、架構比較復雜,不便于維護;
適用場景:中大型的公司,并發量大且未來的有新業務上線;
水平擴展的服務器架構是以前期的開發為前提的,在開發之前就應該確定了后期集群的搭建方案。
實例:DNS(由于緩存服務器影響服務器的性能平衡,用戶會將第一次訪問的域名和IP地址的對應方式記錄到緩存中,導致失去負載均衡的意義)、amoeba、Nginx、Apache;
1.2、服務器的水平擴展
1.2.1、組成
①、Agent端;
作用:負載均衡,將用戶的請求均衡分配至真實服務器上進行數據解析;
②、Real Server端;
作用:實際的處理用戶的數據請求;
③、Mysql+Share端;
作用:記錄并保存RS產生的數據,并且將多個RS的數據匯總,使每個RS的獲取的都一致。
1.2.2、擴展類型
主要擴展Real Server的數量,但當Real Server的數量達到一定值時,Agent的并發能力已達到極限,再擴展Real Server的數量就沒有意義了,
2、集群的分類
2.1、負載均衡集群(load balancing cluster):LBC
2.1.1、概念
將單臺服務器的壓力,通過增加服務器數量的方法將服務器壓力均攤到更多服務器節點的服務器的搭建方式;
2.1.2、結構
①、前端組件/負載調度器
負載調度器在集群中是比較重要的角色,決定了集群的最高上限, 決定了集群的運行方式;
分類:
軟件/硬件
軟件:amoeba、Nginx、Ha-Proxy(Linux-HA)、LVS
特點:造價低、性能相對較差
Ha-Proxy:是一個使用C語言編寫的自由及開放源代碼軟件,其提供高可用性、負載均衡,以及基于TCP和HTTP的應用程序代理。
LVS(Linux Virtual Server):是一個虛擬的服務器集群系統。
硬件:ROSE、安瑞科技、F5(統治地位)
特點:造價高(硬件集成軟件)、性能好、售后體系完善、操作簡單
②、真實服務器
③、共享存儲
2.1.3、作用
承擔更大的并發壓力。
2.1.4、弊端
當前端組件或負載調度器發生故障時,整個集群癱瘓,即集群不可用。
2.2、高可用集群(High Availability Cluster):HAC
2.2.1、概念
在負載均衡服務器的基礎上,給前端組件/負載調度器添加一個熱備服務器,并在兩個服務器之間連接一個"心跳線",讓熱備服務器實時監控(發送ACK包)主負載調度器的狀態,若主負載調度器已宕機,熱備服務器立即”頂替“,變為主負載調度器。
盡可能的提高服務器的可用性。
心跳線:主要用于主從服務器之間,是連接工作機與備份機的網線;通過軟件的方式監視工作機,備份機一旦發現工作機由于某種原因停止服務,則立即投入使用,以保證網絡的暢通和服務的正常運行
2.2.2、結構
①、前端組件/負載調度器及熱備負載調度器
②、真實服務器
③、共享存儲
2.2.3、作用
在承擔了高并發的基礎上,還實現了該集群的高可用性,在主負載調度器宕機時能保證該集群能夠繼續使用。
2.2.4、弊端
①、負載調度器的利用率為50%;致使該集群的性價比相對不高。
兩個負載調度器均有不同的業務,也互為熱備,當另一個負載調度器宕機時,另外一個將其業務承接過來,(工作環境中不建議使用,數據訪問量大會導致兩臺負載調度器都宕機)
耦合:是指兩個或多個事物、軟件或者集合之間存在緊密聯系的程度;
強耦合:兩個或多個集合之間有直接的關系;
弱耦合:兩個或多個集合之間有間接的關系;
解耦:是指將兩個集合的耦合程度降低或者"解開",使其不存在耦合或降低耦合程度;
在軟件工程中,對象之間的耦合度就是對象之間的依賴性。對象之間的耦合越高,維護成本越高,因此對象的設計應使類和構件之間的耦合最小,把關聯依賴降到最低,而不會產生牽一發而動全身的現象。
微服務(Microservice):Microservice架構模式就是將整個Web應用組織為一系列小的Web服務。這些小的Web服務可以獨立地編譯及部署,并通過各自暴露的API接口相互通訊。它們彼此相互協作,作為一個整體為用戶提供功能,卻可以獨立地進行擴展。
②、腦分裂:熱備負載調度器發送ACK包后,未收到回信(主負載調度器暫時沒有空閑的I/O來處理其請求,或心跳線故障);導致該集群中存在兩個主負載調度器,
腦分裂的后果:
a、當前服務不可用;
一個集群中不能出現兩個服務器上配置同一個IP,相互沖突,導致服務無法使用;
b、造成數據丟失;
兩個服務器之間IP來回跳轉,用戶剛在A上寫入數據,尚未保存到后端的數據庫中,就跳到B服務器上,導致數據丟失。
腦分裂的解決方案:
a、冗余心跳線;
b、增加心跳檢測(多次間歇性探測);
c、電源交換機(通過網絡命令閉合或關閉對應的接口電源)
實現方案:
軟件:heartbeat(Linux-HA)、Keepalived
硬件:ROSE、安瑞科技、F5
2.2.5、高可用的標準
99%:及格線 一年宕機 87.6H
99.9%:一般公司的目標 一年宕機 8.76H
99.99%: 一年宕機 52.56min
99.999%:目前行業達到的最高標準; 一年宕機 5.256min
集群的可用性會與其構建成本成指數性相關,具體的搭建可以根據公司現狀進行評估搭建。
2.3、高性能運算集群(High-PerformanceComputingCluster):HPCC
2.3.1、產生背景
對于特殊行業一些數據的預測值有時效性要求,例如對于天氣情況的預測、衛星發射的軌道預測,導彈軌跡的預測、密碼的破解等。
使用范圍:軍事、氣象、動畫渲染等方面,專一性、針對性比較強,
2.3.2、概念
提供單臺計算機無法提供的計算能力的服務器集群
2.3.3、工作方式
由于數據龐大,由負載調度器將一個數據拆分為多個數據片段,再將各個片段分發給真實服務器處理,然后交由一個服務器進行校驗,最后再將數據片段組合到一起。
2.3.4、HPCC和LBC的區別
LBC:有負載調度器將數據按照算法分發給其中一臺真實服務器
HPCC:有負載調度器將數據分片后分發給所有的真實服務器,
例:一個任務A,理論上可以拆分為10個a,現有11臺性能相同的服務器;
搭建LBC: 處理了 1 個A, 2 節點參與運算,處理了 0 a;無數據包的拆分能力
搭建HPCC: 處理了 1 個A, 11 節點參與運算,處理了 10 a;
總結
- 上一篇: 数学建模论文的技巧与操作
- 下一篇: java 生成 pdf html转pd