spring cloud 是 spring 社區(qū)下的一套微服務(wù)解決方案亮航,通過封裝和整合 Netflix 公司的組件,簡化并降低開發(fā)難度匀们。
其中微服務(wù)需要有一個(gè)服務(wù)中心管理所有服務(wù)的狀態(tài)缴淋,所有服務(wù)都要向該中心注冊自身來實(shí)現(xiàn)服務(wù)發(fā)現(xiàn),包括多個(gè)服務(wù)中心下( 配置高可用服務(wù)注冊中心時(shí) )泄朴,也需要相互注冊重抖。
euraka server 是服務(wù)中心的實(shí)現(xiàn),maven 依賴如下:
<dependencies>
<!-- 服務(wù)注冊組件 -->
<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ì)嘗試注冊自身祖灰,而
eureka.client.fetch-registry = false
和 eureka.client.register-with-eureka = false
兩項(xiàng)配置是禁止這個(gè)行為钟沛。
完成上述配置后,啟動(dòng)一個(gè) eureka server 只需要寫幾行代碼啟動(dòng)即可:
@EnableEurekaServer
@SpringBootApplication
public class Application {
public static void main( String[] args ) {
new SpringApplicationBuilder( Application.class )
.web( true )
.run( args );
}
}
然后編寫一個(gè)客戶端局扶,maven 依賴如下:
<dependencies>
<!-- spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- eureka 客戶端組件 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
寫完依賴還沒完恨统,還有配置呢:
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ù)的時(shí)候,是通過這個(gè)屬性找服務(wù)注冊中心獲取可用的訪問ip的(當(dāng)然你可以通過 ip 直接調(diào)用其他服務(wù)畜埋,那不如別用 sc 啦
- eureka.client.serviceUrl.defaultZone ---> 這是服務(wù)注冊的地址莫绣,后期說到高可用服務(wù)注冊中心,你會(huì)看到這個(gè)屬性多個(gè)地址是用英文逗號(hào)分割的悠鞍,別手賤逗號(hào)之間用空格分隔還美名曰美觀
完成上述配置后对室,啟動(dòng)一個(gè) eureka 客戶端就像啟動(dòng)服務(wù)注冊中心一樣:
@EnableDiscoveryClient
@SpringBootApplication
public class Application {
public static void main( String[] args ) {
new SpringApplicationBuilder( Application.class )
.web( true )
.run( args );
}
}
注意這里用的是 @EnableDiscoveryClient
注解,這個(gè)注解會(huì)開啟自動(dòng)注冊功能狞玛,當(dāng)然啦還會(huì)做其他事不過我還不清楚啦软驰。換言之,用了這個(gè)注解心肪,就是你只要躺著就好了锭亏,其他事人家來做。
到這里跑起來硬鞍,如果控制臺(tái)沒有報(bào)錯(cuò)慧瘤,那一般都是沒什么大事的。
訪問http://localhost:10080/
( 我這里是這個(gè)地址固该,具體地址看你自己 )就會(huì)看到如下界面锅减。
圖中的列表就是顯示出當(dāng)前注冊到服務(wù)注冊中心的服務(wù)啦,可以看到名為 SleepCare-TestingServices 的項(xiàng)目已經(jīng)啟動(dòng)并注冊了伐坏。其中 Appcalition 一項(xiàng)的名字對應(yīng)的就是 spring.application.name
的屬性值怔匣,并且一個(gè)名稱可以對應(yīng)多個(gè) ip,這是高可用的配置桦沉,當(dāng)然啦這是后話了每瞒。
當(dāng)走到這一步還平平安安的,那都是已經(jīng)成功搭起一個(gè)簡單的注冊中心和客戶端了纯露,這一篇先說這么多剿骨,喵。