1. 程式人生 > >關於叢集,分散式,微服務的理解

關於叢集,分散式,微服務的理解

   網上關於這幾個詞的解釋,各種五花八門的都有。有得解釋得還不錯,有些人就瞎扯了,容易給初學者誤導,所以我打算寫一遍關於自己的理解,希望能給人有所幫助以及作為自己老年痴呆後的複習材料。

傳統小專案因為業務簡單,所以通常就是將所有的業務都寫在一個系統裡,佈置在一個伺服器上,這種缺點就是當訪問量大的時候,一個伺服器就撐不住了。這時候就引入了“叢集”的概念。所謂叢集,就是將專案複製為多份,佈置在多個伺服器上,理論上可效率以為其提高N(N指伺服器的數量)倍。但是這種方式的工作方式又需要通常將請求均衡給各個伺服器(你想啊,為了提高效率,肯定要將請求均衡給各個伺服器,雨露均沾嘛)。所以在這之前,需要一個角色能控制請求,並且將請求發給相應的伺服器,這個角色有個響亮的名字叫做“負載均衡”(Nginx).例圖如下

但是這種方式也有弊端,就是當到達一定程度的時候,無論你怎麼加伺服器,效率都不會怎麼提高。所以為了解決這個問題,引入分散式概念,分散式。其實就是拆分服務,將一個大的系統劃分為多個業務模組,業務模組分別部署到不同的機器上,各個業務模組之間通過介面進行資料互動。區別分散式的方式是根據不同機器不同業務。

“分散式也是屬於微服務的,他的意思也就是將模組拆分成一個獨立的服務單元通過介面來實現資料的互動。它的設計是為了不因為某個模組的升級和BUG影響現有的系統業務。微服務與分散式的細微差別是,微服務的應用不一定是分散在多個伺服器上,他也可以是同一個伺服器