什么是集群(cluster)

1、集群

?

1.1 什么是集群

?

簡單的說,集群(cluster)就是一組計算機,它們作為一個整體向用戶提供一組網絡資源。這些單個的計算機系統就是集群的節點(node)。一個理想的集群是,用戶從來不會意識到集群系統底層的節點,在他/她們看來,集群是一個系統,而非多個計算機系統。并且集群系統的管理員可以隨意增加和刪改集群系統的節點。

?

1.2 為什么需要集群

?

集群并不是一個全新的概念,其實早在七十年代計算機廠商和研究機構就開始了對集群系統的研究和開發。由于主要用于科學工程計算,所以這些系統并不為大家所熟知。直到Linux集群的出現,集群的概念才得以廣為傳播。

?

對集群的研究起源于集群系統的良好的性能可擴展性(scalability)。提高cpu主頻和總線帶寬是最初提供計算機性能的主要手段。但是這一手段對系統性能的提供是有限的。接著人們通過增加CPU個數和內存容量來提高性能,于是出現了向量機,對稱多處理機(SMP)等。但是當CPU的個數超過某一閾值,象SMP這些多處理機系統的可擴展性就變的極差。主要瓶頸在于CPU訪問內存的帶寬并不能隨著CPU個數的增加而有效增長。與SMP相反,集群系統的性能隨著CPU個數的增加幾乎是線性變化的。圖1顯示了這中情況。

圖1. 幾種計算機系統的可擴展性

集群系統的優點并不僅在于此。下面列舉了集群系統的主要優點:

?

高可擴展性:如上所述。

?

高可用性:集群中的一個節點失效,它的任務可以傳遞給其他節點。可以有效防止單點失效。

?

高性能:負載平衡集群允許系統同時接入更多的用戶。

?

高性價比:可以采用廉價的符合工業標準的硬件構造高性能的系統。

?

1.2.1 集群系統的分類

?

雖然 根據集群系統的不同特征可以有多種分類方法,但是一般我們把集群系統分為兩類:

?

高可用(High Availability)集群,簡稱HA集群。這類集群致力于提供高度可靠的服務。

?

高性能計算(High Perfermance Computing)集群,簡稱hpC集群。這類集群致力于提供單個計算機所不能提供的強大的計算能力。

?

第二頁

?

?

?

2、高可用集群

?

2.1 什么是高可用性

?

計算機系統的可用性(availability)是通過系統的可靠性(reliability)和可維護性(maintainability)來度量的。工程上通常用平均無故障時間(MTTF)來度量系統的可靠性,用平均維修時間(MTTR)來度量系統的可維護性。于是可用性被定義為:

?

MTTF/(MTTF+MTTR)*100%

?

業界根據可用性把計算機系統分為如下幾類:

?

表1. 系統可用性分類

?

可用比例 年停機時間 ?? 可用性分類

99.5????????????3.7天???????????????? 常規系統(Conventional)

?

99.9????????????8.8小時????????????? 可用系統(Available)

?

99.99??????????52.6分鐘???????????高可用系統(Highly Available)

?

99.999???????5.3分鐘??????????????Fault Resilient

?

99.9999?????32秒???????????????????Fault Tolerant

對于關鍵業務,停機通常是災難性的。因為停機帶來的損失也是巨大的。下面的統計數字列舉了不同類型企業應用系統停機所帶來的損失。

?

表 2. 停機給企業帶來的損失

應用系統???????????????????????????????? 每分鐘損失(美元)

?

呼叫中心(Call Center)   27000

?

企業資源計劃(ERP)系統  13000

?

供應鏈管理(SCM)系統   11000

?

電子商務(eCoMMerce)系統 10000

?

客戶服務(Customer Service Center)系統 27000

隨著企業越來越依賴于信息技術,由于系統停機而帶來的損失也越拉越大。

?

2.2 高可用集群

?

高可用集群就是采用集群技術來實現計算機系統的高可用性。高可用集群通常有兩種工作方式:

?

容錯系統:通常是主從服務器方式。從服務器檢測主服務器的狀態,當主服務工作正常時,從服務器并不提供服務。但是一旦主服務器失效,從服務器就開始代替主服務器向客戶提供服務。

?

負載均衡系統:集群中所有的節點都處于活動狀態,它們分攤系統的工作負載。一般Web服務器集群、數據庫集群和應用服務器集群都屬于這種類型。

