前言
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和端口号,经过负载均衡向后端服务器发起远程调用(发送访问请求)