SpringCloud04-Consul
1.Consul
- Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp 公司用Go语言开发。
- Consul提供服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。
2.Consul下载、安装和运行。
- 下载地址。https://www.consul.io/downloads。
- 官方文档地址。https://learn.hashicorp.com/tutorials/consul/get-started-install。
- SpringCloud社区地址。https://docs.spring.io/spring-cloud-consul/docs/current/reference/html/。
- 下载后直接解压,得到exe文件。
- 在exe目录运行consul --version,查看版本信息。
- exe目录运行,consul agent -dev,开发模式启动。
- 运行完成访问地址,http://localhost:8500/。
3.创建Consul微服务客户端cloud-consul-provider-payment8006
- pom.xml,其他依赖省略。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
- yml
server:
port: 8006
spring:
application:
name: cloud-provider-payment
cloud:
consul:
host: 127.0.0.1
port: 8500
discovery:
service-name: ${spring.application.name}
- Main
@EnableDiscoveryClient
@SpringBootApplication
public class CloudConsulProviderPayment8006Main {
public static void main(String[] args) {
SpringApplication.run(CloudConsulProviderPayment8006Main.class, args);
}
}
- 其他业务类省略。
4.创建Consul微服务客户端cloud-consul-consumer-order80
- pom.xml、yml、Main、业务类省略。
- 80通过RestTemplate+LoadBalance调用8006。
- 说明,spring-cloud-starter-consul-discovery默认有spring-cloud-starter-loadbalance。
5.CAP理论
- C,一致性;A,可用性;P,分区容错性。
- CAP理论说明了,一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求。
- CA,单点集群,满足—致性,可用性的系统,通常在可扩展性上不太强大。
- CP,满足一致性,分区容忍必的系统,通常性能不是特别高。
- AP,满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
- 对于分布式系统,一般情况下P必须满足。所以一个分布式系统,一般不是AP就是CP。
6.Eureka、Zookeeper和Consul的区别
组件名 |
语言CAP |
服务健康检查 |
对外暴露接口 |
Spring Cloud集成 |
Eureka |
Java |
AP |
可配支持 |
HTTP |
Consul |
Go |
CP |
支持 |
HTTP/DNS |
Zookeeper |
Java |
CP |
支持客户端 |
已集成 |
- Eureka的AP主要体现在自我保护机制中,15分钟内有85%的Client没有发送心跳,就进入自我保护模式,同时不会剔除这些没有发送心跳的Client。破坏了一致性的规则来保证高可用。