Spring Cloud微服務實戰閱讀筆記(一) 基礎知識

本文系《Spring Cloud微服務實戰》做者:翟永超,一書的閱讀筆記。算法

 

一:基礎知識
 
1:什麼是微服務架構
    是一種架構設計風格,主旨是將一個本來獨立的系統拆分紅多個小型服務,這些小型服務都在各自獨立的進程中運行,服務之間經過基於HTTP的RESTful API進行通訊協做。
    被拆分的每個小型服務都圍繞系統中的一項或者一些耦合度較高的業務功能進行構建,每一個服務維護着自身的數據存儲,業務開發,自動化測試以及獨立部署。
    
 
2:實施微服務帶來的問題:
  • 運維的新挑戰;
  • 接口的一致性;
  • 分佈式的複雜性;
 
3:微服務9大特性:
  1. 服務組件化;
  2. 按業務組織團隊;
  3. 作「產品」的態度;
  4. 智能端點與啞管道;
  5. 去中心化治理;
  6. 去中心化管理數據;
  7. 基礎設施自動化;
  8. 容錯設計;
  9. 演進式設計;
 
4:爲何選擇Spring Cloud
目前微服務架構中針對不一樣場景出現的不一樣問題的各類解決方案和開源框架概覽:
服務治理
阿里巴巴Dobbo,噹噹網DubboX,Netflix的Eureka,Apache的Consul等
分佈式配置管理
百度的Disconf,Netflix的Archaius,360的QConf,Spring Cloud的Config,淘寶網的Diamond等
批量任務
噹噹網的Elastic-Job,LinkedIn的Azkaban,Spring Cloud的Task等
服務跟蹤
京東的Hydra,Spring Cloud的Sleuth,Twitter的Zipkin等
    在實施微服務框架時,咱們必須在這些關鍵場景的技術選型上進行抉擇,而這須要咱們針對每種開源框架花費大量時間和經歷進行調研,分析,比較等。
    而Spring Cloud,它不像上面介紹的框架是爲了解決微服務實踐過程當中的某一項問題,而是一個解決微服務架構實施的綜合性解決框架。它整合了諸多被普遍實踐和證實過的框架做爲實施的基礎部件,又在該基礎上建立了一些很是優秀的邊緣組件。
    
 
5:Spring Cloud簡介
    Spring Cloud是一個基於Spring Boot實現的微服務框架,它爲微服務架構中涉及的配置管理、服務治理、斷路器、智能路由、 微代理、控制總線、全局鎖、決策競選、分佈式會話和集羣狀態管理等操做提供了一個簡單的開發方式。
    Spring Cloud下主要的子項目有:
  • Spring Cloud Config:配置管理工具,支持使用Git存儲配置內容,可使用它實現應用配置的外部化存儲,支持客戶端配置信息刷新,加密/解密配置內容等。
  • Spring Cloud Netflix:核心組件,對多個Netflix開源套件進行整合。
    • Eureka:服務治理組件,包括服務註冊中心、服務註冊與發現機制的實現。
    • Hystrix:容錯管理組件,實現斷路器模式,爲服務依賴中出現的延遲和故障提供容錯能力;
    • Ribbon:客戶端負載均衡;
    • Feign:基於Hystrix和Ribbon的聲明式服務調用組件;
    • Zuul:網關組件,提供只能路由、訪問過濾等功能;
    • Archaius:外部化配置組件;
  • Spring Cloud Bus:消息總線,用於傳播集羣中的狀態變化或者事件,以觸發後續處理,好比用來動態刷新配置等。
  • Spring Cloud Cluster:針對Zookeeper、Redis、Hazelcast、Consul的選舉算法和通用狀態模式的實現。
  • Spring Cloud Cloudfoundry:與Pivotal Cloudfoundry的整合支持;
  • Spring Cloud Stream:經過Redis、Rabbit或者Kafka實現的消費微服務,能夠經過簡單的聲明式模型來發送和接收消息;
  • Spring Cloud Security:安全工具包,提供在zuul代理中對OAuth2客戶端請求的中繼器;
 
6:Spring Cloud版本說明
    當咱們查找到一些Spring Cloud的文章或者示例時,每每能夠在依賴中看見不少不一樣版本的名字,好比Angel.SR六、Brixton.SR5等,爲何Spring Cloud沒有想其餘Spring項目使用1.X.X的版本命名規則呢?
    由於Spring Cloud下有不少子項目,他們各自維護着本身的版本更新,也就是說每個Spring Cloud的版本下的不一樣子項目有不一樣的版本號,爲了區別於子項目的版本號,所以使用命名的方式標識版本。
    其中大版本命名使用倫敦地鐵站的名字,按照字母順序排列,如Angel,Brixton......
    當一個版本的Spring Cloud項目的發佈內容累積到必定程度或者修復了一個嚴重的Bug,就會發佈一個Release版本,簡稱SRX版本,其中X是一個遞增的數字,Brixton SR5表示Brixton的第五個Release版本。
 
最新版本區別:
Component
Edgware.SR1
Finchley.M5
Finchley.BUILD-SNAPSHOT
spring-cloud-aws
1.2.2.RELEASE
2.0.0.M2
2.0.0.BUILD-SNAPSHOT
spring-cloud-bus
1.3.2.RELEASE
2.0.0.M4
2.0.0.BUILD-SNAPSHOT
spring-cloud-cli
1.4.1.RELEASE
2.0.0.M1
2.0.0.BUILD-SNAPSHOT
spring-cloud-commons
1.3.1.RELEASE
2.0.0.M5
2.0.0.BUILD-SNAPSHOT
spring-cloud-contract
1.2.2.RELEASE
2.0.0.M5
2.0.0.BUILD-SNAPSHOT
spring-cloud-config
1.4.1.RELEASE
2.0.0.M5
2.0.0.BUILD-SNAPSHOT
spring-cloud-netflix
1.4.2.RELEASE
2.0.0.M5
2.0.0.BUILD-SNAPSHOT
spring-cloud-security
1.2.2.RELEASE
2.0.0.M1
2.0.0.BUILD-SNAPSHOT
spring-cloud-cloudfoundry
1.1.1.RELEASE
2.0.0.M2
2.0.0.BUILD-SNAPSHOT
spring-cloud-consul
1.3.1.RELEASE
2.0.0.M4
2.0.0.BUILD-SNAPSHOT
spring-cloud-sleuth
1.3.1.RELEASE
2.0.0.M5
2.0.0.BUILD-SNAPSHOT
spring-cloud-stream
Ditmars.SR3
Elmhurst.M3
Elmhurst.BUILD-SNAPSHOT
spring-cloud-zookeeper
1.2.0.RELEASE
2.0.0.M4
2.0.0.BUILD-SNAPSHOT
spring-boot
1.5.9.RELEASE
2.0.0.M7
2.0.0.BUILD-SNAPSHOT
spring-cloud-task
1.2.2.RELEASE
2.0.0.M2
2.0.0.RELEASE
spring-cloud-vault
1.1.0.RELEASE
2.0.0.M4
2.0.0.BUILD-SNAPSHOT
spring-cloud-gateway
1.0.1.RELEASE
2.0.0.M5
2.0.0.BUILD-SNAPSHOT
相關文章
相關標籤/搜索