https://nacos.io/zh-cn/docs/open-api.html
創建服務
描述
創建一個服務
請求類型
POST
請求路徑
/nacos/v1/ns/service
請求參數
名稱 | 類型 | 是否必選 | 描述 |
---|---|---|---|
serviceName | 字符串 | 是 | 服務名 |
groupName | 字符串 | 否 | 分組名 |
namespaceId | 字符串 | 否 | 命名空間ID |
protectThreshold | 浮點數 | 否 | 保護閾值,取值0到1,默認0 |
metadata | 字符串 | 否 | 元數據 |
selector | JSON格式字符串 | 否 | 訪問策略 |
示例請求
curl -X POST '127.0.0.1:8848/nacos/v1/ns/service?serviceName=nacos.test.2&metadata=k1%3dv1'
示例返回
ok
NacosNamingService
@Override
public void registerInstance(String serviceName, String groupName, Instance instance) throws NacosException {
if (instance.isEphemeral()) {
BeatInfo beatInfo = new BeatInfo();
beatInfo.setServiceName(NamingUtils.getGroupedName(serviceName, groupName));
beatInfo.setIp(instance.getIp());
beatInfo.setPort(instance.getPort());
beatInfo.setCluster(instance.getClusterName());
beatInfo.setWeight(instance.getWeight());
beatInfo.setMetadata(instance.getMetadata());
beatInfo.setScheduled(false);
long instanceInterval = instance.getInstanceHeartBeatInterval();
beatInfo.setPeriod(instanceInterval == 0 ? DEFAULT_HEART_BEAT_INTERVAL : instanceInterval);
beatReactor.addBeatInfo(NamingUtils.getGroupedName(serviceName, groupName), beatInfo); // 5s後發送心跳
}
serverProxy.registerService(NamingUtils.getGroupedName(serviceName, groupName), groupName, instance); // 服務註冊
}
NamingProxy
public void registerService(String serviceName, String groupName, Instance instance) throws NacosException {
final Map<String, String> params = new HashMap<String, String>(9);
params.put(CommonParams.NAMESPACE_ID, namespaceId);
params.put(CommonParams.SERVICE_NAME, serviceName);
params.put(CommonParams.GROUP_NAME, groupName);
params.put(CommonParams.CLUSTER_NAME, instance.getClusterName());
params.put("ip", instance.getIp());
params.put("port", String.valueOf(instance.getPort()));
params.put("weight", String.valueOf(instance.getWeight()));
params.put("enable", String.valueOf(instance.isEnabled()));
params.put("healthy", String.valueOf(instance.isHealthy()));
params.put("ephemeral", String.valueOf(instance.isEphemeral()));
params.put("metadata", JSON.toJSONString(instance.getMetadata()));
reqAPI(UtilAndComs.NACOS_URL_INSTANCE, params, HttpMethod.POST); // 服務註冊 發送http請求 curl -X POST '127.0.0.1:8848/nacos/v1/ns/service?serviceName=
}