public MicrodotIncomingGrainCallFilter(IEventPublisher <GrainCallEvent> eventPublisher,
                                               Func <LoadShedding> loadSheddingConfig, ILog log, ClusterIdentity clusterIdentity, Func <GrainLoggingConfig> grainLoggingConfig)
        {
            _log                = log;
            _clusterIdentity    = clusterIdentity;
            _grainLoggingConfig = grainLoggingConfig;

            _eventPublisher     = eventPublisher;
            _loadSheddingConfig = loadSheddingConfig;
            EventsDiscarded     = Metric.Context("GigyaSiloHost").Counter("GrainCallEvents discarded", Unit.Items);
        }
        public MicrodotIncomingGrainCallFilter(IEventPublisher <GrainCallEvent> eventPublisher,
                                               Func <LoadShedding> loadSheddingConfig, ILog log, ClusterIdentity clusterIdentity, Func <GrainLoggingConfig> grainLoggingConfig)
        {
            _log                = log;
            _clusterIdentity    = clusterIdentity;
            _grainLoggingConfig = grainLoggingConfig;

            _eventPublisher     = eventPublisher;
            _loadSheddingConfig = loadSheddingConfig;

            DropEvent = Metric.Context("Silo").Meter("LoadShedding Drop Event", Unit.Items);
        }
 public OrleansConfigurationBuilder(OrleansConfig orleansConfig, OrleansCodeConfig commonConfig,
                                    OrleansServiceInterfaceMapper orleansServiceInterfaceMapper,
                                    ClusterIdentity clusterIdentity, IServiceEndPointDefinition endPointDefinition,
                                    ServiceArguments serviceArguments,
                                    CurrentApplicationInfo appInfo)
 {
     _orleansConfig = orleansConfig;
     _commonConfig  = commonConfig;
     _orleansServiceInterfaceMapper = orleansServiceInterfaceMapper;
     _clusterIdentity    = clusterIdentity;
     _endPointDefinition = endPointDefinition;
     _serviceArguments   = serviceArguments;
     _appInfo            = appInfo;
     _siloHostBuilder    = InitBuilder();
 }
Пример #4
0
        public OrleansConfigurationBuilder(OrleansConfig orleansConfig, OrleansCodeConfig commonConfig, OrleansServiceInterfaceMapper orleansServiceInterfaceMapper,
                                           ClusterConfiguration clusterConfiguration, ClusterIdentity clusterIdentity, IServiceEndPointDefinition endPointDefinition,
                                           OrleansLogConsumer orleansLogConsumer, ZooKeeperLogConsumer zooKeeperLogConsumer, ServiceArguments serviceArguments)
        {
            ClusterConfiguration = clusterConfiguration;

            SiloType = Silo.SiloType.Secondary;
            var globals  = ClusterConfiguration.Globals;
            var defaults = ClusterConfiguration.Defaults;

            SetAgeLimits(globals, orleansConfig, orleansServiceInterfaceMapper);

            globals.ExpectedClusterSize = 1; // Minimizes artificial startup delay to a maximum of 0.5 seconds (instead of 10 seconds).
            globals.RegisterBootstrapProvider <DelegatingBootstrapProvider>(nameof(DelegatingBootstrapProvider));
            defaults.ProxyGatewayEndpoint = new IPEndPoint(IPAddress.Loopback, endPointDefinition.SiloGatewayPort);
            defaults.Port = endPointDefinition.SiloNetworkingPort;
            defaults.DefaultConnectionLimit = ServicePointManager.DefaultConnectionLimit;

            if (serviceArguments.ProcessorAffinity != null)
            {
                defaults.MaxActiveThreads = serviceArguments.ProcessorAffinity.Length;
            }

            // Orleans log redirection
            defaults.TraceToConsole   = false;
            defaults.TraceFileName    = null;
            defaults.TraceFilePattern = null;
            LogManager.LogConsumers.Add(orleansLogConsumer);

            // ZooKeeper log redirection
            ZooKeeper.LogToFile         = false;
            ZooKeeper.LogToTrace        = false;
            ZooKeeper.LogLevel          = TraceLevel.Verbose;
            ZooKeeper.CustomLogConsumer = zooKeeperLogConsumer;

            //Setup Statistics
            var metricsProviderType = typeof(MetricsStatisticsPublisher);

            globals.ProviderConfigurations.Add("Statistics", new ProviderCategoryConfiguration("Statistics")
            {
                Providers = new Dictionary <string, IProviderConfiguration>
                {
                    {
                        metricsProviderType.Name,
                        new ProviderConfiguration(new Dictionary <string, string>(), metricsProviderType.FullName, metricsProviderType.Name)
                    }
                }
            });
            defaults.StatisticsProviderName              = metricsProviderType.Name;
            defaults.StatisticsCollectionLevel           = StatisticsLevel.Info;
            defaults.StatisticsLogWriteInterval          = TimeSpan.Parse(orleansConfig.MetricsTableWriteInterval);
            defaults.StatisticsWriteLogStatisticsToTable = true;

            if (commonConfig.ServiceArguments.SiloClusterMode != SiloClusterMode.ZooKeeper)
            {
                defaults.HostNameOrIPAddress = "localhost";
                globals.ReminderServiceType  = commonConfig.UseReminders
                    ? GlobalConfiguration.ReminderServiceProviderType.ReminderTableGrain
                    : GlobalConfiguration.ReminderServiceProviderType.Disabled;

                globals.LivenessType = GlobalConfiguration.LivenessProviderType.MembershipTableGrain;

                if (commonConfig.ServiceArguments.SiloClusterMode == SiloClusterMode.PrimaryNode)
                {
                    globals.SeedNodes.Add(new IPEndPoint(IPAddress.Loopback, endPointDefinition.SiloNetworkingPort));
                    SiloType = Silo.SiloType.Primary;
                }
                else
                {
                    globals.SeedNodes.Add(new IPEndPoint(IPAddress.Loopback, endPointDefinition.SiloNetworkingPortOfPrimaryNode));
                }
            }
            else
            {
                globals.DeploymentId         = clusterIdentity.DeploymentId;
                globals.LivenessType         = GlobalConfiguration.LivenessProviderType.ZooKeeper;
                globals.DataConnectionString = orleansConfig.ZooKeeper.ConnectionString;

                if (commonConfig.UseReminders)
                {
                    globals.ServiceId           = clusterIdentity.ServiceId;
                    globals.ReminderServiceType = GlobalConfiguration.ReminderServiceProviderType.SqlServer;
                    globals.DataConnectionStringForReminders = orleansConfig.MySql_v4_0.ConnectionString;
                    globals.AdoInvariantForReminders         = "MySql.Data.MySqlClient";
                }
                else
                {
                    globals.ReminderServiceType = GlobalConfiguration.ReminderServiceProviderType.Disabled;
                }
            }

            if (string.IsNullOrEmpty(commonConfig.StorageProviderTypeFullName) == false)
            {
                //globals.RegisterStorageProvider<MemoryStorage>("OrleansStorage");
                globals.RegisterStorageProvider(commonConfig.StorageProviderTypeFullName, "Default");
                globals.RegisterStorageProvider(commonConfig.StorageProviderTypeFullName, commonConfig.StorageProviderName);
            }
        }