


Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司 用 Go 语言开发。
提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。
它具有很多优点。包括: 基于 raft 协议,比较简洁; 支持健康检查, 同时支持 HTTP 和 DNS 协议 支持跨数据中心的 WAN 集群 提供图形界面 跨平台,支持 Linux、Mac、Windows。
在官网下载Windows的64位版本Consul后,下载的是zip压缩包,将压缩包解压后,里面只有一个consul.exe文件,如图:

双击.exe文件即可安装运行Consul,使用cmd查看版本号信息,为了跟老师的版本一致我也下了v1.6.1:
consul --version

使用开发模式启动
consul agent -dev

通过以下地址可以访问Consul的首页:http://localhost:8500
结果页面,和Eureka一样,有一个前端可视化Web界面:

建Module
cloud-providerconsul-payment8006
改POM
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-consul-discoveryartifactId>
dependency>

写YML

主启动

业务类

测试


http://localhost:8006/payment/consul

建Module
cloud-consumerconsul-order80
改POM
与提供者一样
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-consul-discoveryartifactId>
dependency>

写YML

主启动

配置Bean

业务类

测试

http://localhost/consumer/payment/consul

| 组件名 | 语言 | CAP | 服务健康检查 | 对外暴露接口 | SpringCloud集成 |
|---|---|---|---|---|---|
| Eureka | Java | AP | 可配支持 | HTTP | 已集成 |
| Consul | Go | CP | 支持 | HTTP/DNS | 已集成 |
| ZooKeeper | Java | CP | 支持 | 客户端 | 已集成 |
所谓CAP原则又称CAP定理,指的是在一个分布式系统中,一致性、可用性、分区容错性。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。在分布式架构中,P永远要求被保证,所以当前的分布式架构只有AP和CP两种。因此,根据CAP原理将NoSQL数据库分成了满足CA原则、满足CP原则和满足AP原则三大类:
经典CAP图

AP架构
当网络分区出现后,为了保证可用性,系统B可以返回旧值,保证系统的可用性。
结论:违背了一致性C的要求,只满足可用性和分区容错,即AP

CP架构
当网络分区出现后,为了保证一致性,就必须拒接请求,否则无法保证一致性
结论:违背了可用性A的要求,只满足一致性和分区容错,即CP
