設計爲服務的最佳實踐(轉) 設計微服務的最佳實踐

設計微服務的最佳實踐

 

你是否曾想過,什麼是微服務?以及大規模的互聯網行業,例如社交,電商,物流,金融等領域,如何使用微服務構建互聯網應用以知足用戶需求。html

要了解微服務是什麼,你必須瞭解如何將單體應用程序,拆解爲獨立打包和部署的微型應用程序。本文章將幫助你清晰化的理解,開發者如何根據需求使用微服務來構建他們的應用程序。數據庫

下面,從如下幾個維度進行闡述 服務器

爲什麼選擇微服務? 架構

什麼是微服務? app

微服務架構的功能負載均衡

微服務架構的優勢 框架

設計微服務的最佳實踐 微服務

1,爲什麼選擇微服務? 

如今,在我介紹微服務以前,讓咱們看看在微服務以前流行的架構,即單體架構。工具

通俗地說,您能夠說它相似於一個大容器,在這個容器中,應用程序的全部軟件組件被緊密地打包並部署在一塊兒。組件化

羅列一下單片架構的挑戰:

 

不靈活 - 單片應用程序沒法使用不一樣的技術構建

不可靠 - 即便系統的某個功能不起做用,整個系統也不起做用

不可擴展 - 因爲每次須要更新應用程序時都沒法輕鬆擴展應用程序,所以必須重建整個系統

妨礙持續開發 - 沒法同時構建和部署應用程序的多個功能

緩慢的開發 - 單體應用程序的開發須要花費大量的時間來構建,由於每一個功能都必須一個接一個地構建

不適合複雜的應用程序 - 複雜應用程序的功能具備緊密耦合的依賴關係

上述挑戰是致使微服務發展的主要緣由。

2,什麼是微服務? 

微服務,又稱微服務架構,是一種架構風格,它將應用程序構建爲以業務領域爲模型的小型自治服務集合。

在微服務架構中,每一個服務都是獨立的,並實現單一業務功能。

傳統架構與微服務架構之間的差別

以電子商務網站爲例,瞭解它們之間的差別。

咱們在上圖中觀察到的主要區別是,全部功能最初都在共享單個數據庫的單個實例下。 可是,經過微服務,每一個功能都被分配了不一樣的微服務,處理本身的數據,並執行不一樣的功能。

 

如今,讓咱們經過查看其架構來了解有關微服務的更多信息。請參考下圖:

 

微服務架構

1,來自不一樣設備的不一樣客戶端嘗試使用不一樣的服務,如搜索,構建,配置和其餘管理功能

2,全部服務都根據其域和功能分開,並進一步切分紅各個微服務

3,這些微服務有本身的負載均衡器和執行環境來執行它們的功能,同時在本身的數據庫中捕獲數據

4,全部微服務都經過無狀態服務器(REST或消息隊列)相互通訊

5,微服務在服務發現中心的幫助下獲取其通訊路徑,並執行自動化,監控等操做功能

6,而後,微服務執行的全部功能都經過API網關傳達給客戶端

7,全部內部點都從API網關鏈接。所以,任何鏈接到API網關的人都會自動鏈接到整個系統

如今,讓咱們經過查看其功能來了解有關微服務的更多信息。

3,微服務功能 

解耦 - 系統內的服務很大程度上是分離的。所以,整個應用程序能夠輕鬆構建,更改和擴展

組件化 - 微服務被視爲能夠輕鬆更換和升級的獨立組件

業務能力 - 微服務很是簡單,專一於單一功能

自治 - 開發人員和團隊能夠彼此獨立工做,從而提升速度

持續交付 - 經過軟件建立,測試和審批的系統自動化,容許頻繁發佈軟件

職責 - 微服務不關注做爲項目的應用程序。相反,他們將應用程序視爲他們負責的產品

分散治理 - 重點是使用正確的工具來作正確的工做。這意味着沒有標準化模式或任何技術模式。開發人員能夠自由選擇最有用的工具來解決他們的問題

敏捷 - 微服務支持敏捷開發。任何新功能均可以快速開發並再次丟棄。 

4,微服務的優勢 

獨立開發 - 全部微服務均可以根據各自的功能輕鬆開發

獨立部署 - 基於其服務,能夠在任何應用程序中單獨部署它們

故障隔離 - 即便應用程序的一項服務不起做用,系統仍可繼續運行

混合技術堆棧 - 可使用不一樣的語言和技術來構建同一應用程序的不一樣服務

粒度縮放 - 單個組件可根據須要進行部署節點縮放,無需將全部組件部署縮放在一塊兒 

5,設計微服務的最佳實踐

在當今世界,複雜性已經蔓延到互聯網的每一個產品當中。微服務架構有望保持團隊規模和功能更好。

 

如今,讓咱們看一個案列來更好地理解微服務。

 

案例:購物網站

當您打開購物網站時,您看到的只是一個購買頁面。可是,在幕後,購物網站具備接受付款的服務,用於客戶諮詢的服務等

假設此網站的開發人員已在單一框架中建立它。請參閱下圖:

所以,全部功能都放在一個代碼庫中,而且位於單個底層數據庫下。

如今,讓咱們假設市場上出現了一個新的品牌,開發商但願將即將到來的品牌全部細節都放在這個網站中,原有的數據庫結構和UI展現已經沒法知足。

而後,他們不只須要爲新標籤重作服務,並且還必須從新構建整個系統並相應地進行部署。

爲避免此類挑戰,購物網站的開發人員決定將其應用程序從單片架構轉移到微服務。請參閱下圖瞭解購物網站的微服務架構。

這意味着開發人員不會建立Web微服務,邏輯微服務或數據庫微服務。相反,他們爲搜索,推薦,客戶服務等建立單獨的微服務。

 

這種類型的應用程序架構不只能夠幫助開發人員克服之前架構所面臨的全部挑戰,還能夠幫助輕鬆構建,部署和擴展購物車應用程序。

經過上述案列,咱們能夠總結出來,設計微服務的最佳實踐:

1,爲每一個微服務分別存儲數據

2,將代碼保持在相似的成熟度級別

3,爲每一個微服務單獨構建

4,部署到容器

5,將服務設計爲無狀態服務

相關文章
相關標籤/搜索