Spring Cloud 学习Consul服务注册与发现
程序员文章站
2022-04-15 18:59:04
Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go语言开发。1、概述Consul提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网络,总之Consul提供了一种完整的服务网络解决方案。它具有很多优点,包括:基于raft协议,比较简洁;支持健康检查,同时支持HTTP和DNS协议支持跨数据中心的WAN集群 提供图形界面,跨平台,支持linux,mac,windows。2、安装并运行con....
Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go语言开发。
1、概述
Consul提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网络,总之Consul提供了一种完整的服务网络解决方案。它具有很多优点,包括:基于raft协议,比较简洁;支持健康检查,同时支持HTTP和DNS协议支持跨数据中心的WAN集群 提供图形界面,跨平台,支持linux,mac,windows。
2、安装并运行consul
https://www.consul.io/downloads.html,下载完成后,解压会出现consul.exe文件,在cmd下进入consul目录
访问http://localhost:8500就可以看见consul的界面
3、使用方法
新建cloud-providerconsul-payment8006模块
pom.xml
<dependencies>
<dependency><!-- 引用自己定义的api通用包,可以使用Payment支付Entity -->
<groupId>com.yu.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<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>
<!--SpringCloud consul-server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<!--热部署-->
<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>
yml
server:
port: 8006
spring:
application:
name: consul-provider-payment
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
主启动
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8006 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8006.class, args);
}
}
controller
@RestController
@Slf4j
public class PaymentController {
@Value("${server.port}")
private String serverPort;
@RequestMapping(value = "/payment/consul")
public String paymentConsul(){
return "springCloud--consul:"+serverPort+"\t"+ UUID.randomUUID().toString();
}
}
新建cloud-consumerconsul-order80模块
pom.xml
<dependencies>
<dependency><!-- 引用自己定义的api通用包,可以使用Payment支付Entity -->
<groupId>com.yu.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<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>
<!--SpringCloud consul-server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<!--热部署-->
<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>
yml
server:
port: 8090
spring:
application:
name: cloud-consumer-order
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
主启动
@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerConsul8090 {
public static void main(String[] args) {
SpringApplication.run(ConsumerConsul8090.class, args);
}
}
配置Bean
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
controller
@RestController
@Slf4j
public class ConsumerController {
public static final String INVOKE_URL = "http://consul-provider-payment";
@Resource
private RestTemplate restTemplate;
@GetMapping(value = "/consumer/consul/zk")
public String paymentInfo(){
String result = restTemplate.getForObject(INVOKE_URL + "/payment/consul", String.class);
return result;
}
}
测试
本文地址:https://blog.csdn.net/weixin_43166443/article/details/109645751
上一篇: 环形链表 java题解
下一篇: 手写数据结构二叉堆
推荐阅读
-
基于 Consul 实现 MagicOnion(GRpc) 服务注册与发现
-
微服务学习笔记(2)——使用Consul 实现 MagicOnion(GRpc) 服务注册和发现
-
第1章 Spring Cloud 构建微服务架构(一)服务注册与发现
-
详解Spring Cloud Consul 实现服务注册和发现
-
Spring Cloud Alibaba(1) 实现服务注册与发现 Nacos Discovery
-
Nacos快速入门(三):Spring Cloud Alibaba Nacos实现服务注册与发现
-
SpringCloud 学习笔记01 服务注册与发现
-
SpringCloud学习笔记(二):服务注册与发现Eureka
-
spring cloud系列学习(SpringCloud之服务注册之Ribbon负载均衡)
-
SpringCloud_2Eureka服务注册与发现学习笔记