?

關于高可用集群的討論很多,這里就不進行深入的闡述了。

?

第三頁

?

?

?

3、高性能計算集群

?

3.1 什么是高性能計算集群

?

簡單的說,高性能計算(High-Performance Computing)是計算機科學的一個分支,它致力于開發超級計算機,研究并行算法和開發相關軟件。高性能計算主要研究如下兩類問題:

?

大規模科學問題,象天氣預報、地形分析和生物制藥等;

?

存儲和處理海量數據,象數據挖掘、圖象處理和基因測序;

?

顧名思義,高性能集群就是采用集群技術來研究高性能計算。

?

3.2 高性能計算分類

?

高性能計算的分類方法很多。這里從并行任務間的關系角度來對高性能計算分類。

?

3.2.1 高吞吐計算(High-throughput Computing)

?

有一類高性能計算,可以把它分成若干可以并行的子任務,而且各個子任務彼此間沒有什么關聯。象在家搜尋外星人( SETI@HOME -- Search for Extraterrestrial Intelligence at Home )就是這一類型應用。這一項目是利用Internet上的閑置的計算資源來搜尋外星人。SETI項目的服務器將一組數據和數據模式發給Internet上參加SETI的計算節點,計算節點在給定的數據上用給定的模式進行搜索,然后將搜索的結果發給服務器。服務器負責將從各個計算節點返回的數據匯集成完整的數據。因為這種類型應用的一個共同特征是在海量數據上搜索某些模式,所以把這類計算稱為高吞吐計算。所謂的Internet計算都屬于這一類。按照Flynn的分類,高吞吐計算屬于SIMD(Single Instruction/Multiple Data)的范疇。

?

3.2.2 分布計算(Distributed Computing)

?

另一類計算剛好和高吞吐計算相反,它們雖然可以給分成若干并行的子任務,但是子任務間聯系很緊密,需要大量的數據交換。按照Flynn的分類,分布式的高性能計算屬于MIMD(Multiple Instruction/Multiple Data)的范疇。

?

3.3 Linux高性能集群系統

?

當論及Linux高性能集群時,許多人的第一反映就是Beowulf。起初,Beowulf只是一個著名的科學計算集群系統。以后的很多集群都采用Beowulf類似的架構,所以,實際上,現在Beowulf已經成為一類廣為接受的高性能集群的類型。盡管名稱各異,很多集群系統都是Beowulf集群的衍生物。當然也存在有別于Beowulf的集群系統,COW和Mosix就是另兩類著名的集群系統。

?

3.3.1 Beowulf集群

?

簡單的說,Beowulf是一種能夠將多臺計算機用于并行計算的體系結構。通常Beowulf系統由通過以太網或其他網絡連接的多個計算節點和管理節點構成。管理節點控制整個集群系統,同時為計算節點提供文件服務和對外的網絡連接。它使用的是常見的硬件設備,象普通pc、以太網卡和集線器。它很少使用特別定制的硬件和特殊的設備。Beowulf集群的軟件也是隨處可見的,象Linux、PVM和MPI。

?

本文的以后幾部分將詳細介紹Beowulf集群系統的硬件、網絡、軟件和應用體系結構。

?

3.3.2 Beowulf集群和COW集群

?

象Beowulf一樣,COW(Cluster Of Workstation)也是由最常見的硬件設備和軟件系統搭建而成。通常也是由一個控制節點和多個計算節點構成。COW和Beowulf的主要區別在于:

?

COW中的計算節點主要都是閑置的計算資源,如辦公室中的桌面工作站,它們就是普通的PC,采用普通的局域網進行連接。因為這些計算節點白天會作為工作站使用,所以主要的集群計算發生在晚上和周末等空閑時間。而Beowulf中的計算節點都是專職于并行計算,并且進行了性能優化。它們采用高速網(Myrinet或Giganet)上的消息傳遞(PVM或MPI)進行進程間通信(IPC)。

?

因為COW中的計算節點主要的目的是桌面應用,所以它們都具有顯示器、鍵盤和鼠標等外設。而Beowulf的計算節點通常沒有這些外設,對這些計算節點的訪問通常是在管理節點上通過網絡或串口線實現的。

?

