Consul是一个服务网格(微服务间的TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个个分布式,高度可用的系统,而且开发使用都很简单。它提供了一个功能齐全的控制平面
Consuler的特点: 服务发现、健康检查、键值存储、安全服务通信、多数据中心
与其他分布式服务注册与发现的方案相比,Consul的方案更加“一站式”——内置了服务注册与发现框架、分布式一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具。
2.安装并运行Consul Ⅰ.Consul官网Consul本身使用GO语言开发,具有跨平台、运行高效等特点,也非常方便和Docker配合使用
看不懂英文可以点击这里
Ⅱ.在存放consul.exe文件下使用开发者模式 Ⅲ.运行Consul- 查看consul版本
consul --version
输入命令启动consul
.consul.exe agent -dev
3.输入localhost:8500访问consul控制界面
不要添加mysql相关依赖,因为我们这里不连接数据库,只是测试
org.springframework.cloud
spring-cloud-starter-consul-discovery
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
4.新建yml文件
##consul服务端口号
server:
port: 8006
spring:
application:
name: consul-provider-payment
####consul注册中心地址
cloud:
consul:
#consul服务端的ip或者域名
host: localhost
# consul服务端的端口号 默认是8500
port: 8500
discovery:
#当前应用注册到consul的名称
service-name: ${spring.application.name}
5.Controller业务类
package com.asule.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.UUID;
@RestController
@Slf4j
@RequestMapping("/payment")
public class PaymentController {
@Value("${server.port}")
private String serverPort;
@RequestMapping(value = "/consul")
public String paymentConsul(){
return "SpringCloud with consul:"+serverPort+"t"+ UUID.randomUUID().toString();
}
}
6.启动程序测试
观察consul控制界面
7.Eureka、Zookeeper、Consul三个注册中的异同点输入路径观察是否有输出
| 组件名 | 开发语言 | 健康检查 | 对外暴露接口 | CAP | SpringCloud是否集成 |
|---|---|---|---|---|---|
| Eureka | Java | 可配支持 | HTTP | AP | 集成 |
| Consul | Go | 支持 | HTTP/DFS | CP | 集成 |
| Zookeeper | Java | 支持 | 客户端 | CP | 集成 |



