ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-07-09 20:32:40  阅读:154  来源: 互联网

标签:服务 SpringCloud consul 注册 一致性 Consul 客户端


SpringCloud(五)——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 支持 客户端 已集成

标签:服务,SpringCloud,consul,注册,一致性,Consul,客户端
来源: https://www.cnblogs.com/luoxiao1104/p/14988896.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有