因為連接COW中計算節點的通常是普通的局域網,所以COW上的高性能應用通常是象SETI@HOME 這樣的SIMD的高吞吐計算。而Beowulf無論從硬件、網絡和軟件上都對需要頻繁交換數據的MIMD應用做了特別的優化。

?

3.3.3 Mosix集群

?

實際上把Mosix集群放在高性能集群這一節是相當牽強的,但是和Beowulf等其他集群相比, Mosix集群確實是種非常特別的集群, 它致力于在Linux系統上實現集群系統的單一系統映象SSI(Single System Image)。Mosix集群將網絡上運行Linux的計算機連接成一個集群系統。系統自動均衡節點間的負載。因為Mosix是在Linux系統內核中實現的集群,所以用戶態的應用程序不需要任何修改就可以在Mosix集群上運行。通常用戶很少會注意到Linux和Mosix的差別。對于他來說,Mosix集群就是運行Linux的一臺PC。盡管現在存在著不少的問題,Mosix始終是引人注目的集群系統。

摘錄于:http://hi.baidu.com/movieyouth/blog/item/bbe6d658bad56385800a18b6.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535802.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535802.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535802.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Kafka:集群部署

0、環境準備 安裝jdk,配置環境提前安裝zookeeper 1、解壓安裝 將tar壓縮包上傳tar -zxvf kafka_2.12-2.5.0.tgz 2、配置變量環境 vi /etc/profile #kafka export KAFKA_HOME/usr/local/apps/kafka_2.12-2.5.0 export PATH$PATH:$KAFKA_HOME/binsource /etc/pr…

集群(cluster)amp;高可用性(HA)概念

1.1 什么是集群 簡單的說,集群(cluster)就是一組計算機,它們作為一個整體向用戶提供一組網絡資源。這些單個的計算機系統就是集群的節點(node)。一個理想的集群是,用戶從來不會意識到集群系…

Kafka:常用命令

啟動Kafka:kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties創建一個叫test的話題,有兩個分區,每個分區3個副本:kafka-topics.sh --zookeeper localhost:2181 --create --topic test --replication-factor 3 …

MySQL Cluster 群集安裝環境介紹

