SpringCloud整合Consul作为注册中心

SpringCloud整合Consul作为注册中心

SpringBoot版本:2.0.3    SpringCloud版本:Finchley.SR2

官网下载consul

自行百度!
1、解压完后可看到只有一个consul.exe执行程序
解压完后可看到只有一个consul.exe程序
2、在存放consul的盘符地址那里输入cmd回车
SpringCloud整合Consul作为注册中心_第1张图片
3、之后会进入本路径下命令窗口,输入consul.exe agent -dev启动consul
-dev:启动为开发环境
SpringCloud整合Consul作为注册中心_第2张图片4、在浏览器输入localhost:8500/进入consul管理界面
SpringCloud整合Consul作为注册中心_第3张图片
至此consul服务器启动成功! 我们开始代码编写~

1、创建父项目(POM)

引入所需依赖

	
		org.springframework.boot
		spring-boot-starter-parent
		2.0.3.RELEASE
	

	
		
			org.springframework.boot
			spring-boot-starter-actuator
		
		
			org.springframework.cloud
			spring-cloud-starter-consul-discovery
		
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
	

	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				Finchley.SR2
				pom
				import
			
		
	
	
	
	
		
			spring-milestones
			Spring Milestones
			https://repo.spring.io/libs-milestone
			
				false
			
		
	

2、创建服务提供者Provider_6001

编辑bootstrap.yml文件

server: 
   port: 6001

spring: 
   application: 
      name: consul-provider		#指定服务名称
   cloud: 
      host: localhost      #consul地址
      port: 8500           #端口号,默认为8500
      discovery: 			
         serviceName: provider-6001		#指定服务实例名称

创建启动类

@SpringBootApplication
@EnableDiscoveryClient	//Consul注册注解
public class Provider_6001 {
	public static void main(String[] args) {
		SpringApplication.run(Provider_6001.class, args);
	}

}

新建controller

@RestController
public class PortController {

	@RequestMapping("/getPort")
	public String port() {
		return "我是:provider-6001";
	}
}

运行Provider_6001,启动成功后刷新consul界面
SpringCloud整合Consul作为注册中心_第4张图片
可以看到我们刚刚的提供者已经成功注册

3、创建服务消费者Consumer_7000

引入feign和ribbon依赖

	
			
			org.springframework.cloud
			spring-cloud-starter-netflix-ribbon
		
		
			org.springframework.cloud
			spring-cloud-starter-openfeign
		
	

编辑bootstrap.yml文件

server: 
   port: 7000

spring: 
   application: 
      name: consul-consumer
   cloud: 
      host: localhost
      port: 8500
      discovery: 
         serviceName: consumer-7000

创建启动类

@SpringBootApplication
@EnableFeignClients
@EnableDiscoveryClient
public class Consumer_7000 {

	public static void main(String[] args) {
		SpringApplication.run(Consumer_7000.class, args);
	}

}

编写FeignService接口

@FeignClient("consul-provider")
public interface FeignService {

	@RequestMapping("/getPort")
	public String getPort();
}

编写controller

@RestController
public class PortController {

	@Autowired
	private FeignService feignService;
	
	@RequestMapping("/getPort")
	public String port() {
		return feignService.getPort();
	}
}

启动消费者服务
SpringCloud整合Consul作为注册中心_第5张图片
现在消费者和提供者都注册成功

浏览器调用消费者接口
SpringCloud整合Consul作为注册中心_第6张图片
输入localhost:7000/getPort后可以看到服务器返回数据成功,至此consul作为注册中心完成!

创建第二个提供者Provider_6000搭建集群

不再罗列具体代码,只需要复制provider_6001项目在把配置文件中的端口改为6000,controller里的6001换为6000即可!

启动provider_6000
SpringCloud整合Consul作为注册中心_第7张图片
可以看到consul-provider服务名称的Health Checks的值为4,点击consul-provider服务进入详细查看
SpringCloud整合Consul作为注册中心_第8张图片
可以看到我们刚刚启动的两个提供者服务都已经成功注册,至此集群搭建成功!

之后打开浏览器多次访问localhost:7000/getPort,会发现返回的数据中端口在变,这就实现了轮询效果!

总结

1、同一个服务集群spring-application-name名字必须一致,serviceName必须不一致!!!
2、上述实现只是一个简单实现,还有很多consul配置如指定实例id,时间等等信息童鞋们都可以去 官方文档查看,这里就不举例了~~
3、童鞋们学会后可以试着搭建consul注册中心的高可用集群
4、consul除作为注册中心外还可以当作配置中心使用,consul界面中导航栏有一个Key/Value
SpringCloud整合Consul作为注册中心_第9张图片
这个功能就是配置中心要使用的,下次讲解consul作为配置中心哦~ 谢谢关注!!!

你可能感兴趣的:(SpringCloud)