微服务-springcloud-consul

153 阅读2分钟

consul官网 在官网下载后,运行 consul agent -dev 就开启了consul注册中心

集成过程 consul是eureka停维后的替代产品。 服务端是启动consul包后自动集成了的 客户端的集成过程如下:

pom

<dependencies>
   <!-- consul客户端依赖 -->
   <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-consul-discovery</artifactId>
   </dependency>
   <!-- 这个包是用做健康度监控的-->
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
   </dependency>
</dependencies>

配置文件

server.port=8989
spring.application.name=consulclient8889
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
#健康检查
spring.cloud.consul.discovery.register-health-check=false
spring.cloud.consul.discovery.service-name=${spring.application.name}

启动类

@EnableDiscoveryClient //可以不写

各种注册中心的区别

CAP定理

CAP定理又称CAP原则,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

  一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
  可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
  分区容忍性(P),就是高可用性,一个节点崩了,并不影响其它的节点(100个节点,挂了几个,不影响服务,越多机器越好)

Eureka特点

Eureka中没有使用任何的数据强一致性算法保证不同集群间的Server的数据一致,仅通过数据拷贝的方式争取注册中心数据的最终一致性,虽然放弃数据强一致性但是换来了Server的可用性,降低了注册的代价,提高了集群运行的健壮性。

Consul特点

基于Raft算法,Consul提供强一致性的注册中心服务,但是由于Leader节点承担了所有的处理工作,势必加大了注册和发现的代价,降低了服务的可用性。通过Gossip协议,Consul可以很好地监控Consul集群的运行,同时可以方便通知各类事件,如Leader选择发生、Server地址变更等。

zookeeper特点

基于Zab协议,Zookeeper可以用于构建具备数据强一致性的服务注册与发现中心,而与此相对地牺牲了服务的可用性和提高了注册需要的时间。

比较

image-20200710135837525.png