-Ncaos的官网是哪里:nacos.io
- 我们的服务实例是如何注册到Nacos服务的?(基于HTTP请求)
Nacos本身就是一个Web服务是一个专门用来注册服务的地方(可以理解为一个可以用来购物的淘宝平台),在上面注册的用户(消费者和商家)之间可以进行基于http协议下的通信(这样可以通过这个注册中心进行服务间的相互访问),我们要将一些数据传递到服务,我们在基于http请求情况下,当在业务服务启动时,会向nacos发起http请求,nacos服务端在请求端读取数据,其实相当于一个map,这个map里面存储的key的值就是请求的url,里面的value的值就是
-
在Nacos中服务提供者是如何向注册中心(Registry)续约的?(5秒心跳)
-
Nacos是阿里开源的一个服务,注册服务,配置管理,动态DNS服务,元数据管理,在Nacos中用到了TTL机制来保证客户端在一定时间内向注册中心发送心跳,否则将这个客户摘除,发送心跳的默认周期是5秒,Nacos服务端会在15秒没有收到心跳后将实例设置为不健康,在30秒没有收到心跳时将这个实例摘除.
-
对于Nacos服务来讲它是如何判定服务实例的状态?(检测心跳包,15秒未检测到即为不健康,30秒未检测到即为死亡状态)
-
在Nacos支持基于DNS和基于RPC的服务发现.服务提供者使用原生SDK 或者OpenAPI或者一个独立的代理注册Service后,也提供对服务的实时健康检查(会在HTTP\MysQl\用户自定义)的健康检查,或一个独立的Agent TODO注册Service后,服务消费者可以使用DNS TODO或HTTP&API查找和发现服务。
-
服务启动时如何找到服务启动注册配置类?(NacosNamingService)
-
服务消费方是如何调用服务提供方的服务的?(RestTemplate+ LoadBalancerClient)
-
当nacos注册中心关闭了,服务消费方还能调用到服务吗?(可以,本地缓存)
这里分为两种情况:
第一种情况,关闭nacos注册中心之前,消费者已经访问过了至少一次,这时候有本地缓存存在,消费者仍可以从缓存中获取服务;
第二种情况,关闭nacos注册中心之前,消费者并没有访问过注册中心,此时本地缓存中没有任何内容,消费者访问注册中心是不能获得服务的. -
服务消费方是如何拿到nacos注册中心的服务提供者实例的?
-
(先pull,假如没有pull到,检查本地缓存->nacos推送)
-
Nacos注册中心基于什么协议进行服务提供者的实例信息推送?
-注册中心三个角色之间的关系是怎样的?
- 在各个微服务在启动的时候,将自己的网络地址等信息注册到注册中心,注册中心存储这些数据
- 服务消费者从注册中心查询服务提供者提供的地址.并通过该地址调用服务提供者的接口
- 各个微服务与注册中心使用一定机制(例如心跳)通信.如果注册中心与某个微服务长时间无通信(Nacos是30秒.),就会注销该实例
- 微服务网络地址发生变化(例如实例增加或者IP变动等)时,会重新注册到注册中心,这样,消费者就可以无需人工修改提供者的网络地址了.
注册中心的结构图如下:
- (UDP协议) Nacos 是如何实现其高可用的?
1.在生产环境,我们往往需要搭建Nacos集群,在Dubbo也需要显式配置集群地址,当其中一台机器宕机时候,为了不影响整体运行,客户端会存在重试机制,拿到地址列表,在请求成功之前逐个尝试直到成功
2.每隔15秒中Nacos会接收到来自消费者的心跳包,如果15秒没有收到消费者的心跳包,Nacos会认为实例的健康状况为不健康;如果30秒之后还没有收到心跳包,就会认为实例已经死亡
3.Nacos会主动检查发现(采用轮训的方式)检查消费者的状况.
4.缓存:当消费者有通过注册中心来调用服务提供者的服务时,注册中心会将由服务提供者返回的内容放入缓存,如果缓存有内容,即使消费提供者暂停服务,消费者任然可以从缓存获取服务.
为什么选择Nacos注册中心
1.活跃度比较高
2.界面操作容易,操作友好
3.性能稳定