微服架構的論述

搭建微服架構

1、什麼是微服架構

簡單的說就是將一個總體的應用按照必定的規則拆分紅一個個獨立的應用,這些獨立的應用後面又組合成了一個總體的應用。 好比說一個博客系統,我可能包含了發表文章,用戶登陸,用戶評論等功能,若是是一個單一的應用這些功能都會包含在這個應用裏面。 而若是是微服架構 這些功能可能會包含在 文章服務,用戶服務,評論服務裏面。spring

這是我簡單寫的一個微服例子

總體實現了發文章,瀏覽文章。用戶登陸,用戶評論的功能。docker

分別有 用戶服務,文章服務,評論服務,文件服務組成。數據庫

2、微服架構遇須要考慮的問題
  • 服務的編排 個人系統須要怎麼要劃分個人服務,一個是按照業務功能劃分,每一個服務只負責單一的業務。 服務劃分的太細緻使服務偏多,對於維護和開發都會增長很多難度,劃分的太粗,又可能達不到當初使用微服的預想。因此採用微服架構前服務的劃分要詳細考慮。架構

  • 分佈式事物 因爲系統劃分紅爲了 一個個獨立的系統,個個系統之間的採用 REST API方式,本地事物沒法使用與誇多個系統的事物。因此分佈式事物是微服須要解決的重中之重。通常微服的事物多采用可靠事件處理。後面出再討論。負載均衡

  • 誇表查詢 不一樣的服務,數據庫是不共享的,都有獨立的數據庫,因此 查詢的時候不能 採用單體架構 的 join 等語句與跨表查詢,查詢方面增長了很多難度。框架

  • 持續集成與部署 微服的持續集成相對於單體應用要複雜的多,應爲你有更多的服務須要部署,部署的時候你須要更多的硬件設備。因此微服經常會與docker一塊兒使用,方便集成與服務擴容。分佈式

  • 測試 微服的測試,因爲服務的劃分,不只須要對單獨的服務進行測試還須要對總體的功能進行測試。對測試也提升了一個難度。測試

  • 微服架構的優勢 1. 靈活,個個服務相互獨立運行 2. 能夠選擇不一樣的技術棧,不一樣的數據庫等 3. 服務之間的解耦,每一個服務只關心本身的事情 4. 便於維護與開發 5. 配合docker 更方便的擴容。
3、服務的開發框架 spring cloud

spring cloud 集成了微服經常使用的組件,包含了服務的註冊與發現,服務調用,負載均衡,熔斷,監控,配置管理,服務網關等。配合spring 龐大的技術站,spring cloud也漸漸成爲了 微服的代名詞。 主要的一些組件:code

  • 服務發現——Netflix Eureka
  • 客服端負載均衡——Netflix Ribbon
  • 斷路器——Netflix Hystrix
  • 服務網關——Netflix Zuul
  • 分佈式配置——Spring Cloud Config
相關文章
相關標籤/搜索