SpringCloud-02 Consul服务注册与发现

Consul是一种用于服务发现、配置和分布式协调的开源工具。Consul提供了以下主要功能:
1.服务发现:Consul允许开发人员在微服务架构中注册和发现服务。它可以自动检测新添加的服务并为它们分配唯一的网络地址。

2.健康检查:Consul可以定期检查注册的服务的健康状况,以确保它们正常运行并能够提供服务。如果服务不可用,Consul会自动将其从服务注册表中移除。

3.分布式键值存储:Consul提供了一个分布式键值存储,可以用于存储配置信息、应用程序状态等。

4.多数据中心支持:Consul支持跨多个数据中心的部署,并提供了强大的数据中心间的服务发现和同步功能。

5.安全性:Consul提供了基于ACL的安全机制,可以通过访问控制列表来限制对服务和资源的访问。

consul agent -dev //开发者模式启动consul,打来后不要关闭cmd窗口
url地址: http://localhost:8500
把8001端口的服务注册进consul

//在对应端口的pom文件添加依赖
<!--SpringCloud consul discovery -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

spring:
  application:
    name: cloud-consumer-order
//添加yml文件配置
####Spring Cloud Consul for Service Discovery
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

在启动类上添加注解	@EnableDiscoveryClient	再启动

在这里插入图片描述

//80端口的controller类中调用8001端口
public static final String paymentSrv_URL = "http://cloud-payment-service";

//80端口下config下RestTemplateConfig类添加@LoadBalanced标签
@Configuration
public class RestTemplateConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

除了常见的Consul(CP) 还有Eureka(AP) Zookeeper(CP)
CP:强调一致性
AP:强调可用性

当下每个微服务都有application.yml配置文件,繁琐且不易修改,这亦可以利用Consul解决

//添加pom依赖
<!--SpringCloud consul config-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

 //bootstrap.yml内容
 spring:
  application:
    name: cloud-payment-service
    ####Spring Cloud Consul for Service Discovery
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}
      config:
        profile-separator: '-' # default value is ",",we update '-'
        format: YAML

  # config/cloud-payment-service/data
  #       /cloud-payment-service-dev/data
  #       /cloud-payment-service-prod/data


 //application.yml内容
 server:
  port: 8001

# ==========applicationName + druid-mysql8 driver===================
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db2024?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
    username: root
    password: root
  profiles:
    active: dev # 多环境配置加载内容dev/prod,不写就是默认default配置

# ========================mybatis===================
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.dc.cloud.entities
  configuration:
    map-underscore-to-camel-case: true



//在consul添加配置,注意配置文件夹格式

//在controller中添加
   @Value("$server.port")
    private String port;

    @GetMapping("/pay/get/info")
    public String getInfoByConsul(@Value("${dc.info}") String dcInfo){
        return "dcInfo:" + dcInfo+"\t"+"port:" + port;
    }

Consul 动态及时刷新

//启动类添加 @RefreshScope 注解

//修改bootstrap.yml配置		但一般不要改,默认55秒
        watch:
          wait-time: 1

Consul持久化配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值