什么是Spring Cloud
Spring Cloud是一系列框架的有序集合耕渴。它利用Spring Boot的開發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)注冊(cè)齿兔、配置中心橱脸、消息總線、負(fù)載均衡分苇、斷路器添诉、數(shù)據(jù)監(jiān)控等,都可以用Spring Boot的開發(fā)風(fēng)格做到一鍵啟動(dòng)和部署医寿。Spring并沒有重復(fù)制造輪子吻商,它只是將目前各家公司開發(fā)的比較成熟、經(jīng)得起實(shí)際考驗(yàn)的服務(wù)框架組合起來糟红,通過Spring Boot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實(shí)現(xiàn)原理艾帐,最終給開發(fā)者留出了一套簡(jiǎn)單易懂乌叶、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包。
Spring Cloud優(yōu)勢(shì)
Spring Cloud對(duì)于中小型互聯(lián)網(wǎng)公司來說是一種福音柒爸,因?yàn)檫@類公司往往沒有實(shí)力或者沒有足夠的資金投入去開發(fā)自己的分布式系統(tǒng)基礎(chǔ)設(shè)施准浴,使用Spring Cloud一站式解決方案能在從容應(yīng)對(duì)業(yè)務(wù)發(fā)展的同時(shí)大大減少開發(fā)成本。同時(shí)捎稚,隨著近幾年微服務(wù)架構(gòu)和Docker容器概念的火爆乐横,也會(huì)讓Spring Cloud在未來越來越“云”化的軟件開發(fā)風(fēng)格中立有一席之地,尤其是在目前五花八門的分布式解決方案中提供了標(biāo)準(zhǔn)化的今野、全站式的技術(shù)方案葡公,意義可能會(huì)堪比當(dāng)前Servlet規(guī)范的誕生,有效推進(jìn)服務(wù)端軟件系統(tǒng)技術(shù)水平的進(jìn)步条霜。
以上摘自百度催什,下面開始正題。
服務(wù)中心
什么是服務(wù)中心宰睡?
假如一個(gè)項(xiàng)目A去調(diào)用項(xiàng)目B,沒有注冊(cè)中心的情況下拆内,可以直接調(diào)用旋圆,如下圖
如果存在一個(gè)服務(wù)中心的話,就要A調(diào)用服務(wù)中心麸恍,服務(wù)中心調(diào)用B灵巧,如下圖
這樣看起來好像變得麻煩了,但是并不是抹沪。假如不是擁有兩個(gè)項(xiàng)目孩等,是有兩百個(gè)項(xiàng)目,他們之間相互調(diào)用采够,那么就需要去管理每個(gè)項(xiàng)目的服務(wù)器所在的ip地址肄方,和端口號(hào)。一個(gè)項(xiàng)目的宕機(jī)或重啟蹬癌,影響的可能是好多的項(xiàng)目权她。
假如使用服務(wù)種中心,讓每一個(gè)項(xiàng)目都到服務(wù)中心來注冊(cè)逝薪,那么我們?nèi)绻胝{(diào)用其中一個(gè)項(xiàng)目的服務(wù)隅要,我們只要到服務(wù)中心來調(diào)用就行。我們并不需要關(guān)心這個(gè)服務(wù)到底是誰提供的董济。如果想重啟某個(gè)服務(wù)步清,只需把他從服務(wù)中心移除,并不會(huì)對(duì)其他項(xiàng)目造成影響。
好處不僅僅是這些廓啊,因?yàn)槲覀儼阉械姆?wù)都放到了服務(wù)中心欢搜,我們就可以直接對(duì)服務(wù)中心訂制一些高級(jí)功能,比如做監(jiān)控或負(fù)載均衡等谴轮。
搭建服務(wù)中心Eureka Server
在Spring Boot項(xiàng)目的基礎(chǔ)上炒瘟,添加如下依賴。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.RELEASE</spring-cloud.version>
</properties>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.RELEASE</spring-cloud.version>
</properties>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
配置
spring.application.name=spring-cloud-eureka
server.port=8080
eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka/
eureka.client.serviceUrl.defaultZone
設(shè)置與Eureka Server交互的地址第步,查詢服務(wù)和注冊(cè)服務(wù)都需要依賴這個(gè)地址疮装。
使用的話只需要在Boot的啟動(dòng)程序類加@EnableEurekaServer
注解即可
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}