git-subtree-dir: vendor/ruvector git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
/**
|
|
* Load Balancer - Intelligent request routing and traffic management
|
|
*
|
|
* Features:
|
|
* - Circuit breaker pattern
|
|
* - Rate limiting per client
|
|
* - Regional routing
|
|
* - Request prioritization
|
|
* - Health-based routing
|
|
*/
|
|
import { EventEmitter } from 'events';
|
|
export interface LoadBalancerConfig {
|
|
maxRequestsPerSecond?: number;
|
|
circuitBreakerThreshold?: number;
|
|
circuitBreakerTimeout?: number;
|
|
halfOpenMaxRequests?: number;
|
|
backends?: BackendConfig[];
|
|
enableRegionalRouting?: boolean;
|
|
priorityQueueSize?: number;
|
|
}
|
|
export interface BackendConfig {
|
|
id: string;
|
|
host: string;
|
|
region?: string;
|
|
weight?: number;
|
|
maxConcurrency?: number;
|
|
}
|
|
declare enum RequestPriority {
|
|
LOW = 0,
|
|
NORMAL = 1,
|
|
HIGH = 2,
|
|
CRITICAL = 3
|
|
}
|
|
/**
|
|
* Load Balancer
|
|
*/
|
|
export declare class LoadBalancer extends EventEmitter {
|
|
private rateLimiter;
|
|
private backendManager;
|
|
private requestQueue;
|
|
private config;
|
|
constructor(config: LoadBalancerConfig);
|
|
route(collection: string, query: any, clientId?: string, priority?: RequestPriority): Promise<boolean>;
|
|
executeWithLoadBalancing<T>(fn: () => Promise<T>, region?: string, priority?: RequestPriority): Promise<T>;
|
|
updateBackendHealth(backendId: string, healthScore: number): void;
|
|
private updateMetrics;
|
|
getStats(): {
|
|
rateLimit: {
|
|
totalClients: number;
|
|
limitedClients: number;
|
|
};
|
|
backends: Record<string, any>;
|
|
queueSize: number;
|
|
};
|
|
reset(): void;
|
|
}
|
|
export {};
|
|
//# sourceMappingURL=load-balancer.d.ts.map
|