程序員練級攻略(2018):微服務
程序員練級攻略(2018):微服務
朗讀人:柴巍 07′18′′ | 3.35M 2018-07-19 陳皓
微服務是分佈式系統中最近比較流行的架構模型,也是 SOA 架構的一個進化。微服務架構並非銀彈,因此,也不要寄但願於微服務構架可以解決全部的問題。微服務架構主要解決的是如何快速地開發和部署咱們的服務,這對於一個可以適應快速開發和成長的公司是很是必要的。同時我也以爲,微服務中有不少很不錯的想法和理念,因此學習微服務是每個技術人員邁向卓越的架構師的必經之路。
首先,你須要看一下,Martin Fowler 的這篇關於微服務架構的文檔 - Microservice Architecture (中譯版),這篇文章說明了微服務的架構與傳統架構的不一樣之處在於,微服務的每一個服務與其數據庫都是獨立的,能夠無依賴地進行部署。你也能夠看看 Martin Fowler 老人家現身說法的視頻。
另外,你還能夠簡單地瀏覽一下,各家對微服務的理解。
微服務架構
固然,有一本書你也能夠讀一下—— 微服務設計。這本書全面介紹了微服務的建模、集成、測試、部署和監控,經過一個虛構的公司講解了如何創建微服務架構。主要內容包括認識微服務在保證系統設計與組織目標統一上的重要性,學會把服務集成到已有系統中,採用遞增手段拆分單塊大型應用,經過持續集成部署微服務,等等。
與此類似的,也有其它的一系列文章,值得一讀。
下面是 Nginx 上的一組微服務架構的系列文章。
還有 Dzone 的這個 Spring boot 的教程。
固然,若是你要玩得時髦一些的話,我推薦你使用下面的這套架構。
-
-
後端:Go 語言 + 微服務工具集 Go kit ,由於是微服務了,因此,每一個服務的代碼就簡單了。既然簡單了,也就能夠用任何語言了,因此,我推薦 Go 語言。
-
通信:gRPC,這是 Google 遠程調用的一個框架,它比 Restful 的調用要快 20 倍到 50 倍的樣子。
-
API:Swagger ,Swagger 是一種 Restful API 的簡單但強大的表示方式,標準的,語言無關,這種表示方式不但人可讀,並且機器可讀。能夠做爲 Restful API 的交互式文檔,也能夠做爲 Restful API 形式化的接口描述,生成客戶端和服務端的代碼。今天,全部的 API 應該都經過 Swagger 來完成。
-
網關:Envoy 其包含了服務發現、負載均衡和熔斷等這些特性,也是一個頗有潛力的網關。固然,Kubernetes 也是很好的,並且它也是高擴展的,因此,徹底能夠把 Envoy 經過 Ingress 集成進 Kubernetes。這裏有一個開源項目就是幹這個事的 - contour。
-
-
-
調用跟蹤:Jaeger 或是 Zipkin,固然,後者比較傳統一些,前者比較時髦,最重要的是,其能夠和 Prometheus 和 Envory 集成。
-
微服務和 SOA
另外,還有幾篇其它對比 SOA 和微服務的文章你也能夠看看。
除此以外,咱們還須要知道微服務和其它架構的一些不一樣和比較,這樣咱們就能夠了解微服務架構的優缺點。下面幾篇文章將幫助得到這些知識。
設計模式和最佳實踐
而後,你能夠看一下微服務的一些設計模式。
相關資源
小結
好了,總結一下今天的內容。我認爲,微服務中有不少很不錯的想法和理念,因此學習微服務是每個技術人員邁向卓越的架構師的必經之路。在這篇文章中,我先給出了 AWS、Microsoft 和 Pivotal 對微服務的理解;而後給出了好幾個系列的教程,幫你全面學習和理解微服務架構;而後經過一系列文章幫你來區分何爲微服務,何爲 SOA;最後給出了微服務架構的設計模式和最佳實踐,以及相關資源。相信經過這一系列內容的學習,你必定會對微服務有全面、透徹的理解。
下篇文章,咱們將講述的容器化和自動化運維方面的內容。敬請期待。
下面是《程序員練級攻略(2018)》系列文章的目錄。
-
-
入門篇
-
修養篇
-
專業基礎篇
-
軟件設計篇
-
高手成長篇