另一种服务注册中心使用:Consul
1 Consul简介
1.1 介绍
- Consul是一套开源的分布式服务发现和配置管理系统
- 提供微服务系统中的服务治理,配置中心,控制总线等功能
1.2 功能
- 服务发现:提供http和dns两种发现方式
- 健康监测:支持多种方式,http,tcp,docker,shell脚本定制化
- KV存储:key,value存储方式
- 多数据中心:Consul支持多数据中心
- 可视化Web界面
1.3 下载地址
https://www.consul.io/downloads
1.4 使用教程
2 Consul安装
- (2)命令行:
consul agent -dev
进行打开
3 服务端安装consul
- (1)创建项目
cloud-provider-consul-payment8006
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
|
1 2 3 4 5 6 7 8 9 10 11 12
| server: port: 8006
spring: application: name: consul-payment-service cloud: consul: host: localhost port: 8500 discovery: service-name: ${spring.application.name}
|
1 2 3 4 5 6 7
| @SpringBootApplication @EnableDiscoveryClient public class PaymentMain8006 { public static void main(String[] args) { SpringApplication.run(PaymentMain8006.class, args); } }
|
1 2 3 4 5 6 7 8 9 10 11
| @RestController public class PaymentController {
@Value("${server.port}") private String serverPort;
@GetMapping("/payment/consul") public String paymentConsul() { return "spring-cloud with consul, port: " + serverPort; } }
|
4 客户端安装consul
1 2 3 4 5 6
| server: port: 81
spring: application: name: consul-order-service
|
1 2 3 4 5 6 7
| @Configuration public class ApplicationContextConfig { @Bean public RestTemplate getTemplate() { return new RestTemplate(); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| @RestController public class OrderConsulController {
private static final String PAYMENT_URL = "http://consul-payment-service";
@Autowired private RestTemplate restTemplate;
@GetMapping("/consumer/payment/consul") public String paymentInfo() { return restTemplate.getForObject(PAYMENT_URL + "/payment/consul", String.class); } }
|
5 三种注册中心的异同
组件名 |
语言 |
CAP |
服务健康检查 |
对外暴露接口 |
Spring Cloud集成 |
Eureka |
Java |
AP |
可配支持 |
HTTP |
已集成 |
Zookeeper |
Java |
CP |
支持 |
客户端 |
已集成 |
Consul |
Java |
CP |
支持 |
HTTP/DNS |
已集成 |
- CAP:
- C:Consistency(强一致性)
- A:Availability(可用性)
- P:Partition tolerance(分区容错性)
- AP:Eureka
- CP:Zookeeper / Consul