Consul简介
是一套开源的分布式服务发现与配置管理系统,有HashiCorp公司用Go语言开发,提供了微服务系统中的服务治理,配置中心,控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用,以构建全方位的服务网络,总之Consul提供了一整套服务网络解决方案
能干嘛
- 服务发现 支持HTTP和DNS两种发现方式
- 健康检测
- KV存储 key-value的存储方式
- 多数据中心
- 可视化web界面
安装
下载地址
下载后解压至指定目录
配置环境变量后打开命令行界面,输入consul agent -dev
开启本地运行模式,(命令consul --version
查看consul的版本号)访问consul图形化界面:localhost:8500
provider注册Consul
- pom.xml
<!--SpringCloud consul-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
- application.yml
spring:
application:
name: cloud-providerconsul-payment
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: "${spring.application.name}"
consumer注册Consul
pom.xml 和 application.yml同provider注册基本一样,唯一区别在服务名称不一样,剩下的RestTemplate配置类,controller类同注册zookeeper一样
controller
@RestController
@Slf4j
public class OrderConsulController {
public static final String INVOKE_URL = "http://cloud-providerconsul-payment";
@Resource
private RestTemplate restTemplate;
@GetMapping(value = "/consumer/payment/consul")
public String paymentInfo(){
String result = restTemplate.getForObject(INVOKE_URL + "/payment/zk", String.class);
return result;
}
}
ApplicationContexConfig 配置类
@Configuration
public class ApplicationContexConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}