對著互聯網的快速發展,能夠微服務架構作為一種能夠在云中部署應用和服務的新技術受到廣泛關注。那么微服務到底有什么特性呢?中培偉業《-微服務架構設計與最佳實踐》培訓專家龔老師在這里進行了介紹。龔老師指出,微服務作為當前的熱門技術,主要有以下幾個方面的特性。
1.單一職責
微服務架構中的每個服務,都是具有業務邏輯的,符合高內聚、低耦合原則以及單一職責原則的單元,不同的服務通過“管道”的方式靈活組合,從而構建出龐大的系統。
2. 輕量級通信
服務之間通過輕量級的通信機制實現互通互聯,而所謂的輕量級,通常指語言無關、平臺無關的交互方式。
對于輕量級通信的格式而言,我們熟悉的 XML 和 JSON,它們是語言無關、平臺無關的;對于通信的協議而言,通常基于 HTTP,能讓服務間的通信變得標準化、無狀態化。目前大家熟悉的 REST(Representational State Transfer)是實現服務間互相協作的輕量級通信機制之一。使用輕量級通信機制,可以讓團隊選擇更適合的語言、工具或者平臺來開發服務本身。
3. 獨立性
每個服務在應用交付過程中,獨立地開發、測試和部署。
在單塊架構中所有功能都在同一個代碼庫,功能的開發不具有獨立性;當不同小組完成多個功能后,需要經過集成和回歸測試,測試過程也不具有獨立性;當測試完成后,應用被構建成一個包,如果某個功能存在 bug,將導致整個部署失敗或者回滾。
在微服務架構中,每個服務都是獨立的業務單元,與其他服務高度解耦,只需要改變當前服務本身,就可以完成獨立的開發、測試和部署。
4. 進程隔離
單塊架構中,整個系統運行在同一個進程中,當應用進行部署時,必須停掉當前正在運行的應用,部署完成后再重啟進程,無法做到獨立部署。
有時候我們會將重復的代碼抽取出來封裝成組件,在單塊架構中,組件通常的形態叫做共享庫(如 jar 包或者 DLL),但是當程序運行時,所有組件最終也會被加載到同一進程中運行。
在微服務架構中,應用程序由多個服務組成,每個服務都是高度自治的獨立業務實體,可以運行在獨立的進程中,不同的服務能非常容易地部署到不同的主機上。
理論上所有服務可以部署在同一個服務器節點,但是并不推薦這么做,因為微服務架構的主旨就是高度自治和高度隔離。