Nacos服务注册与发现的原理

173 阅读2分钟

注册中心(nacos).jpg

前言

Nacos主要应用与微服务的Java项目中,主要责任是服务治理和统一配置管理 本文章将依照本人的实际研究所得展开讲述Nacos的服务治理职责中服务注册与发现的原理,若有差错,敬请批评,还望海涵~

一、Nacos介绍

若将微服务分为三角色场景那么就会有

服务提供者:后端的集群服务器

服务调用者:前端

注册中心:Nacos

在其中Nacos的作用主要是监听后端的集群服务,将正常活跃状态的服务的IP、端口号...推送给前端,提供给其消费服务

二、微服务交互流程

第一步

服务提供者将自己的服务实例注册到Nacos,主动向其推送服务信息,需要注意的是,在我们的微服务中,会分为多个模块,如上图所示,以一个商城项目为例,有item-service(商品模块)、user-service(用户模块)、pay-service(支付模块)、order-service(订单模块),每个模块有自己的IP和端口号以及配置信息,并且部署到不同的服务器中,还需要注意的是,每个模块可以有多个实例,也就是可以再次分给多个服务器同时分担任务。

第二步: 心跳检测

nacos部署的注册中心接收到服务信息后进行注册,存储到自己的本地中,在后续的时间里,Nacos将一直监听后端集群服务的信息,这其中,后端集群服务器将定时反馈服务器状态,若服务器down了,长时间不反馈信息,Nacos会主动发送信息去询问,判别服务器的状态,通过这种方式,Nacos发挥了服务发现的作用。

第三步:服务订阅

服务调用者会到注册中心进行服务订阅,说大白话就是给喜欢的主播点关注,一旦主播有什么动向,希望第一时间得到它的消息。服务调用者(以前端nginx为例),它将存储服务信息到自己的本地中,记录着能访问的服务器状态

第四步:推送变更

注册中心Nacos将定时汇报给前端后端集群服务器的状态,以便前端访问跑空

第五步:远程调用

前端根据从注册中心得到得服务器IP和端口号,经过负载均衡向后端服务器发起远程调用(发送访问请求)