構建微服務-第一章-什麼是微服務_003彈性和可伸縮性
阿新 • • 發佈:2019-01-07
系統彈性
在系統彈性工程中一個很重要的概念是隔板。如果系統的一個模組失敗了,但是這個失敗沒有串聯地影響到其他模組,那麼就可以隔離問題,讓其他模組繼續工作。很顯然微服務的邊界就成了系統的隔板。在一個單一服務系統中,如果服務失敗,那麼整個系統停止工作,當然我們可以把它部署到多臺機器上來減少失敗的概率,但是如果使用微服務架構,我們的系統就可以處理整體服務的失敗,並且將整體服務分解。
我們也必須非常小心。為了保證微服務系統能夠正確地利用微服務的彈性,我們需要懂得分散式系統的風險來源,網路可能會斷開,伺服器可能會停機,我們需要懂得如何處理這些風險,還有這些風險對使用者有什麼影響。 系統伸縮性
在一個單一服務的系統裡,我們處理系統伸縮性時要處理系統所有的功能模組。即使只有系統的一小部分有效能問題,我們也需要處理所有的部分。如果服務被切分成小的服務,我們只需要伸縮那些需要處理的服務功能,將其他服務放在功能相對較弱的硬體設施上。如下圖所示:
在系統彈性工程中一個很重要的概念是隔板。如果系統的一個模組失敗了,但是這個失敗沒有串聯地影響到其他模組,那麼就可以隔離問題,讓其他模組繼續工作。很顯然微服務的邊界就成了系統的隔板。在一個單一服務系統中,如果服務失敗,那麼整個系統停止工作,當然我們可以把它部署到多臺機器上來減少失敗的概率,但是如果使用微服務架構,我們的系統就可以處理整體服務的失敗,並且將整體服務分解。
我們也必須非常小心。為了保證微服務系統能夠正確地利用微服務的彈性,我們需要懂得分散式系統的風險來源,網路可能會斷開,伺服器可能會停機,我們需要懂得如何處理這些風險,還有這些風險對使用者有什麼影響。 系統伸縮性
在一個單一服務的系統裡,我們處理系統伸縮性時要處理系統所有的功能模組。即使只有系統的一小部分有效能問題,我們也需要處理所有的部分。如果服務被切分成小的服務,我們只需要伸縮那些需要處理的服務功能,將其他服務放在功能相對較弱的硬體設施上。如下圖所示:
Gilt是一個流行商品線上零售商,因為上面的原因,他們使用了微服務架構。從2007年開始,他們構建了一個單一的Rails系統,到了2009年系統已經不能夠處理需要面對的負載。他們將系統拆分成多個服務,Gilt已經能夠處理高峰期的負載,今天他們又450個微服務,每個服務執行在幾臺不同的機器上。使用類似Amazon服務的按需分配的系統,我們可以按需分配我們服務伸縮需要的資源。這會讓我們更好地控制成本。其他的架構節本上很難做到這樣立竿見影的成本節約。