服务发现概述
如果项目使用微服务架构,如果A微服务需要访问B微服务,需要http请求进行调用,当然需要B微服务的地址与端口号,微服务可以向之前提到的服务中心进行获取B服务的ip地址和端口号,这就是服务发现
服务发现两种形式
1.客户端主动获取
客户端:
流程:
1.先是故障转移机制判断是否去本地文件中读取信息,读到则返回
2.再去本地服务列表读取信息(本地缓存),没读到则创建一个空的服务,然后立刻去nacos中读取更新
3.读到了就返回,同时开启定时更新,定时向服务端同步信息 (正常1s,异常最多60s一次)
服务端:
流程:获取服务列表 ,推送数据
2.服务端主动推送
条件:建立长连接、触发推送事件
服务端:监听服务变更事件,服务变更调用触发事件,触发事件主动推送服务变更信息到客户端 客户端:收到服务端变更信息,客户端主动拉取会赚钱最新的服务信息
nacos的负载均衡机制
负载均衡:将负载(工作任务,访问请求)进行分摊到多个操作单元(服务器,组件)上进行执行
负载均衡分为两种:
客户端的负载均衡与服务器端的负载均衡
服务器端负载均衡:
就是让一个人(Nginx)来安排学生(请求)来排队到不同的窗口(应用服务器)打饭嘛
客户端的负载均衡
客户端的负载均衡是在spring-cloud后出现的,在spring-cloud中有ribbon组件来负责负载均衡。spring的负载均衡需要用到服务注册中心eruka。
服务提供方:将自己注册到服务注册中心eruka
服务消费方:从服务注册中心中获取服务列表,使用服务
客户端的负载均衡流程如下:
服务消费方通过ribbon先从服务注册中心获取服务列表,根据一定的负载均衡算法,分发请求到不同的服务提供方
可以理解成学生(服务消费方)在进入饭堂(服务注册中心)后根据自己的想法(负载均衡策略)选择合适的窗口(服务提供方)
nacos自带负载均衡策略,通过负载均衡器进行调用微服务(默认使用轮询机制)