spring cloud 是 spring 社區(qū)下的一套微服務(wù)解決方案,通過(guò)封裝和整合 Netflix 公司的組件,簡(jiǎn)化并降低開(kāi)發(fā)難度。
其中微服務(wù)需要有一個(gè)服務(wù)中心管理所有服務(wù)的狀態(tài),所有服務(wù)都要向該中心注冊(cè)自身來(lái)實(shí)現(xiàn)服務(wù)發(fā)現(xiàn),包括多個(gè)服務(wù)中心下( 配置高可用服務(wù)注冊(cè)中心時(shí) ),也需要相互注冊(cè)。
euraka server 是服務(wù)中心的實(shí)現(xiàn),maven 依賴(lài)如下:
<dependencies>
<!-- 服務(wù)注冊(cè)組件 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eurekaserver</artifactId>
</dependency>
</dependencies>
application.properties 配置如下:
server.port = 10080
eureka.client.fetch-registry = false
eureka.client.register-with-eureka = false
eureka.client.serviceUrl.defaultZone = http://localhost:${server.port}/eureka/
eureka server 在啟動(dòng)之后會(huì)嘗試注冊(cè)自身,而
eureka.client.fetch-registry = false 和 eureka.client.register-with-eureka = false 兩項(xiàng)配置是禁止這個(gè)行為。
完成上述配置后,啟動(dòng)一個(gè) eureka server 只需要寫(xiě)幾行代碼啟動(dòng)即可:
@EnableEurekaServer
@SpringBootApplication
public class Application {
public static void main( String[] args ) {
new SpringApplicationBuilder( Application.class )
.web( true )
.run( args );
}
}
然后編寫(xiě)一個(gè)客戶(hù)端,maven 依賴(lài)如下:
<dependencies>
<!-- spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- eureka 客戶(hù)端組件 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
寫(xiě)完依賴(lài)還沒(méi)完,還有配置呢:
server.port = 12000
spring.application.name = SleepCare-TestingServices
eureka.client.serviceUrl.defaultZone = http://localhost:10080/eureka/
這里解釋一下:
- server.port ---> 服務(wù)啟動(dòng)的端口
- spring.application.name ---> 這是個(gè)服務(wù)名字,配置高可用以及其他服務(wù)訪問(wèn)該服務(wù)的時(shí)候,是通過(guò)這個(gè)屬性找服務(wù)注冊(cè)中心獲取可用的訪問(wèn)ip的(當(dāng)然你可以通過(guò) ip 直接調(diào)用其他服務(wù),那不如別用 sc 啦
- eureka.client.serviceUrl.defaultZone ---> 這是服務(wù)注冊(cè)的地址,后期說(shuō)到高可用服務(wù)注冊(cè)中心,你會(huì)看到這個(gè)屬性多個(gè)地址是用英文逗號(hào)分割的,別手賤逗號(hào)之間用空格分隔還美名曰美觀
完成上述配置后,啟動(dòng)一個(gè) eureka 客戶(hù)端就像啟動(dòng)服務(wù)注冊(cè)中心一樣:
@EnableDiscoveryClient
@SpringBootApplication
public class Application {
public static void main( String[] args ) {
new SpringApplicationBuilder( Application.class )
.web( true )
.run( args );
}
}
注意這里用的是 @EnableDiscoveryClient注解,這個(gè)注解會(huì)開(kāi)啟自動(dòng)注冊(cè)功能,當(dāng)然啦還會(huì)做其他事不過(guò)我還不清楚啦。換言之,用了這個(gè)注解,就是你只要躺著就好了,其他事人家來(lái)做。
到這里跑起來(lái),如果控制臺(tái)沒(méi)有報(bào)錯(cuò),那一般都是沒(méi)什么大事的。
訪問(wèn)http://localhost:10080/( 我這里是這個(gè)地址,具體地址看你自己 )就會(huì)看到如下界面。

圖中的列表就是顯示出當(dāng)前注冊(cè)到服務(wù)注冊(cè)中心的服務(wù)啦,可以看到名為 SleepCare-TestingServices 的項(xiàng)目已經(jīng)啟動(dòng)并注冊(cè)了。其中 Appcalition 一項(xiàng)的名字對(duì)應(yīng)的就是 spring.application.name 的屬性值,并且一個(gè)名稱(chēng)可以對(duì)應(yīng)多個(gè) ip,這是高可用的配置,當(dāng)然啦這是后話(huà)了。
當(dāng)走到這一步還平平安安的,那都是已經(jīng)成功搭起一個(gè)簡(jiǎn)單的注冊(cè)中心和客戶(hù)端了,這一篇先說(shuō)這么多,喵。