前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
文章目录
一、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 | 节点名称 | 角色 |
---|---|---|---|
1 | 192.168.1.6 | server-6 | server & web ui |
2 | 192.168.1.7 | server-7 | server |
3 | 192.168.1.8 | server-8 | server |
- 启动服务器(后台方式,服务器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,强调高可用和分区容错;
Consul
和Zookeeper
:主要支持CP,强调数据一致性和分区容错。
三种注册中心的服务架构体现在:
Eureka拥有一个自我保护机制,当在90s内如果有过多的心跳包丢失,Eureka不会直接注销该服务,而是选择采用保护机制不去注销服务,等到90s到期如果仍然不能接受心跳包就直接注销,这种为了保证最大吞吐量而牺牲数据一致性的思想就是AP;
Zookeeper采用创建临时节点的机制来注册服务,由于是临时节点在连接断开时就会立刻被删除,对应着服务就被注销,这种思想对应的就是CP;
Consul在微服务器断开时会立刻停止服务,来保证数据一致性原则。
文章参考:
在linux下consul注册中心的安装及启动
linux安装consul集群
Consul注册中心注册的服务总是红叉 (All service checks failing)