官网:Consul官网
下载地址:Consul下载地址
中文文档:Consul中文文档

特点

  • 服务发现

提供HTTP和DNS两种发现方式

  • 健康监测

支持多种协议,HTTP、TCP、Docker、Shell脚本定制化

  • KV存储

key , Value的存储方式

  • 多数据中心

Consul支持多数据中心

  • 可视化Web界面

启动

在命令窗口consul agent -dev
启动成功后浏览器http://127.0.0.1:8500进入管理页面

配置

  • maven
     <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-consul-discovery -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
  • yml
server:
  port: 8006


spring:
  application:
    name: consul-provider-payment
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${
   spring.application.name}
  • springboot启动类添加@EnableDiscoveryClient注解
    消费端配置和服务提供端配置类似
    只需要添加远程调用服务和负载均衡

@Configuration
public class ApplicationContextConfig {
   

    @LoadBalanced //开启负载均衡
    @Bean
    public RestTemplate getRestTemplate() {
   
        return new RestTemplate();
    }
}

使用:

@RestController
@Slf4j //可以省略
public class OrderConsulController {
   

    public static final String INVOME_URL = "http://consul-provider-payment";

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/consumer/payment/consul")
    public String payment (){
   
        String result = restTemplate.getForObject(INVOME_URL+"/payment/consul",String.class);
        return result;
    }
}

服务都已经注册到 consul