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