當前微服務架構逐漸成爲系統開發的主流方向,搭建微服務方式能夠有多種,例如springcloud、dubbo、k8s等,本系列文章將基於本人蔘與的實際項目,來介紹基於springcloud搭建微服務的方式,Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它爲基於JVM的雲應用開發中涉及的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分佈式會話和集羣狀態管理等操做提供了一種簡單的開發方式。其主要模塊有:spring
- eureka: 是springcloud體系結構中的服務治理模塊,spring cloud eureka 由兩個模塊組成,Eureka服務器 和 Eureka客戶端。Eureka服務器充當微服務架構體系中的服務註冊中心。其餘的微服務,使用 Eureka 客戶端鏈接到 Eureka Server,並維持心跳鏈接,系統維護人員能夠經過 Eureka Server 來監控系統中各個微服務是否正常運行。
- zuul:充當微服務架構中api網關對外進行統一暴露,起到限流、動態路由等做用,此處能夠根據須要進行擴展,實現日誌記錄、權限驗證等系統級功能;
- ribbon:Spring Cloud Ribbon 是一個基於Http和TCP的客服端負載均衡工具,它是基於Netflix Ribbon實現的。它不像服務註冊中心(eureka)、API網關(zuul)那樣獨立部署,可是它幾乎存在於每一個微服務的基礎設施中,當Ribbon能夠方便的從註冊中心中獲取已有服務的列表,所以能夠方便的實現服務的負載均衡
- feign:Spring Cloud Feign是一套基於Netflix Feign實現的聲明式服務調用客戶端,它使得編寫Web服務客戶端變得更加簡單,只須要建立接口並用註解來進行配置,既能夠實現對其餘微服務的訪問;
- 熔斷器hystrix:微服務架構中,可能會存在多個微服務的級聯調用,例如 A爲服務提供者,B即消費A服務,也爲C和D提供服務;這時,若是A不可用,不單單會形成B服務不可用,也會將不可用傳到至C和D;從而形成雪崩效應熔斷器的原理與電路中的保險絲很強,其實本質就是快速失敗;當必定時間內,hystrix檢測到必定數量的相同錯誤,會強迫以後的訪問快速失敗,不須要系統資源浪費在等待超時鏈接上;防止形成整個系統的崩潰;
- Spring Cloud Config:爲分佈式應用或微服務提供外部的配置支持。其分爲客戶端和服務端2部分。服務端也能夠稱之爲分佈式配置中心,能夠做爲一個單獨的微服務進行部署,用來鏈接配置倉庫,併爲客戶端提供配置信息訪問接口;
- spring cloud bus:經過消息中間件鏈接微服務中的各個節點,他能夠用於推送配置文件變動通知或節點間的通信。其本質是利用MQ廣播機制在節點間傳送信息