一、什么是集群?
????????集群是指將多臺服務器集中在一起, 每臺服務器都實現相同的業務,做相同的事;但是每臺服務器并不是缺 一不可,存在的主要作用是緩解并發能力和單點故障轉移問題。
集群主要具有以下特征:
(1)、 伸縮性
????????在一些大系統中,預測最終用戶的數量和行為是非常困難的,伸縮性是指系統使用不斷增長的用戶數的能?力;隨著用戶數的增長,我們只需將新的服務器加入集群中即可,對于用戶來看,服務無論從連續性還是性能上都幾乎沒有變化,好像系統在不知不覺中完成了升級。

(2)、 高可用性
????????單一服務器的解決方案并不是一個健壯方式,因為容易出現單點失效,在某些關鍵的應用程序是不能容忍 的,哪怕幾分鐘的死機;高可用性集群的出現就是為了使集群的整體服務盡可能可用,以便考慮軟硬件的易錯性;如果高可用性集群中的主節點發生了故障,那么這段時間內由次節點代替它。

(3)、負載均衡
????????負載均衡集群為企業需求提供了更實用的系統,該系統使負載可以在計算機集群中盡可能平均地分攤處理,該負載可能是需要均衡的應用程序處理負載或網絡流量負載;這樣的系統非常適合運行同一組應用程序的大量用戶;每個節點都可以處理一部分負載,并且可以在節點之間動態分配負載,以實現平衡。

(4)、高性能
????????這種設計用來開發并性編程應用模式,以解決復雜的科學問題,并行計算是相對于串行計算來說的,并行計算能力的目的是用來提高計算速度。

二、什么是分布式?
????????分布式服務是指多臺服務器集中在一起,服務是分散部署在不同的機器上; 每臺機器都實現總體中的不同業務,做不同的事情;一個服務可能負責幾個功能,是一種面向SOA的架構;各分開部署的部分彼此通過各種通訊協議交互信息,并且每臺服務器都缺一不可,如果某臺服務器故障,則部分功能缺失,或者導致整體無法運行;
????????分布式存在的主要作用是大幅度的提高效率,緩解服務器的訪問和存儲壓力。
????????將一個大的系統劃分為多個業務模塊,業務模塊分別部署到不同的機器上,各個業務模塊之間通過接口進行數據交互。

三、什么是微服務?
????????微服務的概念和分布式比較相似,微服務是一種架構風格;簡單來說微服務就是很小的服務,小到一個服務只對應一個單一的功能;每個微服務僅關注于完成一件任務并很好地完成該任務,這個服務可以單獨部署運行;
????????各個服務之間是松耦合的,服務之間可以通過RPC來相互交互;微服務與分布式還有一點區別是: 微服務的應用不一定是分散在單個服務器上,它也可以是同一個服務器。
????????微服務相比分布式服務來說,它的粒度更小,服務之間耦合度更低,敏捷性也更高;但服務微服務化后帶來的挑戰也是顯而易見的,例如服務粒度小、數量大、后期運維難度增大等。

四、集群、分布式、微服務的異同及聯系
(1)分布式是以縮短單個任務的執行時間來提升效率,而集群則是通過提高單位時間內執行的任務數來提升效率;但 分布式需要做好事務管理。
(2)集群模式是不同服務器部署同一套服務,對外提供服務,實現服務的負載均衡;區別集群的方式是根據部署多臺服務器業務是否相同,分布式中的每個節點都可以做集群;而集群并不一定就是分布式的。
????????注意:集群需要做好Session共享,也就是接口要具有無狀態特征,確保在不同服務器切換的過程中不會因為沒有獲取到Session而引起服務終止。
(3)分布式與微服務的架構很相似,只是部署方式不一樣而已;生產環境下的微服務肯定是分布式部署的,分布式部署的應用不一定是微服務架構的。
(4)在設計與開發中我們可以將分布式與集群的分開嗎?
????????分布式的主要功能是將我們的系統模塊化,將系統進行解耦,方便維護和開發;但并不能解決系統的并發性和高可用性問題;而集群恰好彌補了分布式的缺陷,一方面可以解決或者說改善系統的并發問題,另一方可以解決服務器如果出現宕機后,系統仍然可以正常運轉;好的設計應該是分布式和集群相結合,具體實現就是業務拆分成很多子業務,然后對每個子業務進行集群部署。