@grpc/grpc-js
Version:
gRPC Library for Node - pure JS implementation
71 lines (70 loc) • 3.04 kB
TypeScript
import { ChannelOptions } from './channel-options';
import { Duration } from './duration';
import { ChannelControlHelper } from './experimental';
import { LoadBalancer, TypedLoadBalancingConfig } from './load-balancer';
import { Endpoint } from './subchannel-address';
import { LoadBalancingConfig } from './service-config';
export interface SuccessRateEjectionConfig {
readonly stdev_factor: number;
readonly enforcement_percentage: number;
readonly minimum_hosts: number;
readonly request_volume: number;
}
export interface FailurePercentageEjectionConfig {
readonly threshold: number;
readonly enforcement_percentage: number;
readonly minimum_hosts: number;
readonly request_volume: number;
}
export interface OutlierDetectionRawConfig {
interval?: Duration;
base_ejection_time?: Duration;
max_ejection_time?: Duration;
max_ejection_percent?: number;
success_rate_ejection?: Partial<SuccessRateEjectionConfig>;
failure_percentage_ejection?: Partial<FailurePercentageEjectionConfig>;
child_policy: LoadBalancingConfig[];
}
export declare class OutlierDetectionLoadBalancingConfig implements TypedLoadBalancingConfig {
private readonly childPolicy;
private readonly intervalMs;
private readonly baseEjectionTimeMs;
private readonly maxEjectionTimeMs;
private readonly maxEjectionPercent;
private readonly successRateEjection;
private readonly failurePercentageEjection;
constructor(intervalMs: number | null, baseEjectionTimeMs: number | null, maxEjectionTimeMs: number | null, maxEjectionPercent: number | null, successRateEjection: Partial<SuccessRateEjectionConfig> | null, failurePercentageEjection: Partial<FailurePercentageEjectionConfig> | null, childPolicy: TypedLoadBalancingConfig);
getLoadBalancerName(): string;
toJsonObject(): object;
getIntervalMs(): number;
getBaseEjectionTimeMs(): number;
getMaxEjectionTimeMs(): number;
getMaxEjectionPercent(): number;
getSuccessRateEjectionConfig(): SuccessRateEjectionConfig | null;
getFailurePercentageEjectionConfig(): FailurePercentageEjectionConfig | null;
getChildPolicy(): TypedLoadBalancingConfig;
static createFromJson(obj: any): OutlierDetectionLoadBalancingConfig;
}
export declare class OutlierDetectionLoadBalancer implements LoadBalancer {
private childBalancer;
private entryMap;
private latestConfig;
private ejectionTimer;
private timerStartTime;
constructor(channelControlHelper: ChannelControlHelper);
private isCountingEnabled;
private getCurrentEjectionPercent;
private runSuccessRateCheck;
private runFailurePercentageCheck;
private eject;
private uneject;
private switchAllBuckets;
private startTimer;
private runChecks;
updateAddressList(endpointList: Endpoint[], lbConfig: TypedLoadBalancingConfig, options: ChannelOptions): void;
exitIdle(): void;
resetBackoff(): void;
destroy(): void;
getTypeName(): string;
}
export declare function setup(): void;