SpringCloud(五)——consul服务注册中心

consul服务注册中心

consul简介

consul是一个可以提供服务发现,健康检查,多数据中心,Key/Value存储等功能的分布式服务框架,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,使用起来也较为简单。Consul用Golang实现,因此具有天然可移植性(支持Linux、Windows和Mac OS X);安装包仅包含一个可执行文件,方便部署。

consul安装和使用

1.下载consul https://www.consul.io/downloads

image

2、直接解压到安装目录(尽量解压到全英文名字的目录)

3、用cmd命令行进入到consul安装目录输入consul agent -dev打开consul

image
image

4、访问consul的web服务端口 http://localhost:8500 ,默认端口是8500

image

consul服务客户端开发

1、新建一个consuk客户端模块,添加对应依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--consul客户端依赖-->
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-consul-discovery -->
<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>

2、新建application.yaml配置文件

server:
  port: 8082
spring:
  application:
    name: CONSULCLIENT #指定服务名称
  cloud:
    consul:
      host: localhost:8500     #consul server服务注册地址
      discovery:
        #指定注册当前服务的服务名称 默认值为${spring.application.name}
        service-name: AAA

3、编写主启动类

package com.study.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient //作用:通用服务注册客户端注解 可以对consulClient zookeeperClient eurekaClient都生效
public class Consul_8082 {
    public static void main(String[] args) {
        SpringApplication.run(Consul_8082.class,args);
    }
}

4、启动测试

启动consulServer
image
启动consul客户端,访问localhost:8500 进入sonsul注册中心页面
image
出现这种情况是因为 consulServer 检测所有客户端心跳,但是发送心跳时client必须给予响应才能使该客户端正常使用,在现有的客户端中我们并没有引入健康检查依赖,所以导致健康检查始终不能通过,所以导致不能使用

注意:Consul没有自我保护机制

不同注册中心区别

# 1.CAP定理
- CAP定理:CAP定理又称CAP原则,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
	`一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
	`可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
	`分区容忍性(P),就是高可用性,一个节点崩了,并不影响其它的节点(100个节点,挂了几个,不影响服务,越多机器越好)
	
# 2.Eureka特点
- Eureka中没有使用任何的数据强一致性算法保证不同集群间的Server的数据一致,仅通过数据拷贝的方式争取注册中心数据的最终一致性,虽然放弃数据强一致性但是换来了Server的可用性,降低了注册的代价,提高了集群运行的健壮性。

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

# 4.zookeeper特点
- 基于Zab协议,Zookeeper可以用于构建具备数据强一致性的服务注册与发现中心,而与此相对地牺牲了服务的可用性和提高了注册需要的时间。
组件名 语言 CAP 一致性算法 服务健康检查 对外暴露接口 Spring Cloud集成
Eureka Java AP 可配支持 HTTP 已集成
Consul Go CP Raft 支持 HTTP/DNS 已集成
Zookeeper Java CP Paxos 支持 客户端 已集成
posted @ 2021-07-09 20:25  转身刹那的潇洒  阅读(364)  评论(0编辑  收藏  举报