package cn.novalon.gym.manage.gateway.service;

import org.springframework.cloud.client.ServiceInstance;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

/**
 * 服务发现服务接口
 * 
 * 文件定义：定义服务实例的发现、监控和管理接口
 * 涉及业务：服务实例查询、健康检查、服务状态监控
 * 
 * 核心功能：
 * 1. 服务实例查询
 * 2. 服务健康检查
 * 3. 服务状态监控
 * 4. 服务实例缓存
 * 
 * @author 张翔
 * @date 2026-04-14
 */
public interface IServiceDiscoveryService {
    
    Flux<ServiceInstance> getInstances(String serviceId);
    
    Flux<String> getServices();
    
    Mono<Boolean> isServiceHealthy(String serviceId);
    
    Mono<Long> getInstanceCount(String serviceId);
    
    Mono<Void> refreshServiceCache(String serviceId);
    
    Mono<Void> refreshAllServiceCache();
    
    Mono<Long> getServiceCount();
    
    Mono<Boolean> serviceExists(String serviceId);
    
    Mono<Void> clearServiceCache();
}