前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云原生nacos之服务发现SDK

云原生nacos之服务发现SDK

作者头像
一个风轻云淡
发布2022-11-15 17:48:03
5500
发布2022-11-15 17:48:03
举报
文章被收录于专栏:java学习java

注册实例

描述

注册一个实例到服务。

代码语言:javascript
复制
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;

请求参数

名称

类型

描述

serviceName

字符串

服务名

ip

字符串

服务实例IP

port

int

服务实例port

clusterName

字符串

集群名

instance

参见代码注释

实例属性

返回参数

请求示例

代码语言:javascript
复制
NamingService naming = NamingFactory.createNamingService(System.getProperty("serveAddr"));
naming.registerInstance("nacos.test.3", "11.11.11.11", 8888, "TEST1");

Instance instance = new Instance();
instance.setIp("55.55.55.55");
instance.setPort(9999);
instance.setHealthy(false);
instance.setWeight(2.0);
Map<String, String> instanceMeta = new HashMap<>();
instanceMeta.put("site", "et2");
instance.setMetadata(instanceMeta);

Service service = new Service("nacos.test.4");
service.setApp("nacos-naming");
service.sethealthCheckMode("server");
service.setEnableHealthCheck(true);
service.setProtectThreshold(0.8F);
service.setGroup("CNCF");
Map<String, String> serviceMeta = new HashMap<>();
serviceMeta.put("symmetricCall", "true");
service.setMetadata(serviceMeta);
instance.setService(service);

Cluster cluster = new Cluster();
cluster.setName("TEST5");
AbstractHealthChecker.Http healthChecker = new AbstractHealthChecker.Http();
healthChecker.setExpectedResponseCode(400);
healthChecker.setCurlHost("USer-Agent|Nacos");
healthChecker.setCurlPath("/xxx.html");
cluster.setHealthChecker(healthChecker);
Map<String, String> clusterMeta = new HashMap<>();
clusterMeta.put("xxx", "yyyy");
cluster.setMetadata(clusterMeta);

instance.setCluster(cluster);

naming.registerInstance("nacos.test.4", instance);

注销实例

描述

删除服务下的一个实例。

代码语言:javascript
复制
void deregisterInstance(String serviceName, String ip, int port) throws NacosException;

void deregisterInstance(String serviceName, String ip, int port, String clusterName) throws Nacos

请求参数

名称

类型

描述

serviceName

字符串

服务名

ip

字符串

服务实例IP

port

int

服务实例port

clusterName

字符串

集群名

返回参数

请求示例

代码语言:javascript
复制
NamingService naming = NamingFactory.createNamingService(System.getProperty("serveAddr"));
naming.deregisterInstance("nacos.test.3", "11.11.11.11", 8888, "DEFAULT");

获取全部实例

描述

获取服务下的所有实例。

代码语言:javascript
复制
List<Instance> getAllInstances(String serviceName) throws NacosException;

List<Instance> getAllInstances(String serviceName, List<String> clusters) throws NacosException;

请求参数

名称

类型

描述

serviceName

字符串

服务名

clusters

List

集群列表

返回参数

List 实例列表。

请求示例

代码语言:javascript
复制
NamingService naming = NamingFactory.createNamingService(System.getProperty("serveAddr"));
System.out.println(naming.getAllInstances("nacos.test.3"));

获取健康或不健康实例列表

描述

根据条件获取过滤后的实例列表。

代码语言:javascript
复制
List<Instance> selectInstances(String serviceName, boolean healthy) throws NacosException;

List<Instance> selectInstances(String serviceName, List<String> clusters, boolean healthy) throws NacosException;

请求参数

名称

类型

描述

serviceName

字符串

服务名

clusters

List

集群列表

healthy

boolean

是否健康

返回参数

List 实例列表。

请求示例

代码语言:javascript
复制
NamingService naming = NamingFactory.createNamingService(System.getProperty("serveAddr"));
System.out.println(naming.selectInstances("nacos.test.3", true));

获取一个健康实例

描述

根据负载均衡算法随机获取一个健康实例。

代码语言:javascript
复制
Instance selectOneHealthyInstance(String serviceName) throws NacosException;

Instance selectOneHealthyInstance(String serviceName, List<String> clusters) throws NacosException;

请求参数

名称

类型

描述

serviceName

字符串

服务名

clusters

List

集群列表

返回参数

Instance 实例。

请求示例

代码语言:javascript
复制
NamingService naming = NamingFactory.createNamingService(System.getProperty("serveAddr"));
System.out.println(naming.selectOneHealthyInstance("nacos.test.3"));

监听服务

描述

监听服务下的实例列表变化。

代码语言:javascript
复制
void subscribe(String serviceName, EventListener listener) throws NacosException;

void subscribe(String serviceName, List<String> clusters, EventListener listener) throws NacosException;

请求参数

名称

类型

描述

serviceName

字符串

服务名

clusters

List

集群列表

listener

EventListener

回调listener

返回参数

请求示例

代码语言:javascript
复制
NamingService naming = NamingFactory.createNamingService(System.getProperty("serveAddr"));
naming.subscribe("nacos.test.3", event -> {
    if (event instanceof NamingEvent) {
        System.out.println(((NamingEvent) event).getServceName());
        System.out.println(((NamingEvent) event).getInstances());
    }
});

取消监听服务

描述

取消监听服务下的实例列表变化。

代码语言:javascript
复制
void unsubscribe(String serviceName, EventListener listener) throws NacosException;

void unsubscribe(String serviceName, List<String> clusters, EventListener listener) throws NacosException;

请求参数

名称

类型

描述

serviceName

字符串

服务名

clusters

List

集群列表

listener

EventListener

回调listener

返回参数

请求示例

代码语言:javascript
复制
NamingService naming = NamingFactory.createNamingService(System.getProperty("serveAddr"));
naming.unsubscribe("nacos.test.3", event -> {});
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 注册实例
    • 请求参数
      • 返回参数
        • 请求示例
        • 注销实例
          • 返回参数
            • 请求示例
            • 获取全部实例
              • 请求参数
                • 返回参数
                  • 请求示例
                  • 获取健康或不健康实例列表
                    • 请求参数
                      • 返回参数
                        • 请求示例
                        • 获取一个健康实例
                          • 请求参数
                            • 返回参数
                              • 请求示例
                              • 监听服务
                                • 请求参数
                                  • 返回参数
                                    • 请求示例
                                      • 取消监听服务
                                        • 请求参数
                                          • 返回参数
                                            • 请求示例
                                            相关产品与服务
                                            负载均衡
                                            负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
                                            领券
                                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档