04 Consul服务注册中心
Consul服务注册中心
Consul官网:https://www.consul.io/
Consul中文文档:https://www.springcloud.cc/spring-cloud-consul.html
简介
Consul是一种服务网格解决方案,提供具有服务发现,配置和分段功能的全功能控制平面。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建完整的服务网格。Consul需要一个数据平面,并支持代理和本机集成模型。Consul附带了一个简单的内置代理,因此一切都可以直接使用,还支持Envoy等第三方代理集成。
下载windows 版本后
解压后得到一个 consul.exe 在所在目录打开 cmd 输入xonsul agent -dev
在浏览器输入
服务提供者注册进 Consul
- 新建服务提供者cloud-provider-consul-payment8006。
- pom文件
<!--SpringCloud consul-server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
- yml 文件
server:
port: 8006
spring:
application:
name: consul-provider-payment
cloud:
consul:
host: localhost #用linux的ip地址(consul在本机就填localhost)
port: 8500
discovery:
service-name: ${spring.application.name}
- 启动类
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentConsulMain {
public static void main(String[] args) {
SpringApplication.run(PaymentConsulMain.class,args);
}
}
- controller 层
@RestController
@Slf4j
public class PaymentContrller {
@Value("${server.port}")
private String serverPort;
@RequestMapping(value="/payment/consul")
public String paymentConsul(){
return "springcloud with consul:"+serverPort+"\t"+ UUID.randomUUID().toString();
}
}
测试
服务消费者注册进
- 新建模块cloud-consumer-consul-order80
- pom(与8006相同)
- yml(端口号为80
server:
port: 80
spring:
application:
name: consul-consumer-order
cloud:
consul:
host: localhost #用linux的ip地址(consul在本机就填localhost)
port: 8500
discovery:
service-name: ${spring.application.name}
- 主启动类(与8006相同)
- config(和zk的消费者相同)
- controller.OrderConsulController
三者的异同
AP(Ereka)
CP(Zookeeper/Consul)
CAP理解 来自于评论区
CAP理论的一个例子。开学了,你和同桌互对寒假作业答案,对到一半同桌去了厕所,恰好老师进来要收作业,你决定:AP【交就交吧,有错也无所谓了,交作业要紧】;CP【等同桌回来,把答案对完再交,满分要紧】