Spring cloud - Nacos

注册instance是什么存储的? 临时节点存在内存,持久节点持久化到磁盘文件 data/naming/namespace的id

nacos: 拉取    持久实例和临时实例一次性全部拉取的。

配置数据是什么存储的?derby mysql

服务心跳:默认5s发送一次心跳;

服务健康检查:对于超过15s没有收到客户端心跳的实例会将它的healthy属性设置为false(客户端服务发现时不会发现),如果某个实例超过30秒没有收到心跳,直接剔除该实例(被剔除的实例如果恢复心跳则会重新注册)

内存注册表:

service  就是微服务

Map<namespace, Map(group::serviceName, Service);

namespace: 隔离的作用  因为隔离所以环境没有处理好可能会出现:No instance available from xxx

group::serviceName  隔离作用;  group:所有服务用同一个group(通常用于配置中心,起到环境隔离作用)

 Map<String, Cluster> clusterMap 集群  性能:尽可能的同一集群(ribbon 负载均衡算法:优先使用同一集群的节点)

@JsonIgnore

private Set<Instance> persistentInstances = new HashSet<>();    # 持久实例

@JsonIgnore

private Set<Instance> ephemeraInstances = new HashSet<>();    # 临时实例

RestTemplate扩展点:ClientHttpRequestInterceptor

 

 Nacos是如何完成自动注册的?

NacosNamingService#registerInstance <---NacosServiceRegistry#registry <---- AbstractAutoServiceRegistration(完成自动注册的核心,实现了ApplicationListenerj监听器) <--- ApplicationListener#onApplicationEvent

 

posted @ 2022-12-05 17:46  君莫笑我十年游  阅读(21)  评论(0编辑  收藏  举报