consul 同 nacos 一样也可以完成【服务注册与发现】、【分布式配置中心】的功能,但企业主流还是 alibaba 的 nacos,所以 consul 只是简单介绍下使用
下载安装和启动
- 地址:https://developer.hashicorp.com/consul/install?product_intent=consul#windows (选386)
- 解压后只有一个 exe 文件,在这个目录下运行命令
consul --version
能正确输出 consul 版本 - 还是在 exe 所在目录,执行
consul agent -dev
consul 就启动了 - 浏览器访问
localhost:8500
使用案例
-
在客户端先导入依赖
<!-- 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> <!--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>
-
客户端启动类使用注解
@RefreshScope // 动态刷新配置 @EnableDiscoveryClient // 当前工程会被作为一个服务注册到 consul 上 @SpringBootApplication public class SpringbootApplication { public static void main(String[] args) { SpringApplication.run(SpringbootApplication.class,args); } }
参考官网
-
配置文件,需要 bootstrap.yml,还是看官网怎么说
工程里面导入了
spring-cloud-starter-bootstrap
依赖,所以现在还差 bootstrap.yml 。bootstrap 和 application 这两个都是配置文件,bootstrap 优先级更高bootstrap.yml 如下:
spring: application: name: my-consul-test-service # 这里开始配置 consul 的配置 cloud: consul: host: localhost port: 8500 discovery: service-name: ${spring.application.name} config: profile-separator: '-' # 这个玩意也很操蛋,国内绝不可能使用英文逗号作为分隔符,但是 consul 就是这样,太别扭了改一下,改为 - format: YAML
application.yml 就是常规的配置了,比如服务端口,mabatis、数据源、mvc 等等