現在微服務倍受關注:文章、博客、社交媒體和會議演講都在討論微服務。微服務正在迅速朝着加德納技術成熟度曲線(Gartner Hype cycle)的高峯前進。與此同時,也有持懷疑態度的軟件社區人員認爲微服務沒什麼新鮮可言。反對者聲稱它的思想只是面向服務架構(SOA)的重塑。然而,不管是炒做仍是懷疑,不能否認,微服務架構模式有很是明顯的優點 —— 特別是在實施敏捷開發和複雜的企業應用交付方面。git
而Martin Fowler大師《重構》一書中有說過一句話,大概意思就是,「每次對原有系統進行修改調整的時候是一個很是好的重構契機。面試
用兩張圖給你們看一下spring
單體的時候系統架構是這樣的設計模式
相信不用我多說太多,每個作過大型網站項目的老鐵,都應該知道這種系統架構的蛋疼跨域
因此在系統演化下,咱們來看這個服務器
一樣的系統實現,可是不一樣的組織架構,卻讓系統的可用性更加高,也方便後期的開發工做網絡
因此微服務在我看來,這是一個契機,不管怎麼樣,最終隨着主體業務的複雜化,終會以各類不一樣的形式靠攏其中架構
那不管是出於面試仍是知識點的學習,我想,對於微服務,學習一下,對你後期必定會有一些幫助分佈式
隨着互聯網的發展,網站應用的規模不斷擴大,常規的應用架構已沒法應對,分佈式服務架構以及微服務架構勢在必行,亟需一個治理系統確保架構有條不紊的演進。微服務
微服務基礎知識
Eureka
Ribbon
這一次主要介紹Feign和Hystrix兩個知識點
Feign
Feign是Netflix開發的聲明式,模板化的HTTP客戶端,其靈感來自RetrofitJAXRS-2.0以及WebSocket.Feign可幫助咱們更加便捷,優雅的調用HTTP API。在SpringCloud中,使用Feign很是簡單—―建立一個接口,並在接口上添加一些註解,代碼就完成了。
Feign支持多種註解,例如Feign自帶的註解或者JAX-RS註解等。SpringCloud對Feign進行了加強,使Feign支持了SpringMVC註解,並整合了Ribbon和Eureka,從而讓Feign的使用更加方便。
Hystrix
Hystrix是由Netflix開源的一個延遲和容錯庫,用於隔離訪問遠程系統、服務或者第三方庫,防止級聯失敗,從而提高系統的可用性與容錯性。Hystrix主要經過如下幾點實現延遲和容錯。
Feign
Hystrix
在學習完前面的知識後,微服務架構已經初具雛形。但還有一些問題∶不一樣的微服務通常會有不一樣的網絡地址,客戶端在訪問這些微服務時必須記住幾十甚至幾百個地址,這對於客戶端方來講太複雜也難以維護。以下圖:
若是讓客戶端直接與各個微服務通信,可能會有不少問題∶
所以,咱們須要一個微服務網關,介於客戶端與服務器之間的中間層,全部的外部請求都會先通過微服務網關。客戶端只須要與網關交互,只知道一個網關地址便可
網關概述
zuul
Gateway
springcloud Stream
springcloud config
Apollo
須要這份資料的,git掃碼獲取資料看這裏