Spring Cloud簡介web
Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它爲基於JVM的雲應用開發中涉及的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分佈式會話和集羣狀態管理等操做提供了一種簡單的開發方式。Spring Cloud大型企業分佈式微服務雲架構源碼請加一七九一七四三三八零spring
Spring Cloud包含了多個子項目(針對分佈式系統中涉及的多個不一樣開源產品),好比:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud0 CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等項目。bash
微服務架構架構
「微服務架構」在這幾年很是的火熱,以致於關於微服務架構相關的開源產品被反覆的說起(好比:netflix、dubbo),Spring Cloud也因Spring社區的強大知名度和影響力也被廣大架構師與開發者備受關注。app
那麼什麼是「微服務架構」呢?簡單的說,微服務架構就是將一個完整的應用從數據存儲開始垂直拆分紅多個不一樣的服務,每一個服務都能獨立部署、獨立維護、獨立擴展,服務與服務間經過諸如RESTful API的方式互相調用。負載均衡
對於「微服務架構」,你們在互聯網能夠搜索到不少相關的介紹和研究文章來進行學習和了解。也能夠閱讀始祖Martin Fowler的《Microservices》(中文版翻譯點擊查看),本文不作更多的介紹和描述。框架
服務治理分佈式
在簡單介紹了Spring Cloud和微服務架構以後,下面迴歸本文的主旨內容,如何使用Spring Cloud來實現服務治理。spring-boot
因爲Spring Cloud爲服務治理作了一層抽象接口,因此在Spring Cloud應用中能夠支持多種不一樣的服務治理框架,好比:Netflix Eureka、Consul、Zookeeper。在Spring Cloud服務治理抽象層的做用下,咱們能夠無縫地切換服務治理實現,而且不影響任何其餘的服務註冊、服務發現、服務調用等邏輯。微服務
因此,下面咱們經過介紹兩種服務治理的實現來體會Spring Cloud這一層抽象所帶來的好處。
Spring Cloud Eureka
首先,咱們來嘗試使用Spring Cloud Eureka來實現服務治理。
Spring Cloud Eureka是Spring Cloud Netflix項目下的服務治理模塊。而Spring Cloud Netflix項目是Spring Cloud的子項目之一,主要內容是對Netflix公司一系列開源產品的包裝,它爲Spring Boot應用提供了自配置的Netflix OSS整合。經過一些簡單的註解,開發者就能夠快速的在應用中配置一下經常使用模塊並構建龐大的分佈式系統。它主要提供的模塊包括:服務發現(Eureka),斷路器(Hystrix),智能路由(Zuul),客戶端負載均衡(Ribbon)等。
下面,就來具體看看如何使用Spring Cloud Eureka實現服務治理。
建立「服務註冊中心」
建立一個基礎的Spring Boot工程,命名爲eureka-server,並在pom.xml中引入須要的依賴內容:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
複製代碼
經過@EnableEurekaServer註解啓動一個服務註冊中心提供給其餘應用進行對話。這一步很是的簡單,只須要在一個普通的Spring Boot應用中添加這個註解就能開啓此功能,好比下面的例子:
@EnableEurekaServer
@SpringBootApplication
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class)
.web(true).run(args);
}
}
複製代碼
在默認設置下,該服務註冊中心也會將本身做爲客戶端來嘗試註冊它本身,因此咱們須要禁用它的客戶端註冊行爲,只須要在application.properties配置文件中增長以下信息:
spring.application.name=eureka-server
server.port=1001
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
複製代碼
爲了與後續要進行註冊的服務區分,這裏將服務註冊中心的端口經過server.port屬性設置爲1001。啓動工程後,訪問:http:/ /localhost:1001/,能夠看到下面的頁面,其中尚未發現任何服務。