示例#1
0
        public PingUtil(ILoadBalancerContext loadBalancerContext, ILog logger)
        {
            ParameterChecker.NotNull(loadBalancerContext, "loadBalancerContext");
            ParameterChecker.NotNull(logger, "logger");

            _loadBalancerContext = loadBalancerContext;
            _logger = logger;
        }
        public DefaultServerSourceFilter(ILoadBalancerContext loadBalancerContext)
        {
            _loadBalancerContext = loadBalancerContext;

            _statusMetricManager         = loadBalancerContext.StatusMetricManager;
            _serverCountMetrics          = new ConcurrentDictionary <string, IStatusMetric <double> >();
            _availableServerCountMetrics = new ConcurrentDictionary <string, IStatusMetric <double> >();
        }
示例#3
0
        public DefaultLoadBalancerRuleFactoryManager(ILoadBalancerContext loadBalancerContext)
        {
            _loadBalancerContext       = loadBalancerContext;
            _loadBalanceRuleFactoryMap = new ConcurrentDictionary <string, Func <ILoadBalancerRule> >();
            _loadBalanceRuleFactoryMap[RoundRobinRuleName]         = () => new RoundRobinRule();
            _loadBalanceRuleFactoryMap[WeightedRoundRobinRuleName] = () => new WeightedRoundRobinRule();

            _ruleId            = WeightedRoundRobinRuleName;
            _ruleFactory       = _loadBalanceRuleFactoryMap[WeightedRoundRobinRuleName];
            _loadBalancerRules = new ConcurrentDictionary <string, ILoadBalancerRule>();

            InitializeRuleProperty();
        }
示例#4
0
        public DefaultServerSourceManager(ILoadBalancerContext loadBalancerContext)
        {
            _loadBalancerContext = loadBalancerContext;
            _serializer          = new DataContractJsonSerializer(typeof(List <LoadBalancerRoute>));

            string prefix = _loadBalancerContext.LoadBalancerKey;

            _dataFolder = _loadBalancerContext.ConfigurationManager.GetProperty(prefix + "." + ConfigurationKeys.DataFolder);

            string globalPrefix = _loadBalancerContext.ManagerId;

            _globalDataFolder = _loadBalancerContext.ConfigurationManager.GetProperty(globalPrefix + "." + ConfigurationKeys.DataFolder);
        }
示例#5
0
        public ServerStats(ILoadBalancerContext loadBalancerContext)
        {
            _loadBalancerContext = loadBalancerContext;

            string prefix = loadBalancerContext.LoadBalancerKey;

            _counterBufferConfigProperty = loadBalancerContext.ConfigurationManager.GetProperty(prefix + "." + ConfigurationKeys.CounterBuffer, null, ConfigParser, ConfigCorrector);

            string globalPrefix = loadBalancerContext.ManagerId;

            _globalCounterBufferConfigProperty = loadBalancerContext.ConfigurationManager.GetProperty(globalPrefix + "." + ConfigurationKeys.CounterBuffer, DefaultConfig, ConfigParser, ConfigCorrector);

            _counterBufferConfigProperty.OnChange       += OnChange;
            _globalCounterBufferConfigProperty.OnChange += OnChange;

            Reset();
        }
示例#6
0
        public DefaultServerSourceMonitor(ILoadBalancerContext loadBalancerContext)
        {
            _loadBalancerContext = loadBalancerContext;
            _pingUtil            = new PingUtil(_loadBalancerContext, _logger);

            var    configurationManager = _loadBalancerContext.ConfigurationManager;
            string prefix = _loadBalancerContext.LoadBalancerKey;

            CheckIntervalInMillisecondProperty = configurationManager.GetProperty <int?>(prefix + "." + ConfigurationKeys.CheckInterval);
            FailureThresholdPercentageProperty = configurationManager.GetProperty <int?>(prefix + "." + ConfigurationKeys.FailureThresholdPercentage);

            string globalPrefix = _loadBalancerContext.ManagerId;

            GlobalCheckIntervalInMillisecondProperty = configurationManager.GetProperty <int?>(globalPrefix + "." + ConfigurationKeys.CheckInterval, DefaultCheckInterval);
            GlobalFailureThresholdPercentageProperty = configurationManager.GetProperty <int?>(globalPrefix + "." + ConfigurationKeys.FailureThresholdPercentage, DefaultFailureThresholdPercent);

            _checkHealthLatencyMetrics = new ConcurrentDictionary <string, IAuditMetric>();
            _checkHealthEventMetrics   = new ConcurrentDictionary <string, IEventMetric>();
        }
示例#7
0
 public RandomRule(ILoadBalancerContext lbContext) : base(lbContext)
 {
     random = new Random();
 }
示例#8
0
 public static string GetDistributionMetricName(this ILoadBalancerContext loadBalancerContext, string metricSuffix)
 {
     return(string.Format("{0}.{1}.distribution", loadBalancerContext.ManagerId, metricSuffix));
 }
示例#9
0
 public static string GetMetricId(this ILoadBalancerContext loadBalancerContext, string metricSuffix)
 {
     return(string.Format("{0}.{1}", loadBalancerContext.LoadBalancerKey, metricSuffix));
 }
示例#10
0
 public AbstractRule(ILoadBalancerContext lbContext)
 {
     loadBalancerContext = lbContext;
 }
 public WeightedRoundRobinRule(ILoadBalancerContext lbContext) : base(lbContext)
 {
     current = 0;
 }
示例#12
0
 public AbstractWeightedRule(ILoadBalancerContext lbContext) : base(lbContext)
 {
     session = new Session(10);
     servers = loadBalancerContext.Servers;
     loadBalancerContext.OnServerListUpdated += ServerListChangedEventHandler;
 }
示例#13
0
 public RoundRobbinRule(ILoadBalancerContext lbContext) : base(lbContext)
 {
     current = -1;
 }
 public DefaultLoadBalancerRequestContext(Server server, ILoadBalancerContext loadBalancerContext)
 {
     this.Server = server;
     this.LoadBalancerContext = loadBalancerContext;
     this.ServerStats         = loadBalancerContext.GetServerStats(server);
 }
示例#15
0
 public DefaultLoadBalancer(ILoadBalancerContext loadBalancerContext)
 {
     LoadBalancerContext = loadBalancerContext;
     loadBalancerRules   = new ConcurrentDictionary <string, ILoadBalancerRule>();
 }