MySQL Cluster 群集安裝環境介紹 MySQL 群集支持的操作系統:* Linux (Red Hat, Novell/SUSE) * Sun Solaris * IBM AIX * HP-UX * Mac OS X MySQL 軟件:* MySQL Max 版本 (並不是指 MaxDB)* MySQL NDB Cluster 系統最低需求: OS: Linux ( Turbolinux…

八股文打卡day9——計算機網絡(9)

面試題:HTTP1.0和HTTP1.1的區別? 我的回答: 1.長連接:HTTP1.1引入了長連接的機制,connection:keep-alive。一個TCP連接可以進行多次請求和響應。而HTTP1.0每次請求響應一次都得建立連接、斷開連接。 引入…

使用ogg實現oracle到kafka的增量數據實時同步

Oracle Golden Gate軟件是一種基于日志的結構化數據復制備份軟件,它通過解析源數據庫在線日志或歸檔日志獲得數據的增量變化,再將這些變化應用到目標數據庫,從而實現源數據庫與目標數據庫同步。 0、本篇中源端和目標端的一些配置信息&#xf…

轉載:35歲前成功的12條黃金法則

習慣的力量是驚人的。習慣能載著你走向成功,也能馱著你滑向失敗。如何選擇,完全取決于你自己。 1.習慣的力量:35歲以前養成好習慣 你想成功嗎?那就及早培養有利于成功的好習慣。 習慣的力量是驚人的,35歲…

JDK源碼解析之 Java.lang.Object

Object類是Java中其他所有類的祖先,沒有Object類Java面向對象無從談起。作為其他所有類的基類,Object具有哪些屬性和行為,是Java語言設計背后的思維體現。 Object類位于java.lang包中,java.lang包包含著Java最基礎和核心的類&…

將z-blog改成英文blog所遇到的問題

1.將z-blog中文章日期中的“年,月,日”改成英文 相關模板:b_article-multi.htmlb_article-single.html默認用的時間標簽是<#article/posttime/longdate#> 即 "2007年1月13日" 這樣的形式你可以換成 <#article/posttime/shortdate#>即 "2…

JDK源碼解析之 Java.lang.String

String 類代表字符串。Java 程序中的所有字符串字面值&#xff08;如 “abc” &#xff09;都作為此類的實例實現。 字符串是常量&#xff1b;它們的值在創建之后不能更改。字符串緩沖區支持可變的字符串。因為 String 對象是不可變的&#xff0c;所以可以共享。 一、類定義 p…

看到一個blog的標語,有意思!

"上世紀80年代勇氣&#xff0c;90年代靠關系&#xff0c;現在必須靠知識能力&#xff01;掙錢靠1、興趣廣泛&#xff1b; 2、感覺敏銳&#xff1b; 3、集中力強&#xff1b; 4、個性不脆弱&#xff08;堅韌性&#xff09;&#xff1b; 5、能在瞬間了解因果關系&#xff1b…

JDK源碼解析之 Java.lang.AbstractStringBuilder

這個抽象類是StringBuilder和StringBuffer的直接父類&#xff0c;而且定義了很多方法&#xff0c;因此在學習這兩個類之間建議先學習 AbstractStringBuilder抽象類 該類在源碼中注釋是以JDK1.5開始作為前兩個類的父類存在的&#xff0c;可是直到JDK1.8的API中&#xff0c;關于S…

RHEL下安裝配置基于2臺服務器的MYSQL集群

一、介紹這篇文檔旨在介紹如何在RHEL下安裝配置基于2臺服務器的MySQL集群。并且實現任意一臺服務器出現問題或宕機時MySQL依然能夠繼續運行。 注意&#xff01;雖然這是基于2臺服務器的MySQL集群&#xff0c;但也必須有額外的第三臺服務器作為管理節點&#xff0c;但這臺服務器…

JDK源碼解析之 Java.lang.StringBuffer

StringBuffer類表示一個可變的字符序列。StringBuffer的API與StringBuilder互相兼容&#xff0c;但是StringBuffer是線程安全的。在可能的情況下&#xff0c;建議優先使用StringBuilder&#xff0c;因為在大多數實現中它比StringBuffer更快。 一、類定義 public final class S…

redo和undo

這是在網上看到的對redo和undo的探討&#xff1a; 1. redo 記錄所有做過的事情&#xff0c;用于恢復 undo 記錄事務的前鏡相&#xff0c;用于回滾2. redo&#xff0c;恢復數據庫時&#xff0c;按照重做日志文件來恢復你之前的操作 undo&#xff0c;撤消你做過的操作&#xff0…

JDK源碼解析之 Java.lang.StringBuilder

StringBuilder類表示一個可變的字符序列。StringBuilder的API與StringBuffer互相兼容&#xff0c;但是StringBuilder是非線程安全的&#xff0c;在大多數實現中它比StringBuffer更快。 一、類定義 public final class StringBufferextends AbstractStringBuilderimplements ja…

從映射觀點看索引

信息檢索主要有“檢”與“索&#xff08;辦手續&#xff09;”兩個動作。在圖書館借書時&#xff0c;一般而言&#xff0c; 找書的時間比辦理手續的時間長得多&#xff0c;因而縮短檢查時間是提高效率的關鍵。數據庫中檢 索信息也與此類似。 在沒有索引文件時&#xff0c;DBM…

JDK源碼解析之 Java.lang.Boolean

Boolean 類是將 boolean 基本類型進行包裝。類型為 Boolean 的對象包含一個單一屬性 value&#xff0c;其類型為 boolean。 此外還提供了許多將 boolean 轉換為 String、String 轉換為 boolean&#xff0c;以及其他一些方法。 一、類定義 public final class Boolean implemen…

MYSQL的集群的安裝與配置(mysql-5.1.21)

具體安裝與配置&#xff1a;1&#xff09;準備工作&#xff1a;6臺機器&#xff0c;IP地址分別為192.168.0.&#xff08;231-236&#xff09;MGM節點&#xff1a;192.168.0.231(232)SQL 節點&#xff1a;192.168.0.233-234NDBD 節點&#xff1a;192.168.0.235-236系統都是REDHA…

JDK源碼解析之 Java.lang.Byte

byte&#xff0c;即字節&#xff0c;由8位的二進制組成。在Java中&#xff0c;byte類型的數據是8位帶符號的二進制數,以二進制補碼表示的整數 取值范圍&#xff1a;默認值為0&#xff0c;最小值為-128&#xff08;-27&#xff09;;最大值是127&#xff08;27-1&#xff09; Byt…