Consul 初学笔记(Spring Cloud 集成)

Consul 初学笔记(Spring Cloud 集成)

1. 什么是 Consul?

image-20241021234416983

Consul 是 HashiCorp 提供的分布式服务发现和配置管理系统,具备以下功能:

  • 服务发现:支持多个服务注册和服务发现机制。
  • 健康检查:自动检查服务的健康状态。
  • Key/Value 存储:支持分布式的配置管理。
  • 多数据中心支持:适合跨数据中心的分布式架构。
  • 服务网格:可以和 Envoy 集成,支持服务网格管理。

2. 为什么使用 Consul 与 Spring Cloud 集成?

  • 服务发现:Spring Cloud Consul 可以自动注册服务,并允许其他微服务通过 Consul 查找到它们。
  • 分布式配置管理:利用 Consul 的 Key/Value 存储机制,Spring Cloud 可以动态地加载和更新配置。
  • 健康检查:可以自动对注册的服务进行健康检查,确保服务稳定运行。

3. 环境准备

3.1 下载和安装 Consul

我们可以从 Consul 官方下载页面 获取适用于不同操作系统的 Consul 可执行文件。

  • 安装后,执行 consul agent -dev 启动 Consul 在开发模式下运行。

    image-20241021234458873

  • 浏览器访问 http://localhost:8500,可以看到 Consul 的管理界面。

    image-20241021234538708

3.2 引入 Spring Cloud Consul 依赖

在 Spring Boot 项目中,添加以下依赖到 pom.xml

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>

3.3 在 bootstrap.yml 中配置 Consul

spring:
  application:
    name: cloud-provider-payment
  cloud:
    consul:
      host: localhost    # Consul 服务器地址
      port: 8500         # Consul 服务器端口
      discovery:
        service-name: ${spring.application.name}
        register: true   # 将服务注册到 Consul
        prefer-ip-address: true

4. 服务注册与发现

4.1 启动服务注册

  1. 启动 Consul:

    consul agent -dev
    

    访问 http://localhost:8500,确保 Consul 正常运行。

  2. 启动 Spring Boot 应用,应用启动后会自动注册到 Consul 中,你可以在 Consul UI 界面查看到注册的服务。

4.2 服务发现

当其他服务需要调用 cloud-provider-payment 时,可以通过服务名进行调用,Spring Cloud LoadBalancer 会从 Consul 中拉取服务地址,进行负载均衡。

RestTemplate 负载均衡配置:

@Bean
@LoadBalanced
public RestTemplate restTemplate() {
    return new RestTemplate();
}

在代码中使用:

@RestController
@RequestMapping("/order")
public class OrderController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/getPayment/{id}")
    public String getPayment(@PathVariable("id") Long id) {
        return restTemplate.getForObject("http://cloud-provider-payment/pay/get/" + id, String.class);
    }
}

image-20241021234640329

5. Consul 配置管理

除了服务发现,Consul 还可以用来管理分布式配置。通过 Spring Cloud Consul,服务可以自动从 Consul 的 K/V 存储中读取配置。

5.1 在 Consul 中添加配置

可以通过 Consul 的 UI 或者 CLI 来添加配置。例如,创建一个 Key config/cloud-provider-payment/data 并设置值。

5.2 在 bootstrap.yml 中启用 Consul 配置

spring:
  cloud:
    consul:
      config:
        enabled: true
        default-context: application
        format: yaml

5.3 读取 Consul 配置

在 Spring Boot 应用中,可以像读取普通配置一样读取 Consul 中的配置。

@Value("${config.info}")
private String configInfo;

6. 常用命令

启动 Consul

consul agent -dev

注册服务的健康检查

consul services register service.json

检查 Consul 状态

consul members

查看 Consul 的 Key/Value 配置

consul kv get config/cloud-provider-payment/data

7. 总结

Consul 作为分布式服务发现和配置管理工具,与 Spring Cloud 集成后,能够非常方便地实现微服务的注册、发现和健康检查。通过 Key/Value 存储,还能简化分布式配置的管理。对于微服务架构,Consul 提供了一个稳定且灵活的解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值