設計微服務最佳實踐 1,為每個微服務分別存儲數據 2,將代碼保持在類似的成熟度級別 3,為每個微服務單獨構建 4,部署到容器 5,將服務設計為無狀態服務 ...
你是否曾想過,什麼是微服務?以及大規模的互聯網行業,例如社交,電商,物流,金融等領域,如何使用微服務構建互聯網應用以滿足用戶需求。
要瞭解微服務是什麼,你必須瞭解如何將單體應用程式,拆解為獨立打包和部署的微型應用程式。本文章將幫助你清晰化的理解,開發者如何根據需求使用微服務來構建他們的應用程式。
下麵,從以下幾個維度進行闡述
為何選擇微服務?
什麼是微服務?
微服務架構的功能
微服務架構的優點
設計微服務的最佳實踐
1,為何選擇微服務?
現在,在我介紹微服務之前,讓我們看看在微服務之前流行的架構,即單體架構。
通俗地說,您可以說它類似於一個大容器,在這個容器中,應用程式的所有軟體組件被緊密地打包並部署在一起。
羅列一下單片架構的挑戰:
不靈活 - 單片應用程式無法使用不同的技術構建
不可靠 - 即使系統的某個功能不起作用,整個系統也不起作用
不可擴展 - 由於每次需要更新應用程式時都無法輕鬆擴展應用程式,因此必須重建整個系統
妨礙持續開發 - 無法同時構建和部署應用程式的多個功能
緩慢的開發 - 單體應用程式的開發需要花費大量的時間來構建,因為每個功能都必須一個接一個地構建
不適合複雜的應用程式 - 複雜應用程式的功能具有緊密耦合的依賴關係
上述挑戰是導致微服務發展的主要原因。
2,什麼是微服務?
微服務,又稱微服務架構,是一種架構風格,它將應用程式構建為以業務領域為模型的小型自治服務集合。
在微服務架構中,每個服務都是獨立的,並實現單一業務功能。
傳統架構與微服務架構之間的差異
以電子商務網站為例,瞭解它們之間的差異。
我們在上圖中觀察到的主要區別是,所有功能最初都在共用單個資料庫的單個實例下。 但是,通過微服務,每個功能都被分配了不同的微服務,處理自己的數據,並執行不同的功能。
現在,讓我們通過查看其架構來瞭解有關微服務的更多信息。請參考下圖:
微服務架構
1,來自不同設備的不同客戶端嘗試使用不同的服務,如搜索,構建,配置和其他管理功能
2,所有服務都根據其域和功能分開,併進一步切分成各個微服務
3,這些微服務有自己的負載均衡器和執行環境來執行它們的功能,同時在自己的資料庫中捕獲數據
4,所有微服務都通過無狀態伺服器(REST或消息隊列)相互通信
5,微服務在服務發現中心的幫助下獲取其通信路徑,並執行自動化,監控等操作功能
6,然後,微服務執行的所有功能都通過API網關傳達給客戶端
7,所有內部點都從API網關連接。因此,任何連接到API網關的人都會自動連接到整個系統
現在,讓我們通過查看其功能來瞭解有關微服務的更多信息。
3,微服務功能
解耦 - 系統內的服務很大程度上是分離的。因此,整個應用程式可以輕鬆構建,更改和擴展
組件化 - 微服務被視為可以輕鬆更換和升級的獨立組件
業務能力 - 微服務非常簡單,專註於單一功能
自治 - 開發人員和團隊可以彼此獨立工作,從而提高速度
持續交付 - 通過軟體創建,測試和審批的系統自動化,允許頻繁發佈軟體
職責 - 微服務不關註作為項目的應用程式。相反,他們將應用程式視為他們負責的產品
分散治理 - 重點是使用正確的工具來做正確的工作。這意味著沒有標準化模式或任何技術模式。開發人員可以自由選擇最有用的工具來解決他們的問題
敏捷 - 微服務支持敏捷開發。任何新功能都可以快速開發並再次丟棄。
4,微服務的優點
獨立開發 - 所有微服務都可以根據各自的功能輕鬆開發
獨立部署 - 基於其服務,可以在任何應用程式中單獨部署它們
故障隔離 - 即使應用程式的一項服務不起作用,系統仍可繼續運行
混合技術堆棧 - 可以使用不同的語言和技術來構建同一應用程式的不同服務
粒度縮放 - 單個組件可根據需要進行部署節點縮放,無需將所有組件部署縮放在一起
5,設計微服務的最佳實踐
在當今世界,複雜性已經蔓延到互聯網的每個產品當中。微服務架構有望保持團隊規模和功能更好。
現在,讓我們看一個案列來更好地理解微服務。
案例:購物網站
當您打開購物網站時,您看到的只是一個購買頁面。但是,在幕後,購物網站具有接受付款的服務,用於客戶咨詢的服務等
假設此網站的開發人員已在單一框架中創建它。請參閱下圖:
因此,所有功能都放在一個代碼庫中,並且位於單個底層資料庫下。
現在,讓我們假設市場上出現了一個新的品牌,開發商希望將即將到來的品牌所有細節都放在這個網站中,原有的資料庫結構和UI展示已經無法滿足。
然後,他們不僅需要為新標簽重做服務,而且還必須重新構建整個系統並相應地進行部署。
為避免此類挑戰,購物網站的開發人員決定將其應用程式從單片架構轉移到微服務。請參閱下圖瞭解購物網站的微服務架構。
這意味著開發人員不會創建Web微服務,邏輯微服務或資料庫微服務。相反,他們為搜索,推薦,客戶服務等創建單獨的微服務。
這種類型的應用程式架構不僅可以幫助開發人員剋服以前架構所面臨的所有挑戰,還可以幫助輕鬆構建,部署和擴展購物車應用程式。
通過上述案列,我們可以總結出來,設計微服務的最佳實踐:
1,為每個微服務分別存儲數據
2,將代碼保持在類似的成熟度級別
3,為每個微服務單獨構建
4,部署到容器
5,將服務設計為無狀態服務
作者:帝都羊 出處: http://3xmq.cnblogs.com/ 本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。如果覺得還有幫助的話,可以點一下右下角的【推薦】。