注冊服務到服務中心(Consul)
添加POM文件中的依賴
在POM文件添加如下依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
spring-boot-starter-actuator負責健康檢查,spring-cloud-starter-consul-discovery負責對Consul的支持。
在引用spring-cloud-starter-consul-discovery時必須明確版本號,我們這個項目BOOT的版本是2.1.8.RELEASE,spring-cloud-starter-consul-discovery版本號是2.1.3.RELEASE,可以在Spring Cloud官網查到。
或者使用dependencyManagement進行版本號的管理,在POM文件里添加如下內容可以不指明spring-cloud-starter-consul-discovery的版本號:
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
</properties>
<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>
<dependencies>
.....
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
.....
</dependencies>
配置文件
spring.application.name=spring-cloud-provider-01
server.port=9000
spring.cloud.consul.host=localhost
#consul端口可以自行修改
spring.cloud.consul.port=8500
#注冊到consul的服務名稱
spring.cloud.consul.discovery.serviceName=service-provider
啟動類
SpringCloudProviderApplication.java
@SpringBootApplication
//支持服務發現
@EnableDiscoveryClient
public class SpringCloudProviderApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudProviderApplication.class, args);
}
}
啟動服務
啟動服務后自動完成注冊服務的過程,回到consul控制界面可以看到服務已經注冊好了:
點擊service-provider可以看到該服務只有一個微服務:
負載均衡
我們參照spring-cloud-provider項目在復制一個微服務項目spring-cloud-provider-second,並對HelloWorld類進行修改以便區分:
spring-cloud-provider項目中的HelloWorld類:
@RestController
public class HelloWorld {
@RequestMapping("/hello")
public String Hello(@RequestParam String name){
return "你好!" + name + ",這是第一個微服務。";
}
}
spring-cloud-provider-second項目中的HelloWorld類:
@RestController
public class HelloWorld {
@RequestMapping("/hello")
public String Hello(@RequestParam String name){
return "你好!" + name + ",這是第二個微服務。";
}
}
修改spring-cloud-provider-second項目的端口號:
spring-cloud-provider-second項目中的application.properties文件內容:
spring.application.name=spring-cloud-provider-02
server.port=9001
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
#注冊到consul的服務名稱
spring.cloud.consul.discovery.serviceName=service-provider
啟動spring-cloud-provider-second項目,查看service-provider服務提供者已經出現了兩個服務提供者:
源碼
Github倉庫:https://github.com/sunweisheng/spring-cloud-example