consul 是一套开源的分布式服务发现和配置管理系统
官网:https://www.consul.io/intro/index.html
- 服务注册发现(提供http和dns两种方式)
- 健康监测(支持多种方式、Http、Tcp、Docker、Shell脚本定制)
- KV存储(Key、Value的存储方式)
- 多数据中心(Consul支持多数据中心)
- 可视化Web界面
下载地址:www.consul.io/downloads.html
使用教程:http://www.springcloud.cc/spring-cloud-consul.html
安装运行
https://learn.hashicorp.com/consul/getting-started/install.html
使用开发模式启动: consul --version
consul agent -dev
可以通过:http://localhost:8500
3.服务的提供者(cloud-paymentconsul-payment8006)org.example cloud-api-commons 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.cloud spring-cloud-starter-consul-discovery org.springframework.boot spring-boot-starter-actuator 2.3.1.RELEASE org.springframework.boot spring-boot-devtools runtime true org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test
server:
port: 8006
spring:
application:
name: consul-provider-payment
#consul注册中心地址
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentConsul8006 {
public static void main(String[] args) {
SpringApplication.run(PaymentConsul8006.class,args);
}
}
@RestController
public class PayMentController {
@Value("${server.port}")
private String serverPort;
@RequestMapping(value = "/payment/consul")
public String paymentConsul() {
return "spring cloud with consul" + serverPort +"t"
+ UUID.randomUUID().toString();
}
}
http://localhost:8006/payment/consul
org.example cloud-api-commons 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.cloud spring-cloud-starter-consul-discovery org.springframework.boot spring-boot-starter-actuator 2.3.1.RELEASE org.springframework.boot spring-boot-devtools runtime true org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test
server:
port: 80
spring:
application:
name: cloud-consumer-order
#consul注册中心地址
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
@SpringBootApplication
@EnableDiscoveryClient
public class OrderConsulMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderConsulMain80.class,args);
}
}
@Configuration
public class ApplicationConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
@RestController
public class ConsulController {
private final static String SERVICE_NAME = "http://consul-provider-payment";
@Resource
private RestTemplate restTemplate;
@GetMapping(value = "/consumer/payment/consul")
public String paymentInfo() {
String result = restTemplate.getForObject(SERVICE_NAME+"/payment/consul",String.class);
return result;
}
}
http://localhost/consumer/payment/consul



