一、基本介绍
Consul 是一套开源的分布式发现和配置管理系统,由 Hashicorp 公司使用Go语言开发,官网https://www.consul.io,中文文档地址 https://www.springcloud.cc/spring-cloud-consul.html 。提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能可以单独使用,也可以构建全方位的服务网络。
二、下载安装
1、下载
进入官网后,点击Download下载页,也可以直接点击链接 https://www.consul.io/downloads.html 下载。进入下载页后根据自己的系统版本选择下载对应的安装包。
2、将下载的文件解压,解压后只有一个文件 consul.exe 。
3、在解压目录的文件夹下打开命令行窗口,输入 consul --version 便可以查看该版本信息。
4、在命令行可以通过 consul agent -dev 使用开发模式启动,默认端口为 8500,在浏览器地址栏输入http://localhost:8500便可以访问到consul控制界面。
三、服务注册
1、新建一个服务提供者模块,修改pom文件。
<dependencies>
<!--引入consul server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<!--引入自己定义的包-->
<dependency>
<groupId>com.xhanglog.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<!--spring 整合web组件-->
<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>
<!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2、写application.yml 文件
server:
# 8006表示注册到consul服务器的支付服务提供者端口号
port: 8006
spring:
application:
# 服务别名---注册consul到注册中心的名称
name: cloud-provider-payment
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
3、在主启动类上加注解 @EnableDiscoveryClient。
4、启动项目,在浏览器输入地址可以发现该服务以及被注册。
5、消费者服务同以上步骤一样。
四、CAP原则
CAP原则指的是一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
- AP架构:当网络分区出现后,为保证可用性,系统B可以返回旧值,保证系统的可用性。Eureka就是一种AP架构。
- CP架构:当网络分区出现后,为保证一致性,就必须拒绝请求,返回错误信息或提示。Zookeeper和Consul就是一种CP架构,当服务断掉之后,马上把服务中剔除。
案例代码地址:https://github.com/xhanglog/springcloud-learning