栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

nacos 概述

nacos 概述


nacos 概述

        

官网:https://nacos.io/zh-cn/docs/what-is-nacos.html

        

          

                                

概述

           

nacos可充当服务注册中心、配置中心,整体架构如下:

                

provider app:服务提供方,向nacos注册服务信息及元数据

consumer app:服务消费方,从nacos获取服务提供方信息,发起服务调用

open api:nacos提供了api与客户端交互,通过api注册删除更新服务信息、配置信息等

config service:配置服务,存储应用的配置信息,实现配置数据的集中管理与动态更新

name service:对象名和其关联的元数据的映射管理,服务发现和 DNS 就是名字服务的2大场景

consistency protocol:一致性协议,nacos可集群部署实现高可用,使用raft协议选主与数据局同步

nacos console:nacos提供了控制台,方便用户查看、修改nacos中的数据

            

                   

                                

raft 协议

     

*********

选主

         

                

正常情况下,集群节点只有两种状态:leader、follower,当leader故障之后,触发选主过程;

每个follower节点都有一个倒计时器(150-300ms之间的随机数),当收到leader心跳数据,重置倒计时器,此时由于leader故障,follower收不到重置请求,转变为candidate状态,向其他节点发出投票请求;

其他follower节点收到投票请求后,会比较当前节点与投票请求节点的日志数据,如果投票请求节点的日志数据更新,则同意投票,否则拒绝投票;

如果投票请求节点获取超过半数投票,则成为主节点;否则发起新一轮投票(其他follower节点由于收不到leader节点的心跳数据,也会转变成为candidate,也会发出投票请求),直至选出主节点为止

            

*********

数据同步

            

                

           

正常写入过程:

集群中的任意节点收到数据写入请求,将写入请求转发给leader;

leader先在本地写入,然后将数据发送给follower;

follower将写入状态发送给leader,写入不成功的,leader会不断发送数据进行重试,

半数follower写入成功之后,leader提交数据,并向客户端返回数据写入状态

                   

leader节点故障,恢复后转变为follower数据恢复:

如果数据不一致(旧的leader写入,其余follower都未写入的数据),需要先做日志截断,再做数据同步;

如果旧的主节点数据落后太多,需要先根据新的leader节点的快照数据恢复数据,再做数据同步

            

                

                                

注册中心

       

*********     

基本功能

      

服务提供者在启动时向注册中心注册服务信息,关闭时注销服务信息

服务消费者可从注册中心获取可用的服务提供方信息

注册中心检查服务提供者可用性,下线不可用的服务提供者

               

*********

nacos 实现原理

                    

                

服务提供者通过open api注册服务信息,并定时发送心跳数据

服务消费者通过open api获取服务提供方信息,并通过定时任务每隔10s拉取一次数据;

nacos server如果检测到服务提供方出现异常,会将异常信息推送给服务消费者

             

服务健康检查:服务提供端定时发送心跳、nacos server定时检查

                

服务提供端(客户端):通过定时任务向nacos server发送心跳数据,并启动线程不断检测nacos server的响应,如果超时没有收到回应,则认为nacos server故障

nacos server(服务端):nacos server会开启定时任务检查服务的最后更新时间,当收到客户端的心跳数据后,会更新服务的最后心跳时间,如果超时没有更新,则将服务标记为不健康状态,同时将服务异常信息推送给服务消费端

              

消费端服务动态感知:消费端定时拉取数据、nacos server异常推送

                

服务消费端:消费端拉取数据时会注册事件监听,每隔10s拉取最新数据

nacos server:nacos server与服务提供端有心跳检测机制,会检查服务健康状态,当检测到服务异常之后,会将异常信息推送给消费端;当消费端收到异常推送后,会更新本地存储的服务信息

              

                

                                

配置中心

    

                

配置数据增删改:客户端通过open api向nacos server添加、更新、删除配置数据

配置数据持久化:默认使用derby文件型数据库在本地存储,可使用mysql存储配置数据

配置数据动态监听:客户端使用长轮询定时从nacos server拉取数据,如果有数据更新立即返回;如果没有数据更新,等待一段时间(默认30s),如果在此期间有数据更新立即返回,如果没有数据更新,等待到期后返回空数据

说明:长轮询返回的数据不是数据内容,而是变更数据的key(dataId、groupId、tenant),然后通过key去nacos server获取数据

        

             

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/758931.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号