SpringCloud学习笔记——服务注册中心——Consul
参考:尚硅谷2020最新版SpringCloud(H版&alibaba)——周阳
3. Consul
简介
-
官网https://www.consul.io/intro/index.html
中文官网https://www.springcloud.cc/spring-cloud-consul.html
-
能干嘛
- 服务发现:提供HTTP和DNS两种方式
- 健康监测:支持多种方式,HTTP、TCP、Docker、Shell脚本定制化
- KV存储:Key、Value的存储方式
- 多数据中心:Consul支持多数据中心
- 可视化web界面
-
下载地址
https://www.consul.io/downloads
-
windows下安装教程
解压就一个consul.exe文件,安装成功!
-
linux下安装教程
-
下载consul
wget https://releases.hashicorp.com/consul/1.8.0/consul_1.8.0_linux_amd64.zip
-
解压consul
unzip consul_1.8.0_linux_amd64.zip
-
测试 consul
./consul
-
查看版本
./consul version
-
启动consul
./consul agent -dev -ui -node=consul-dev -client=服务器内网ip
-
访问测试:服务器外网ip:8500
-
关闭 consul
ctrl+c
-
-
查看版本号
consul --version
-
使用开发者模式启动
进入目录,打开命令行输入
consul agent -dev
-
访问Consul首页
地址:http://localhost:8500
创建服务提供者并注册
-
创建子模块,子模块名称
cloud-providerconsul-payment8006
-
pom依赖
<dependencies> <!-- 引入自己定义的api通用包,可以使用Payment支付Entity --> <dependency> <groupId>com.naclo</groupId> <artifactId>cloud-api-commons</artifactId> <version>${project.version}</version> </dependency> <!--SpringCloud consul-server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency> <!-- SpringBoot整合Web组件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--日常通用jar包配置--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>RELEASE</version> <scope>test</scope> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>RELEASE</version> <scope>test</scope> </dependency> </dependencies>
-
创建application.yml
###consul服务端口号 server: port: 8006 spring: application: name: consul-provider-payment ####consul注册中心地址 cloud: consul: host: localhost port: 8500 discovery: #hostname: 127.0.0.1 service-name: ${spring.application.name}
-
创建主启动类PaymentMain8006
@SpringBootApplication @EnableDiscoveryClient public class PaymentMain8006 { public static void main(String[] args) { SpringApplication.run(PaymentMain8006.class, args); } }
-
编写PaymentController
@RestController @Slf4j public class PaymentController { @Value("${server.port}") private String serverPort; @RequestMapping(value = "/payment/consul") public String paymentConsul() { return "springcloud with consul: " + serverPort + "\t " + UUID.randomUUID().toString(); } }
-
启动,测试
-
访问http://localhost:8500/
-
访问http://localhost:8006/payment/consul
返回
springcloud with consul: 8006 a1a1653a-54ac-44cc-ab09-6b2f7b5b8a22
-
创建服务消费者并注册
-
创建子模块,子模块名称
cloud-consumerconsul-order80
-
pom依赖
<dependencies> <!--SpringCloud consul-server --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency> <!-- SpringBoot整合Web组件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--日常通用jar包配置--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
-
创建application.yml
###consul服务端口号 server: port: 80 spring: application: name: cloud-consumer-order ####consul注册中心地址 cloud: consul: host: localhost port: 8500 discovery: #hostname: 127.0.0.1 service-name: ${spring.application.name}
-
创建主启动类OrderConsulMain80
@SpringBootApplication @EnableDiscoveryClient //该注解用于向使用consul或者zookeeper作为注册中心时注册服务 public class OrderConsulMain80 { public static void main(String[] args) { SpringApplication.run(OrderConsulMain80.class, args); } }
-
引入RestTemplate
@Configuration public class ApplicationContextConfig { @Bean @LoadBalanced public RestTemplate getRestTemplate() { return new RestTemplate(); } }
-
编写PaymentController
@RestController @Slf4j public class OrderConsulController { public static final String INVOKE_URL = "http://consul-provider-payment"; @Resource private RestTemplate restTemplate; @GetMapping(value = "/consumer/payment/consul") public String paymentInfo() { String result = restTemplate.getForObject(INVOKE_URL + "/payment/consul", String.class); return result; } }
-
启动,测试
-
访问http://localhost:8500/
-
访问http://localhost:80/consumer/payment/consul
返回
springcloud with consul: 8006 16b48677-d49f-4fa9-9534-cfa4d5b18f9e
-