spring cloud consul 概述


spring cloud consul 概述

              

             

*****************

consul  简介

                 

spring cloud可以使用consul作为注册中心和配置中心

                   

使用raft算法来实现分布式一致性,提供了服务发现、健康检查、k/v存储等功能

一个数据中心可配置多个server,形成consul集群(一般为3-5个)实现高可用;

数据中心之间的数据不需要同步,可向另一个数据中心发送数据请求获取数据

              

                  

*****************

raft 算法

              

consul用raft算法来实现leader选举、日志复制、健康检测

                

*************

leader选举

                 

节点状态:leader、candidate、follower

                                     

正常情况下,集群中只有leader、follower节点,当leader节点故障后,会触发leader的重新选举,选举过程

follower有一个倒计时器,计时器到期后状态转变为candidate,选举周期term加1,先给自己投票,再向其他节点发送投票请求,投票请求附带candidate日志数据最后一个节点的term以及index;

其他follower节点接到投票请求后,如果follower最后一个日志数据节点的term<请求term或者term相等、index<=请求index,则可投票,否则拒绝投票;

当candidate得到超过半数投票数后,可转为leader,选主结束,否则进行新一轮的投票,直到选出leader为止

随后,leader定时向follower发送心跳,follower接到心跳后重置倒计时器,保持follower状态

          

*************

日志复制

                   

                                   

日志数据一致性保证

如果日记数据提交了,则该数据之前的所有数据都已经提交

服务器的日志提交记录相同(leader、follower之间有一定延时)

             

正常写入过程

客户端的写入请求都由leader处理,leader先在本地写入日志,再将数据发送给follower;

follower接到写入请求后,在本地日志写入,写入成功后返回状态给leader,如果写入不成功,leader不断发送请求进行重试;

当半数写入成功后,leader提交数据,同时向客户端发送写入成功状态,并给follower发送提交请求;

           

故障选主日志同步

如果数据不一致,要先做日志截断再同步数据,然后进行数据复制;

如果数据落后太多,follower要先根据leader发送的数据快照恢复数据,再进行同步

           

日志压缩:服务器定期将数据快照保存到磁盘,并删除快照时间点前的日志数据

              

               

*****************

数据读取

             

consul提供三种读取数据方式:stale、default、consistent

stale:任何节点都可以响应读请求,客户端可以读取已经提交的数据,有可能读取到过期的数据

default:客户端的读取请求要转发给leader,由leader响应客户端的读请求,客户端读取已经提交的数据,发生网络分区时,有可能会读取到过期的数据

consistent:客户端的读取请求转发给leader,leader在响应客户端的读请求前要先发送心跳,确保是leader服务器才可以返回已提交的数据,牺牲了读取速度,保证了读取的强一致性,可读取到最新的数据、

           

           

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值