nacos服务注册流程图
专业术语
1.服务注册:为了将所有的微服务都方便管理,需要将自身的信息(ip地址、端口号、服务名称)以http请求方式调用nacos注册中心接口都放到nacos服务列表中,统一管理。(微服务开启时自动会获取将所处的ip地址、端口号、服务名称,先开启心跳机制,并将这些信息注册到nacos的服务中服务列表中,通过服务中心来管理这些微服务)
2.心跳机制:
1)目的:是每个服务和Nacos保持沟通和交换信息的机制
2)心跳机制的两种形式
临时实例:
1)使用场景:动态扩缩容:当服务实例根据负载自动增加或减少时,可以使用临时实例。例如,使用Kubernetes或Docker等容器技术来动态扩展或收缩实例。临时性服务:对于短期运行的任务或服务,可以使用临时实例。一旦任务完成或服务停止,实例将自动注销并从Nacos注册中心中删除。(客户端实例发起心跳机制,服务端处理请求)
2)流程:服务启动后每隔5秒会向Nacos发送一个“心跳包”,这个心跳包中包含了当前服务的基本信息,Nacos接收到这个心跳包,首先检查当前服务在不在注册列表中,如果不在按新服务的业务·进行注册,如果在,表示当前这个服务是健康的。
3)特点:采用客户端心跳检测模式,心跳检测周期5秒
心跳间隔超过15秒(默认)则标记为不健康
心跳间隔超过30秒(默认)则从服务列表删除
永久实例:
1)使用场景:长期持续运行的服务:对于一直运行的服务,可以使用永久实例。这些服务通常是持久性的,不会在短时间内停止或变化。重要性较高的服务:如果服务对于业务运行的重要性较高,需要持久地注册和心跳发送,可以选择永久实例。这样可以确保服务实例的状态一直可用,即使在网络中断或注册中心重启后也能够重连并继续服务。
2)遍历所有永久实例并加入阻塞队列 从队列中获取实例,与实例尝试建立连接,进行超时判断处理
3)特点:采用服务端主动健康检测方式
周期为2000 + 5000毫秒内的随机数
检测异常只会标记为不健康,不会删除
配置实例的不同方式
服务注册执行流程
1.客户端:服务提供者向Nacos注册中心注册服务:服务提供者启动时会先开启心跳机制,然后向Nacos注册中心发送一个注册请求,包括服务名、服务IP地址、端口号等信息。(对给定的URI模板执行HTTP方法,将给定的请求实体写入请求,并返回)
2.服务端:Nacos注册中心将服务信息存储到自己的服务注册表中:注册中心会将服务提供者发送的服务信息存储到自己的服务注册表中
将请求参数(服务名、服务IP地址、端口号)校验后注册实例,
本地通过一个Map保存所有的服务信息,注册实质就是向map中添加信息
先创建空服务,更新服务中的实例信息
服务创建启动初始化服务,启动心跳检测
向服务添加实例时候会判断实例是永久性实例还是临时实例,不同类型实例有不同处理方式
注册后同时会发布服务变更事件