首頁>科技>

微服務架構是一種面向服務的架構體系,其中應用程序按功能分解為小型的、松耦合的各種服務。其重點在於,單個服務被劃分的足夠小,相互間耦合度很低,並圍繞業務功能進行分解。

微服務架構經常與單體架構相比較:單體架構一份代碼庫與數據庫和數據結構共享。微服務架構的每一個服務應用的開發、測試、部署、運行都是完全獨立,通過API進行相互同信。應用程序的代碼庫是小型的。微服務的架構示意圖:

微服務架構的優勢如下:

正確實施的微服務架構有助於提升大型應用的發佈頻率,使得企業能夠更快地為客戶提供更可靠的服務。

1.敏捷性

對大型的單體應用而言,快速、可靠地部署是一件具有挑戰性的事情。一個模塊中的改動可能會阻礙你部署另一個功能模塊的小改動。隨著應用的成長,測試的工作量也會隨之增加,這就會導致可能需要相當長的時間才能使得新改動的價值得以體現。一個功能改動會需要整個應用的重新部署,而當出現問題時需要回滾整個應用。通過把一個應用拆分成多個小服務,那麼改動所需的驗證時間會被縮短,發佈速度可以得到提高,同時也會更可靠。

2.持續創新

為了保持領先性,如今的企業需要保持高速的發展,這就要求企業組織必須具備敏捷性以及快速響應市場的能力。企業在為客戶提供新產品或新服務時,再也無法以年或者月為週期。他們常常必須按天來上線新功能。微服務架構可以幫助企業更容易和可靠地交付新功能和服務。小型的獨立團隊甚至可以在業務最繁忙的時候仍舊發佈新的功能,同時進行 A/B 測試,以便提升轉化率或改善用戶體驗。

3.漸進式設計

對於單體應用而言,想要引入新的技術或方法可能是非常困難的。因為這通常需要重寫整個應用程序,或者需要花費額外的精力確保新引入的依賴項與以前的程序可以同時運行。松耦合和高凝聚是系統設計很重要的兩個方面,它們可以保障應用可以通過新技術不斷地進行演進。通過把應用按功能拆分成小的、松耦合的服務,可以更輕鬆地更改單個服務而避免對整個應用程序的影響。根據業務需求,可以在不同的服務中使用不同的編程語言、框架和庫。

4.小而專的團隊

構建一個大規模的研發團隊,還要讓他們保持足夠的專注和高效率是非常有挑戰的事情。如果一個人構建的東西和其他人構建的內容交織在一起,那麼你想讓他負責其構建的這部分內容的設計、運行和維護也是一項挑戰。通過把應用拆分成更小的服務,小的敏捷開發團隊可以聚焦在更小的功能點上,並且快速地行動起來。團隊成員可以更輕鬆地維護這個服務並對他們構建的服務負責。

5.故障隔離

在單體應用中,一個庫或者模塊的故障可能會導致整個應用的故障。一個模塊的內存洩露不僅會影響整個應用的穩定性和性能,同時也很難去定位和隔離。通過把應用拆分成小的服務,開發團隊就可以把故障限定在這個服務中,而避免對其他服務的影響。

6.更好的擴容和資源利用能力

應用通常可以通過縱向或者橫向擴容。縱向擴容是指增加機器的資源或者更換一種更好的機器來實現擴容。而橫向擴容是指部署更多的實例,然後通過路由的配置來使用戶可以訪問這些實例,從而達到擴容的目的。一個應用的不同功能有時候會對資源有不同的需求,例如,內存、CPU 和磁盤等。應用的功能常常會有不同的擴展需求,某些功能可能可以通過增加小規格的實例數量實現橫向擴容,而另一些功能可能需要大量的內存,本身也很難使用橫向擴容。通過把這些功能拆分成獨立的服務,開發人員就可以把服務放在最合適的環境中運行,以滿足每個服務的擴容和資源使用的需求。

7.改善可觀察性

通過把應用拆分獨立的服務,團隊可以使用工具深入瞭解各個功能的運行狀況以及和其他服務的交互情況。系統指標(如進程的 CPU 利用率和內存使用量)也更容易和功能關聯在一起,因為服務是在一個單獨容器或者說是進程中運行的。

6
最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 貓咪窩在嬰兒車置物籃,小主人作勢塞到籃中宣示主權!