blob: 902a107196de4fadb449289f59c9b7b2f5031af3 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.servicecomb.serviceregistry.client;
import java.util.List;
import java.util.Map;
import org.apache.servicecomb.foundation.vertx.AsyncResultCallback;
import org.apache.servicecomb.registry.api.event.MicroserviceInstanceChangedEvent;
import org.apache.servicecomb.registry.api.registry.Microservice;
import org.apache.servicecomb.registry.api.registry.MicroserviceInstance;
import org.apache.servicecomb.registry.api.registry.MicroserviceInstanceStatus;
import org.apache.servicecomb.registry.api.registry.MicroserviceInstances;
import org.apache.servicecomb.serviceregistry.api.registry.ServiceCenterInfo;
import org.apache.servicecomb.serviceregistry.api.response.GetSchemaResponse;
import org.apache.servicecomb.serviceregistry.api.response.HeartbeatResponse;
import org.apache.servicecomb.serviceregistry.client.http.Holder;
public interface ServiceRegistryClient {
void init();
/**
* get all microservices
*/
List<Microservice> getAllMicroservices();
/**
*
* 获取微服务唯一标识
*/
String getMicroserviceId(String appId, String microserviceName, String versionRule, String environment);
/**
*
* 注册微服务静态信息
*/
String registerMicroservice(Microservice microservice);
/**
*
* 根据微服务唯一标识查询微服务静态信息
*/
Microservice getMicroservice(String microserviceId);
/**
* <p>
* if connect to normal ServiceCenter, same with the method
* {@linkplain org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient#getMicroservice(String)}
* if connect to ServiceCenter Aggregator, not only contain the target ServiceCenter but also other ServiceCenter clusters
* </p>
*/
Microservice getAggregatedMicroservice(String microserviceId);
/**
* 更新微服务properties
*/
boolean updateMicroserviceProperties(String microserviceId, Map<String, String> serviceProperties);
/**
*
* 判定schema是否已经注册
*/
boolean isSchemaExist(String microserviceId, String schemaId);
/**
*
* 注册schema
*/
boolean registerSchema(String microserviceId, String schemaId, String schemaContent);
/**
*
* 获取schema内容
*/
String getSchema(String microserviceId, String schemaId);
/**
* <p>
* if connect to normal ServiceCenter, same with the method
* {@linkplain org.apache.servicecomb.serviceregistry.client.ServiceRegistryClient#getSchema(String, String)}
* if connect to ServiceCenter Aggregator, not only contain the target ServiceCenter but also other ServiceCenter clusters
* </p>
*/
String getAggregatedSchema(String microserviceId, String schemaId);
/**
*
* 批量获取schemas内容
*/
Holder<List<GetSchemaResponse>> getSchemas(String microserviceId);
/**
*
* 注册微服务实例
*/
String registerMicroserviceInstance(MicroserviceInstance instance);
/**
*
* 根据多个微服务唯一标识查询所有微服务实例信息
*/
List<MicroserviceInstance> getMicroserviceInstance(String consumerId, String providerId);
/**
* 更新微服务实例properties
*/
boolean updateInstanceProperties(String microserviceId, String microserviceInstanceId,
Map<String, String> instanceProperties);
/**
*
* 去注册微服务实例
*/
boolean unregisterMicroserviceInstance(String microserviceId, String microserviceInstanceId);
/**
*
* 服务端返回失败,表示需要重新注册,重新watch
*/
HeartbeatResponse heartbeat(String microserviceId, String microserviceInstanceId);
/**
*
* watch实例变化
*/
void watch(String selfMicroserviceId, AsyncResultCallback<MicroserviceInstanceChangedEvent> callback);
/**
*
* watch实例变化
*/
void watch(String selfMicroserviceId, AsyncResultCallback<MicroserviceInstanceChangedEvent> callback,
AsyncResultCallback<Void> onOpen, AsyncResultCallback<Void> onClose);
/**
*
* 按照app+interface+version查询实例endpoints信息
*/
List<MicroserviceInstance> findServiceInstance(String consumerId, String appId, String serviceName,
String versionRule);
/**
*
* 按照app+interface+version+revision查询实例endpoints信息
*/
MicroserviceInstances findServiceInstances(String consumerId, String appId, String serviceName,
String versionRule, String revision);
/**
* 通过serviceId, instanceId 获取instance对象。
* @param serviceId
* @param instanceId
* @return MicroserviceInstance
*/
MicroserviceInstance findServiceInstance(String serviceId, String instanceId);
/**
* get ServiceCenterVersionInfo
*/
ServiceCenterInfo getServiceCenterInfo();
/**
* 修改微服务实例状态
* @param microserviceId
* @param microserviceInstanceId
* @return
* @deprecated use {@link #updateMicroserviceInstanceStatus(String, String, MicroserviceInstanceStatus)} instead
*/
@Deprecated
default boolean undateMicroserviceInstanceStatus(String microserviceId, String microserviceInstanceId,
String status) {
MicroserviceInstanceStatus instanceStatus;
try {
instanceStatus = MicroserviceInstanceStatus.valueOf(status);
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException("Invalid status: " + status);
}
return updateMicroserviceInstanceStatus(microserviceId, microserviceInstanceId, instanceStatus);
}
/**
* Update the instance status registered in service center.
* @param microserviceId the microserviceId of the instance
* @param instanceId the instanceId of the instance
* @param status update to this status
* @return whether this operation success
*/
boolean updateMicroserviceInstanceStatus(String microserviceId, String instanceId, MicroserviceInstanceStatus status);
}