SpringCloud源碼閱讀0-SpringCloud必備知識

在開始源碼閱讀前,我以爲有必要先講講springcloud的體系。html

SpringCloud 是一系列微服務工具項目的集合。這個集合包含如服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等工具。git

這些項目地址在:github.com/spring-clou… 包含:github

  • Spring Cloud Commons
  • SpringCloud Netflix
  • SpringCloud Stream
  • SpringCloud Config .....

本文着重講講兩個項目:spring

Spring Cloud commons

此項目很是重要,由於他包含兩個重要的子模塊:負載均衡

1.Spring Cloud Context:爲項目提供:引導上下文,加密,刷新範圍和環境端點等功能。SpringCloud在構建上下文 (即ApplicationContext實例)時,採用了Spring父子容器的設計,會在 SpringBoot構建的容器(後面稱之爲應用容器)之上建立一父容器 Bootstrap Application Context 。框架

2.Spring Cloud Commons: 看其名字也能夠看出他是一個通用功能的項目,會被其餘項目引入。分佈式

主要對微服務中的服務註冊與發現、負載均衡、熔斷器等功能提供一個抽象層代碼,這個抽象層與具體的實現無關。這樣這些功能具體的實現上能夠採用不一樣的技術去實現,並能夠作到在使用時靈活的更換。微服務

列如:DiscoveryClient的使用,咱們能夠選擇使用Spring Cloud Netflix Eureka,Spring Cloud Consul發現和Spring Cloud Zookeeper發現工具

  • 當咱們使用@EnableDiscoveryClient來引入DiscoveryClient時,具體引入哪一種DiscoveryClient,會根據你具體引入哪一個項目有關。若是咱們用了Spring Cloud Netflix Eureka。那就會引入Spring Cloud Netflix EurekaDiscoveryClient加密

  • 當咱們用用@EnableEurekaClient來引入DiscoveryClient,就是明確只能使用Spring Cloud Netflix EurekaDiscoveryClient

這也是@EnableDiscoveryClient@EnableEurekaClient的區別。

由此咱們能看出Spring Cloud Commons做爲一個公共項目的目的。

Spring Cloud Netflix

Netflix公司開源一套分佈式服務框架,Netflix OSS。項目地址github.com/Netflix

Spring Cloud Netflix 項目對其進行了二次封裝,使其更加適應springcloud體系。 Spring Cloud Netflix下包含了與Netflix OSS對應 子項目

  • SpringCloud-Eureka -- Netflix Eureka
  • SpringCloud-Ribbon -- Netflix Ribbon
  • SpringCloud-Hystrix -- Netflix Hystrix
  • ...

當咱們一想到springcloud ,就是Eureka,Ribbon。我認爲這樣是不對的,Eureka,Ribbon 只是做爲Springcloud體系下Spring Cloud Netflix項目的子項目存在,他們只是微服務組件中的一種實現。

由於咱們經常使用Spring Cloud Netflix 項目下的這些實現,客觀的認爲Eureka,Ribbon 就是springcloud。

所以在閱讀源碼前,理清這些關係springcloud,Spring Cloud Netflix ,Netflix OSS是很是有必要的。

最重要的: 當咱們閱讀SpringCloud-Eureka,SpringCloud-Ribbon等源碼時,參考Netflix OSS的wiki文檔,對於咱們理解他們頗有幫助


springcloud文檔地址:

Netflix Eureka 英文地址

Spring Cloud xxx

springcloud 集合下還有不少項目,項目地址在:github.com/spring-clou…

總結:

理解其中的一些關係後,後面開始對其中一些關鍵組件進行源碼閱讀。

相關文章
相關標籤/搜索