SpringCloud学习:Consul组件的介绍以及使用

时间:2024-10-16 12:05:42
  • Consul是什么,能干什么
    • Consul是SpringCloud提供的用于服务注册发现、分布式配置中心的组件,
  • Consul:服务注册
    1. 首先在要注册进Consul的微服务中导入Consul的POM依赖
    2. 修改YML文件,给出该微服务的名字(spring.application.name)以及consul的配置(spring.cloud.consul.port,host,discovery…)
    3. 在微服务的主启动类上标注@EnableDiscovery…注解来表示该微服务可以被发现进入Consul
    4. 在官网上下载Consul,在cmd中使用consul -v查看是否成功,然后在cmd输入consul agent -dev (管理员模式)启动Consul服务,并在浏览器输入 https://localhost:8500 进入Consul可视化界面
  • Consul作为服务注册与其他(eureka、zoopking)的区别
    1. euraka是Java编写且满足AP,Consul是Go编写且满足CP
    2. Consul不仅可以服务注册,也可以作为分布式配置中心
    3. CAP:consistency(一致性)、avirailable(可用性即性能)、p(分区容忍)
      1. 最多只可同时满足两个性质;
      2. 一致性是指对于两个同步的数据库,当某一个数据修改且另一个未同步时,另一个是不可以访问的,来保证一致性
      3. 可用性是指当某一个数据修改且另一个未同步时,另一个也可以访问来保证性能
  • Consul:分布式配置中心,bootswarp.yml,KV Store,及时动态刷新
    1. 为什么要用:对于微服务来说,application.yml是独占的,是用户级别的,每一个微服务均有一个;此时若修改某些公有的配置则必须要修改每一个微服务的application.yml,会使得工作量巨大且不好管理,故可以引入bootswarp.yml作为系统级别的配置文件,每一个微服务均会先导入bootswarp.yml中的配置再导入application.yml中的配置(bootswarp.yml优先级高于application.yml
    2. 先导入Consul分布式配置中心所需要的POM依赖(consul.config)
    3. 将全局的配置(与spring.cloud相关的如consul等)从application.yml中提取出放入bootswarp.yml中即可
    4. **使用@Value(“${}”)可以对属性赋予配置文件中的值
    5. KV Store在Consul中存储某一微服务集群所要用到的公共的配置,在图形化界面中的KV选项中创建 config/微服务名-dev,prod/data 形式的文件即可,此时在微服务中就可以使用@Value(“${}”)可以对属性赋予配置文件中的值
    6. 为确保KVStore中属性修改后能及时反应到微服务,可以在微服务的主启动类上加入@Fresh…注解来开启及时动态刷新
  • Consul配置持久在这里插入图片描述
  • DiscovertClient:在微服务中获取Consul中注册的服务列表
    1. 直接在需要的地方定义 DiscoveryClient类型 的属性,并使用@Resource自动装配,并使用getService()来获得Consul中的全部服务,然后使用getInstance(‘服务名’)来获取对应的微服务信息