SpringCloud-注册中心-Consul学习记录
记录Consul作为注册中心的使用方法
前言
Consul是HashiCorp公司开发的一套开源分布式服务发现和配置管理系统,开发语言GO。
一、Consul相关链接
官网首页:
https://www.consul.io/
官方下载地址:
https://www.consul.io/downloads
官方示例:
https://learn.hashicorp.com/consul
中文文档:
https://www.springcloud.cc/spring-cloud-consul.html
二、使用步骤
1.下载&安装Consul
window版consul解压后只有一个exe程序非常简单
2.启动Consul
打开命令行,跳转到consul.exe所在目录并运行,可以看到consul命令提示
启动consul
输入命令:consul agent -dev
浏览器地址栏输入:http://127.0.0.1:8500/
如果启动成功会打开consul管理页面
3.代码及配置
添加依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
</dependencies>
修改yml配置
server:
port: 80
spring:
application:
name: provider-consul
cloud:
consul:
host: 127.0.0.1
# consul端口
port: 8500
discovery:
# 注册的服务名
service-name: ${spring.application.name}
# 健康检查接口
healthCheckPath: /health
# 健康检查时间间隔
healthCheckInterval: 15s
修改启动类,添加注解 @EnableDiscoveryClient
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderConsulApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderConsulApplication.class, args);
}
}
启动后,服务可以在Consul管理界面看到
4.服务调用
测试以Consul为注册中心的两个服务能否相互访问
创建测试方法供其他服务调用
@RestController
@RequestMapping("test")
public class TestController {
@GetMapping
public String test(){
return "provider: "+UUID.randomUUID().toString();
}
}
调用方使用RestTemple调用提供方服务
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getTemplate(){
return new RestTemplate();
}
}
调用方编写测试方法
@RestController
@RequestMapping("/consumerTest")
public class ConsumerTestController {
private final static String PROVIDER_URL = "http://provider-consul";
@Resource
private RestTemplate restTemplate;
@GetMapping
public String consumerTest(){
return restTemplate.getForObject(PROVIDER_URL+"/test",String.class);
}
}
总结
对Consul有了初步的了解,后续研究其他功能。