Consul
consul能够干什么?
哪里学习
中文文档
http://springcloud.cc/spring-cloud-consul.html
英文文档
https://learn.hashicorp.com/tutorials/consul/get-started-install
安装手册
https://www.consul.io/intro/getting-started/install.html
文档截图
运行consul服务
切换到安装目录 运行命令 consul agent -dev
运行成功后,访问地址localhost:8500
页面效果
项目演练
- pom.xml
在之前的基础上,重新引入consul依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
- yml配置文件
注:
- consul是在spring.cloud.consul下面的。
- 主启动类
总结
都是服务注册中心,其实不管是Eureka还是zookeeper还是consul包括后面要学习的nacos都是一样的。写代码步骤
1、创建一个spring-boot项目
2、在pom.xml引入使用的依赖,一般来讲这些spring-cloud都是集成好了的,直接使用就好了。所以一般见到的依赖的
zookeeper支持
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
eureka支持
--客户端
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
--服务端
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
consul支持
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
3、主启动类
【eureka】
eureka服务端
//开启EurekaServer
@EnableEurekaServer
eureka客户端【这个部分服务提供者还是消费者,反正都要把服务注册到eureka注册中心,所以都叫客户端】
//Eureka客户端
@EnableEurekaClient
【zookeeper】
什么都不加
【consul】
什么都不加
4、业务类Controller
@Configuration
public class MainConfig {
@Bean
@LoadBalanced
public RestTemplate buildRestTemplate(){
return new RestTemplate();
}
}
RestTemplate就是一个客户端调用工具,他跟服务注册中心没啥关系。
但是上面的注解@LoadBalancer就关系大了,他主要用来实现负载均衡功能。
当加了注解@LoadBalancer后,调用就可以通过ip地址+端口改为注册中心的服务名称了。这样就是通过服务注册中心去获取注册的服务信息,然后通过客户端实现负载均衡。
@EnableDiscoveryClient 这个注解加了以后,容器中就会有一个bean叫,discoveryClient,这个就可以去服务注册中心获取服务,也就是负载均衡底层都是通过这个来实现了。IRule接口
服务注册中心对比
服务注册,就是将我们的服务通过第三方服务管理平台进行统一注册和管理,并支持分布式。
A 高可用
P 分区容错性
C 服务数据一致