Spring Cloud 學習筆記01----微服務簡介

簡介

Spring Cloud 是一個基于Spring Boot實現(xiàn)的微服務架構開發(fā)工具。它為微服務架構中設計的配置管理、服務治理、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分布式會話和集群狀態(tài)管理等操作提供了簡單的開發(fā)方式。

Spring Cloud 包括了多個子項目:

  • Spring Cloud Config:配置管理工具,支持使用Git 存儲配置內(nèi)容,可以使用它實現(xiàn)應用配置的外部化存儲,并支持客戶端信息刷新。加密/解密配置內(nèi)容等。
  • Spring Cloud Netflix: 核心組件,對多個Netflix OSS 開源套件進行整合。
    • Eureka: 服務治理組件,包括服務注冊中心,服務注冊與發(fā)現(xiàn)機制的實現(xiàn)。
    • Hystrix: 容錯管理組件,實現(xiàn)斷路器模式,幫助服務依賴中出現(xiàn)的延遲和為故障提供強大的容錯能力。
    • Ribbon: 客戶端負載均衡的服務調(diào)用組件。
    • Feign: 基于Ribbon和Hystrix的聲明式服務調(diào)用組件。
    • Zuul: 網(wǎng)關組件,提供智能路由、訪問過濾等功能。
    • Archaius: 外部化配置組件。
    • Spring Cloud Bus: 事件、消息總線,用于傳播集群中的狀態(tài)變化或事件,已觸發(fā)后續(xù)的處理,比如用來動態(tài)刷新配置等。
    • Spring Cloud Cluster: 針對Zookeeper、Redis、Hazelcatst、Consul的選舉算法和通用狀態(tài)模式的實現(xiàn)。
    • Spring Cloud Stream: 通過Redis、Rabbit或者Kafka實現(xiàn)的消費微服務,可以通過簡單的聲明式模型來發(fā)送和接收消息。
    • Spring Cloud ZooKeeper: 基于ZooKeeper的服務發(fā)現(xiàn)和配置管理組件。

微服務架構

簡單來說,微服務架構就是將應用從存儲開始垂直拆分成一系列小的web 服務,這些服務可以獨立的編譯及部署。服務之間通過各自暴露的Api 接口(諸如 RESTful API)相互通訊。

功能和使用場景

  1. 我們把整個系統(tǒng)根據(jù)業(yè)務拆分成幾個子系統(tǒng)
  2. 每個子系統(tǒng)可以部署多個應用,多個應用之間使用負載均衡
  3. 需要一個服務注冊中心,所有的服務都可以在注冊中心注冊,負載均衡也是通過注冊中心注冊的服務來使用一定的策略來實現(xiàn)。
  4. 所有的客戶端都通過同一個網(wǎng)關地址訪問后臺的服務,通過路由配置,網(wǎng)關來判斷 一個URL請求由哪個服務處理。請求轉發(fā)到服務上的時候也是使用負載均衡。
  5. 服務之間有時候也需要相互訪問,例如有一個用戶模塊,其他服務在處理一些業(yè)務的時候,要獲取用戶服務的用戶數(shù)據(jù)。
  6. 需要一個斷路器,及時處理服務調(diào)用的超時和錯誤,防止由于其中一個服務的問題導致整體系統(tǒng)的癱瘓。
  7. 還需要一個監(jiān)控功能,監(jiān)控每個服務調(diào)用花費的時間等。

設計原則

  1. 單一職責原則
  2. 服務自治原則
  3. 輕量級通信機制
  4. 微服務粒度

整體架構圖

在這里插入圖片描述

架構圖說明

  1. Eureka 負責服務的注冊與發(fā)現(xiàn),很好地將各服務連接起來。
  2. Hystrix 負責監(jiān)控服務之間的調(diào)用情況,連續(xù)失敗多次進行熔斷保護。
  3. Hystrix dashboard,Turbine負責監(jiān)控Hystrix的熔斷情況并給予圖形化的展示
  4. Spring Cloud Config 提供了同一個的配置中心服務
  5. 當配置文件發(fā)生變化的時候,Spring Cloud Bus通知各服務去獲取罪行的配置信息
  6. 所有對外的請求和服務,我們都通過Zuul來進行轉發(fā),起到API網(wǎng)關的作用。
  7. 監(jiān)控我們使用Sleuth+Zipkin+SpringAdmin將所有的請求數(shù)據(jù)記錄下來,方便我們進行后續(xù)分析。

版本說明

由于Spring Cloud 不像Spring 社區(qū)其他的一些項目那樣相對獨立,它是一個擁有諸多子項目的大型綜合項目,可以說是對微服務架構解決方法的綜合套件組合,其包含的各個子項目也都獨立進行著內(nèi)容的更新與迭代,各自都維護著自己的發(fā)布版本號。因此每一個Spring Cloud的版本都會包含多個不同版本的子項目,為了管理每個版本的子項目清單,避免Spring Cloud的版本號與其子項目的版本號相混淆,沒有采用版本號的方式,而是通過命名的方式。
當一個版本的Spring Cloud 項目的發(fā)布內(nèi)容積累到一個臨界點或者一個嚴重的bug解決可用后,就會發(fā)布一個“service release ” 版本,簡稱SRX版本。其中X是一個遞增的數(shù)字,所以Brixton.SR5就是Brixton的第5個 Release版本。

引用

《Spring Cloud微服務實戰(zhàn)》
http://blog.didispace.com/spring-cloud-starter-dalston-1/




作者:碼農(nóng)飛哥

微信公眾號:碼農(nóng)飛哥