叢集和分布式
分布式
各個層次上可能都有分布式,比如資料庫層,整個應用的資料可能一部分分布在Oracle資料庫上,另部分分布在Mysql 面等等都有可能。
在應用層級上的分布式:
應用的各個商務邏輯可能分布在不同的應用伺服器裡面。比如應用有許可權管理,公文管理,機構管理等等,每一個部分可能分布在不同的應用伺服器上,不同的應用伺服器一般都分布在不同的機器上面,每個機器運行一個應用伺服器。當然也有不同的應用伺服器分布在同一機器上,這種情況比較少見。
分布式的關鍵在於什麼地方呢?
應用的不同組件都是組成系統的一部分,比如運行公文管理的時候必須跟許可權管理溝通,把某些資料傳過去,然後許可權管理返回結果。許可權的計算相當於分布式了,充分利用機器效能。我在這台機器的應用裡面調用另一台機器應用裡的某個方法必須得發出socket連結,這種調用必須得容器來處理,底層資料轉送的準備,建立串連等等都由容器來做。
如果我們自己來做的話會怎麼處理呢?
從這台機器上調用另外一台機器上應用的某個方法?
自己做的話可以用socket。
目前的分布式技術有:
1、RMI 遠程方法調用(Remote Method Invocation)
2、CORBA(Common Object Request Broker Architecture公用對象請求代理體繫結構)異構平台的分布式
3、Web Service(異構平台的分布式)
註:異構平台互相調用 還有Java Native Interface (JNI)它允許Java代碼和其他語言寫的代碼進行互動。
4、JMS
5、EJB(能實現分布式的交易管理,java分布式最佳解決方案)
叢集(cluster):
在每一個地方(可能是分布式構成的一個)有完備的功能,多個完備功能的系統組成叢集。
是兩機或多機內容、工作過程等完全一樣。如果一台死機,另一台可以起作用。
叢集分為同構與異構兩種,它們的區別在於:組成叢集系統的電腦之間的體繫結構是否相同。叢集電腦按功能和結構可以分成以下幾類:
高可用性設定組群 High-availability (HA) clusters
負載平衡叢集 Load balancing clusters
高效能運算叢集 High-performance (HPC) clusters
格線運算 Grid computing
高可用性設定組群
一般是指當叢集中有某個節點失效的情況下,其上的任務會自動轉移到其他正常的節點上。還指可以將叢集中的某節點進行離線維護再上線,該過程並不影響整個叢集的運行。
負載平衡叢集
負載平衡叢集運行時一般通過一個或者多個前端負載平衡器將工作負載分發到後端的一組伺服器上,從而達到整個系統的高效能和高可用性。這樣的電腦叢集有時也被稱為伺服器群(Server Farm)。 一般高可用性設定組群和負載平衡叢集會使用類似的技術,或同時具有高可用性與負載平衡的特點。
Linux虛擬伺服器(LVS)項目在Linux作業系統上提供了最常用的負載平衡軟體。
高效能運算叢集
高效能運算叢集採用將計算任務分配到叢集的不同計算節點而提高計算能力,因而主要應用在科學計算領域。比較流行的HPC採用Linux作業系統和其它一些免費軟體來完成並行運算。這一叢集配置通常被稱為Beowulf叢集。這類叢集通常運行特定的程式以發揮HPC cluster的並行能力。這類程式一般應用特定的運行庫, 比如專為科學計算設計的MPI庫。
HPC叢集特別適合於在計算中各計算節點之間發生大量資料通訊的計算作業,比如一個節點的中間結果或影響到其它節點計算結果的情況。
格線運算
格線運算或網格叢集是一種與叢集計算非常相關的技術。網格與傳統叢集的主要差別是網格是串連一組相關並不信任的電腦,它的運作更像一個計算公用設施而不是一個獨立的電腦。還有,網格通常比叢集支援更多不同類型的電腦集合。
格線運算是針對有許多獨立作業的工作任務作最佳化,在計算過程中作業間無需共用資料。網格主要服務於管理在獨立執行工作的電腦間的作業分配。資源如儲存可以被所有結點共用,但作業的中間結果不會影響在其他網格結點上作業的進展。