public LoadBalancer( IDiscovery discovery, DeploymentIdentifier deploymentIdentifier, ReachabilityCheck reachabilityCheck, TrafficRoutingStrategy trafficRoutingStrategy, Func <Node, DeploymentIdentifier, ReachabilityCheck, Action, NodeMonitoringState> createNodeMonitoringState, Func <string, AggregatingHealthStatus> getAggregatingHealthStatus, Func <DiscoveryConfig> getConfig, IDateTime dateTime, ILog log, IEnvironment environment ) { DeploymentIdentifier = deploymentIdentifier; Discovery = discovery; ReachabilityCheck = reachabilityCheck; TrafficRoutingStrategy = trafficRoutingStrategy; CreateNodeMonitoringState = createNodeMonitoringState; GetConfig = getConfig; DateTime = dateTime; _lastUsageTime = DateTime.UtcNow; Log = log; var aggregatingHealthStatus = getAggregatingHealthStatus(deploymentIdentifier.ServiceName); string healthCheckEntryName = (deploymentIdentifier.DeploymentEnvironment ?? "prod") + deploymentIdentifier.Zone == environment.Zone ? "" : $" ({deploymentIdentifier.Zone})"; _healthCheck = aggregatingHealthStatus.Register(healthCheckEntryName, CheckHealth); }
private void CreateLoadBalancer(TrafficRoutingStrategy trafficRoutingStrategy = TrafficRoutingStrategy.RandomByRequestID) { var createLoadBalancer = _kernel.Get <Func <DeploymentIdentifier, ReachabilityCheck, TrafficRoutingStrategy, ILoadBalancer> >(); _loadBalancer = createLoadBalancer( new DeploymentIdentifier(ServiceName, Env, _environment), (n, c) => _reachabilityCheck(n, c), trafficRoutingStrategy); }
public LoadBalancer( IDiscovery discovery, DeploymentIdentifier deploymentIdentifier, ReachabilityCheck reachabilityCheck, TrafficRoutingStrategy trafficRoutingStrategy, Func <Node, DeploymentIdentifier, ReachabilityCheck, Action, NodeMonitoringState> createNodeMonitoringState, IHealthMonitor healthMonitor, IDateTime dateTime, ILog log) { DeploymentIdentifier = deploymentIdentifier; Discovery = discovery; ReachabilityCheck = reachabilityCheck; TrafficRoutingStrategy = trafficRoutingStrategy; CreateNodeMonitoringState = createNodeMonitoringState; DateTime = dateTime; Log = log; _healthMonitor = healthMonitor.SetHealthFunction(DeploymentIdentifier.ToString(), () => new ValueTask <HealthCheckResult>(_healthStatus)); }
public ILoadBalancer CreateLoadBalancer(DeploymentIdentifier deploymentIdentifier, ReachabilityCheck reachabilityCheck, TrafficRoutingStrategy trafficRoutingStrategy) { return(_createLoadBalancer(deploymentIdentifier, new LocalNodeSource(), reachabilityCheck, trafficRoutingStrategy)); }