面試不會微服務不要緊,跟着我4天學會微服務!

現在微服務倍受關注:文章、博客、社交媒體和會議演講都在討論微服務。微服務正在迅速朝着加德納技術成熟度曲線(Gartner Hype cycle)的高峯前進。與此同時,也有持懷疑態度的軟件社區人員認爲微服務沒什麼新鮮可言。反對者聲稱它的思想只是面向服務架構(SOA)的重塑。然而,不管是炒做仍是懷疑,不能否認,微服務架構模式有很是明顯的優點 —— 特別是在實施敏捷開發和複雜的企業應用交付方面。git

而Martin Fowler大師《重構》一書中有說過一句話,大概意思就是,「每次對原有系統進行修改調整的時候是一個很是好的重構契機。面試

用兩張圖給你們看一下spring

單體的時候系統架構是這樣的設計模式

相信不用我多說太多,每個作過大型網站項目的老鐵,都應該知道這種系統架構的蛋疼跨域

因此在系統演化下,咱們來看這個服務器

一樣的系統實現,可是不一樣的組織架構,卻讓系統的可用性更加高,也方便後期的開發工做網絡

因此微服務在我看來,這是一個契機,不管怎麼樣,最終隨着主體業務的複雜化,終會以各類不一樣的形式靠攏其中架構

那不管是出於面試仍是知識點的學習,我想,對於微服務,學習一下,對你後期必定會有一些幫助分佈式

day1

隨着互聯網的發展,網站應用的規模不斷擴大,常規的應用架構已沒法應對,分佈式服務架構以及微服務架構勢在必行,亟需一個治理系統確保架構有條不紊的演進。微服務

微服務基礎知識

Eureka

Ribbon

day2

這一次主要介紹FeignHystrix兩個知識點

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主要經過如下幾點實現延遲和容錯。

  • 包裹請求∶使用HystrixCommand包裹對依賴的調用邏輯,每一個命令在獨立線程中執行。這使用了設計模式中的「命令模式"。
  • 跳閘機制︰當某服務的錯誤率超過必定的閾值時,Hystrix能夠自動或手動跳閘,中止請求該服務一段時間。
  • 資源隔離:Hystrix爲每一個依賴都維護了一個小型的線程池(或者信號量)。若是該線程池已滿,發往該依賴的請求就被當即拒絕,而不是排隊等待,從而加速失敗斷定。
  • 監控:Hystrix能夠近乎實時地監控運行指標和配置的變化,例如成功、失敗、超時、以及被拒絕的請求等。
  • 回退機制︰當請求失敗、超時、被拒絕,或當斷路器打開時,執行回退邏輯。回退邏輯由開發人員自行提供,例如返回一個缺省值。
  • 自我修復∶斷路器打開一段時間後,會自動進入「半開"狀態。

Feign

Hystrix

day3

在學習完前面的知識後,微服務架構已經初具雛形。但還有一些問題∶不一樣的微服務通常會有不一樣的網絡地址,客戶端在訪問這些微服務時必須記住幾十甚至幾百個地址,這對於客戶端方來講太複雜也難以維護。以下圖:

若是讓客戶端直接與各個微服務通信,可能會有不少問題∶

  • ·客戶端會請求多個不一樣的服務,須要維護不一樣的請求地址,增長開發難度
  • ·在某些場景下存在跨域請求的問題
  • ·加大身份認證的難度,每一個微服務須要獨立認證

所以,咱們須要一個微服務網關,介於客戶端與服務器之間的中間層,全部的外部請求都會先通過微服務網關。客戶端只須要與網關交互,只知道一個網關地址便可

網關概述

zuul

Gateway

day4

springcloud Stream

springcloud config

Apollo

須要這份資料的,git掃碼獲取資料看這裏

https://gitee.com/biwangsheng/personal.git

相關文章
相關標籤/搜索