
1.不管是哪个注册中心(Nacos或Eureka),两者的服务提供者在启动时都会把自己的信息提交给注册中心,注册中心会将收到的信息保留下来,当服务消费者需要消费时,就可以找注册中心要这个信息—定时拉取服务。
2.消费者拉取之后,会将拉取到的信息存到缓存当中,作为服务列表缓存,列表会每隔30s拉取一次,保证服务提供的信息是正确的。
3. 消费者拿到服务列表信息后,再进行负载均衡去调用服务提供者。
4. 在Nacos中,nacos会将服务提供者划分成临时实例和非临时实例,默认情况下,所有的实例都为临时实例,临时实例采用心跳监测,在哪一天临时实例不跳了,nacos会将这个临时实例剔掉。非临时实例不会做心跳监测,而是由nacos主动发请求询问该实例是否还存在,如果不存在,会被标记为不健康,会等待该实例恢复健康。
5. nacos会主动做消息推送,主动推送变更消息。Eureka是pull,而nacos是pull+push两者结合,每隔一段时间会去更新,假设有服务提供者的实例挂掉,会立即通知服务消费者,让消费者进行更新。
服务注册到Nacos时,可以选择注册为临时或非临时实例,通过下面的配置来设置:
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: Hubei #集群名称
ephemeral: false #是否是临时实例
临时实例宕机时,会从nacos的服务列表中剔除,而非临时实例则不会