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