Spring Cloud 学习Consul服务注册与发现
程序员文章站
2024-01-11 16:33:22
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
推荐阅读
-
Spring Cloud 学习Consul服务注册与发现
-
Spring Cloud Eureka 注册与发现操作步骤详解
-
一起来学Spring Cloud | 第二章:服务注册和发现组件 (Eureka)
-
Spring Cloud Alibaba系列-第四节-创建生产者与消费者服务,注册到Nacos监控服务
-
spring cloud consul使用ip注册服务的方法示例
-
spring cloud consul注册的服务报错critical的解决
-
详解使用Spring Cloud Consul实现服务的注册和发现
-
详解使用Spring Cloud Consul实现服务的注册和发现
-
Spring-cloud 服务发现与消费(以ribbon为例)
-
SpringCloud之服务注册与发现Spring Cloud Eureka实例代码