微服务—Consul实现注册中心

本文详细介绍了如何在Linux环境下安装并启动Consul,包括单节点启动和集群搭建过程。此外,还讨论了Consul作为服务注册中心的配置方法,以及CAP理论在服务注册中心选择中的应用。通过示例展示了在Spring Cloud中配置Consul作为服务发现的步骤。
摘要由CSDN通过智能技术生成

前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


一、consul简介

1.1 Consul基础介绍

服务发现是基于微服务架构的关键原则之一。尝试配置每个客户端或某种形式的约定可能非常困难,可以非常脆弱。Consul通过HTTP API和DNS提供服务发现服务。Spring Cloud Consul利用HTTP API进行服务注册和发现。这不会阻止非Spring云应用程序利用DNS界面。Consul代理服务器在通过八卦协议进行通信的群集中运行,并使用筏式协议协议。
Consul中文文档

1.2 Linux下Consul的安装

  • 前往官网下载 压缩包然后上传服务器:Consul官网
  • 解压压缩包:unzip xxxxxx.zip;如果没有unzip命令,执行yum -y install unzip
  • 安装完成后通过./consul检查是否安装成功;
    在这里插入图片描述

1.3 Linux下Consul启动

后台运行命令nohup ./consul agent -server -ui -bootstrap-expect=1 -client=0.0.0.0 -bind=192.168.1.6 -data-dir=/opt/Consul/data > /opt/Consul/logs/consul.log &

控制台启动命令./consul agent -server -ui -bootstrap-expeect=1 -client=0.0.0.0 -bind=192.168.1.6 -data-dir=/opt/Consul/data

参数解释

  • -server:表示是以服务端身份启动;
  • -bind:表示绑定到哪个IP地址(有些服务器可能有多块网卡,需要进行配置);
  • -client:指定客户端访问的ip,0.0.0.0表示所有客户端都可访问;
  • -bootstrap-expect=3:表示server集群中最少的节点个数为3,低于这个值集群就不会工作(原理类似于Zookeeper,通常集群中的节点个数为奇数,方便进行选举,consul采用的是 raft算法);
  • -data-dir:表示指定数据的存放目录(目录必须存在);
  • -node:表示节点在 web-ui界面上显示的名称;
  • -ui:表示显示管理界面的web-ui

1.4 Linux下Consul集群的搭建

  • 集群角色分配
序号节点IP节点名称角色
1192.168.1.6server-6server & web ui
2192.168.1.7server-7server
3192.168.1.8server-8server
  • 启动服务器(后台方式,服务器1需要开启界面模式)
# 服务器1
nohup ./consul agent -server -client=0.0.0.0 -ui -bind=192.168.1.6 -bootstrap-expect=2 -data-dir=/opt/Consul/data -node=server-6 > /opt/Consul/logs/consul.log &

# 服务器2
nohup ./consul agent -server -client=0.0.0.0 -bind=192.168.1.7 -bootstrap-expect=2 -data-dir=/opt/Consul/data -node=server-7 > /opt/Consul/logs/consul.log &

# 服务器3
nohup ./consul agent -server -client=0.0.0.0 -bind=192.168.1.8 -bootstrap-expect=2 -data-dir=/opt/Consul/data -node=server-8 > /opt/Consul/logs/consul.log &

在这里插入图片描述
启动提示重定向错误不知道为什么,但是通过./consul members能够看到对应的节点就说明成功启动。

  • 集群加入(让server-7、server-8加入到server-6)
    在server-7、server-8中分别执行命令:./consul join 192.168.1.6
    在这里插入图片描述
    ./consul info:查看当前节点的具体信息
    在这里插入图片描述

./consul members:查看当前节点集群信息
在这里插入图片描述

  • 主界面节点信息
    在这里插入图片描述

二、采用Consul作为服务注册中心

类似于Eureka和Zookeeper的配置,需要分别配置pom.xml、application.yml等等。

pom.xml

        <!-- 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>

application.yml

server:
  port: 8084
spring:
  application:
    name: cloud-provider-payment添加链接描述
  cloud:
    consul:
      host: 192.168.1.6
      port: 8500
      discovery:
        service-name: ${spring.application.name}
        hostname: 192.168.1.6
        heartbeat:    #这里必须加上心跳检测,否则服务检测不会通过
          enabled: true

其余配置类似。

三、CAP理论及运用

3.1 CAP理论解释

CAP:C(Consistency)强一致性、A(Availablity)高可用性、P(Partition Tolerance)分区容错性。
分布式系统不可能同时满足三个特性,最多只能满足其中两个特性。根据实际情况选择不同的特性组合对应的技术栈。

3.2 三种注册中心对比

Eureka:主要支持的是AP,强调高可用和分区容错;
ConsulZookeeper:主要支持CP,强调数据一致性和分区容错。
在这里插入图片描述
三种注册中心的服务架构体现在:
Eureka拥有一个自我保护机制,当在90s内如果有过多的心跳包丢失,Eureka不会直接注销该服务,而是选择采用保护机制不去注销服务,等到90s到期如果仍然不能接受心跳包就直接注销,这种为了保证最大吞吐量而牺牲数据一致性的思想就是AP;
Zookeeper采用创建临时节点的机制来注册服务,由于是临时节点在连接断开时就会立刻被删除,对应着服务就被注销,这种思想对应的就是CP;
Consul在微服务器断开时会立刻停止服务,来保证数据一致性原则。

文章参考:
在linux下consul注册中心的安装及启动
linux安装consul集群
Consul注册中心注册的服务总是红叉 (All service checks failing)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值