consul-resolver
Version:
A load balancer for Consul services with Redis-based metrics
27 lines (26 loc) • 928 B
TypeScript
import { ServiceHealth, ServiceMetrics, SrvRecord } from "../types";
export declare function roundRobinSelection(services: ServiceHealth[], currentIndex: number): {
id: string;
service: ServiceHealth;
nextIndex: number;
};
export declare function leastConnectionSelection(services: ServiceHealth[], metrics: Map<string, ServiceMetrics>, defaultMetrics: ServiceMetrics): {
id: string;
service: ServiceHealth;
};
export declare function weightedRandomSelection(rankedServices: Array<{
score: number;
id: string;
service: ServiceHealth;
}>): {
id: string;
service: ServiceHealth;
};
export declare function roundRobinSrvSelection(records: SrvRecord[], currentIndex: number): {
selected: SrvRecord;
nextIndex: number;
} | null;
export declare function weightedSrvRecordSelection(records: SrvRecord[], currentIndex: number): {
selected: SrvRecord;
nextIndex: number;
} | null;