尚硅谷周阳老师的课程,还是挺不错的,这是视频地址,https://www.bilibili.com/video/BV18E411x7eT,可以跟着学习,此为个人学习笔记,备后期查看.
简介
SpringCloud的文档地址:
https://cloud.spring.io/spring-cloud-static/spring-cloud-consul/2.2.2.RELEASE/reference/html/
Consul是一个分布式高可用的系统,它有以下特点:
服务发现:Consul客户能够注册一个服务,比如api或mysql,其他客户可以在Consul上查询一个指定服务的提供者。Consul提供DNS和HTTP的服务发现接口。
健康检查:Consul可以灵活的使用脚本等来检测注册在其上的服务是否可用,不健康的服务Consul也能够灵活处理,比如提供服务的主机内存使用超过90%,我们可以配置让Consul不要把这样的服务提供给服务调用者。
key/value存储:这个功能和etcd有些类似,可以通过HTTP API方便地使用。
多数据中心支持:Consul支持开箱即用的多数据中心支持,这意味着用户不用建立额外的抽象层让业务扩展到各个区域。
一. 安装并运行Consul
1. 下载安装
官方地址:https://learn.hashicorp.com/consul/getting-started/install.html
下载地址:https://www.consul.io/downloads.html
根据自己的操作系统下载相应的版本(本机测试使用了windows 64位版)
启动命令-使用开发者模式启动
将下载下来的压缩包解压释放到指定位置,找到解压释放的文件,根据系统情况,执行相应的命令(下面是windows下的执行命令)
consul agent -dev
2. 测试:http://localhost:8500/
二. 工程模块的修改内容
1. pom.xml添加新依赖
<!--导入consul依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
2. yml文件配置
server:
port: 8006
spring:
application:
name: consul-provider-payment
cloud:
consul:
port: 8500
discovery:
service-name: ${spring.application.name}
3. 主启动程序实现
@SpringBootApplication
public class PaymentMain8006 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8006.class, args);
}
}
4. 业务层代码实现
@RestController
@Slf4j
public class PaymentController {
@Value("${server.port}")
private String serverport;
@RequestMapping(value="/payment/consul")
public String paymentConsul(){
return "springcloud with consul:"+serverport+"\t"+ UUID.randomUUID().toString();
}
}
5. 查看在Consul上的注册情况
三. 3个注册中心的异同点
1. AP架构-Eureka
2.CP架构-Zookeeper/Consul