注冊服務到服務中心(Consul)


注冊服務到服務中心(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官網查到。
Alt text

或者使用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控制界面可以看到服務已經注冊好了:
Alt text
點擊service-provider可以看到該服務只有一個微服務:
Alt text

負載均衡

我們參照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服務提供者已經出現了兩個服務提供者:
Alt text

源碼

Github倉庫:https://github.com/sunweisheng/spring-cloud-example


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM