Nacos自身提供了SDK和API来完成服务注册与发现等操作,SDK本质上就是针对HTTP请求的一层封装,因为服务端只提供了REST接口,那么我们带着规范,去了解一下nacos的核心接口:
1、注册实例
1、作用:将服务地址信息注册到Nacos Server中
2、API:/nacos/v1/ns/instance (POST)
3、SDK:
void registerInstance(String serviceName , String ip , int port) throws NacosException; void registerInstance(String serviceName, String ip,int port,String clusterName) throws NacosException; void registerInstance(String serviceName,Instance instance) throws NacosException;
4、讲解:
serviceName:服务名称,相当于配置文件中的spring.application.name
ip:服务实例ip
port:服务实例port
clusterName:集群名称,标识当前服务实例属于哪个集群
instance:实例属性,其实就是把上面的参数封装成一个对象
5、调用方式
NamingService naming=NamingFactory.createNamingService(System.getProperty("serveAddr")); naming.registerInstance("nacos_name","192.168.80.1",8080,"DEFAULT");
2、获取全部实例
1、作用:根据服务名称从Nacos注册中心上获取所有服务的实例集合
2、API: /nacos/v1/ns/instance/list (GET)
3、SDK:
List<Instance> getAllInstances(String serviceName) throws NacosException; List<Instance> getAllInstances(String serviceName,List<String> cluster) throws NacosException;
4、讲解:
serviceName:服务名称
cluster:集群列表,入参是一个String集合
5、调用方式:
NamingService naming=NamingFactory.createNamingService(System.getProperty("serveAddr")); System.out.println(naming.getAllInstances("nacos_name),true);
3、服务监控
1、作用:为了实时让客户端感知到服务提供者实例的变化,相当于Eureka中的心跳机制
2、API:/nacos/v1/ns/instance/list (GET)
3、SDK:
void subscribe(String serviceName,EventListener listener) throws NacosException; void subscribe(String serviceName,List<String> clusters,EventListener listener) throw NacosException;
4、讲解:
EventListener:当提供者服务实例出现异常,比如上下限时,会调用一个事件回调
监听有两种方式:第一种:客户端调用/nacos/v1/ns/instance/list进行定时轮询
第二种:基于DatagramSocket的UDP协议,实现服务端的主动推送