Ejemplo n.º 1
0
        public SiloProviderRuntime(
            SiloInitializationParameters siloDetails,
            GlobalConfiguration config,
            IGrainFactory grainFactory,
            IConsistentRingProvider consistentRingProvider,
            ISiloRuntimeClient runtimeClient,
            IServiceProvider serviceProvider,
            ImplicitStreamSubscriberTable implicitStreamSubscriberTable,
            ISiloStatusOracle siloStatusOracle,
            OrleansTaskScheduler scheduler,
            ActivationDirectory activationDirectory)
        {
            this.siloDetails            = siloDetails;
            this.siloStatusOracle       = siloStatusOracle;
            this.scheduler              = scheduler;
            this.activationDirectory    = activationDirectory;
            this.consistentRingProvider = consistentRingProvider;
            this.runtimeClient          = runtimeClient;
            this.ServiceId              = config.ServiceId;
            this.SiloIdentity           = siloDetails.SiloAddress.ToLongString();
            this.GrainFactory           = grainFactory;
            this.ServiceProvider        = serviceProvider;

            this.grainBasedPubSub = new GrainBasedPubSubRuntime(this.GrainFactory);
            var tmp = new ImplicitStreamPubSub(implicitStreamSubscriberTable);

            this.implictPubSub = tmp;
            this.combinedGrainBasedAndImplicitPubSub = new StreamPubSubImpl(this.grainBasedPubSub, tmp);
        }
Ejemplo n.º 2
0
 public MessageCenter(SiloInitializationParameters silo, NodeConfiguration nodeConfig, IMessagingConfiguration config, ISiloPerformanceMetrics metrics = null)
 {
     this.Initialize(silo.SiloAddress.Endpoint, nodeConfig.Generation, config, metrics);
     if (nodeConfig.IsGatewayNode)
     {
         this.InstallGateway(nodeConfig.ProxyGatewayEndpoint);
     }
 }
Ejemplo n.º 3
0
 public MessageCenter(SiloInitializationParameters silo, NodeConfiguration nodeConfig, IMessagingConfiguration config, ISiloPerformanceMetrics metrics = null)
 {
     this.Initialize(silo.SiloAddress.Endpoint, nodeConfig.Generation, config, metrics);
     if (nodeConfig.IsGatewayNode)
     {
         this.InstallGateway(nodeConfig.ProxyGatewayEndpoint);
     }
 }
Ejemplo n.º 4
0
 public MessageCenter(
     SiloInitializationParameters silo,
     NodeConfiguration nodeConfig,
     IMessagingConfiguration config,
     SerializationManager serializationManager,
     ISiloPerformanceMetrics metrics,
     MessageFactory messageFactory)
 {
     this.serializationManager = serializationManager;
     this.messageFactory = messageFactory;
     this.Initialize(silo.SiloAddress.Endpoint, nodeConfig.Generation, config, metrics);
     if (nodeConfig.IsGatewayNode)
     {
         this.InstallGateway(nodeConfig.ProxyGatewayEndpoint);
     }
 }
        public SiloStatisticsManager(SiloInitializationParameters initializationParams)
        {
            MessagingStatisticsGroup.Init(true);
            MessagingProcessingStatisticsGroup.Init();
            NetworkingStatisticsGroup.Init(true);
            ApplicationRequestsStatisticsGroup.Init(initializationParams.GlobalConfig.ResponseTimeout);
            SchedulerStatisticsGroup.Init();
            StorageStatisticsGroup.Init();
            runtimeStats           = new RuntimeStatisticsGroup();
            this.logStatistics     = new LogStatistics(initializationParams.NodeConfig.StatisticsLogWriteInterval, true);
            this.MetricsTable      = new SiloPerformanceMetrics(this.runtimeStats, initializationParams.NodeConfig);
            this.countersPublisher = new CountersStatistics(initializationParams.NodeConfig.StatisticsPerfCountersWriteInterval);

            initializationParams.ClusterConfig.OnConfigChange(
                "Defaults/LoadShedding",
                () => this.MetricsTable.NodeConfig = initializationParams.NodeConfig,
                false);
        }
Ejemplo n.º 6
0
        public MultiClusterOracle(SiloInitializationParameters siloDetails, MultiClusterGossipChannelFactory channelFactory, ISiloStatusOracle siloStatusOracle, IInternalGrainFactory grainFactory)
            : base(Constants.MultiClusterOracleId, siloDetails.SiloAddress)
        {
            this.channelFactory = channelFactory;
            this.siloStatusOracle = siloStatusOracle;
            this.grainFactory = grainFactory;
            if (siloDetails == null) throw new ArgumentNullException(nameof(siloDetails));

            var config = siloDetails.GlobalConfig;
            logger = LogManager.GetLogger("MultiClusterOracle");
            localData = new MultiClusterOracleData(logger, grainFactory);
            clusterId = config.ClusterId;
            defaultMultiCluster = config.DefaultMultiCluster;
            random = new SafeRandom();

            // to avoid convoying, each silo varies these period intervals a little
            backgroundGossipInterval = RandomizeTimespanSlightly(config.BackgroundGossipInterval);
            resendActiveStatusAfter = RandomizeTimespanSlightly(ResendActiveStatusAfter);
        }
Ejemplo n.º 7
0
        public SiloStatisticsManager(SiloInitializationParameters initializationParams, SerializationManager serializationManager, ITelemetryProducer telemetryProducer, ILoggerFactory loggerFactory)
        {
            MessagingStatisticsGroup.Init(true);
            MessagingProcessingStatisticsGroup.Init();
            NetworkingStatisticsGroup.Init(true);
            ApplicationRequestsStatisticsGroup.Init(initializationParams.ClusterConfig.Globals.ResponseTimeout);
            SchedulerStatisticsGroup.Init(loggerFactory);
            StorageStatisticsGroup.Init();
            TransactionsStatisticsGroup.Init();
            this.logger            = new LoggerWrapper <SiloStatisticsManager>(loggerFactory);
            runtimeStats           = new RuntimeStatisticsGroup(loggerFactory);
            this.logStatistics     = new LogStatistics(initializationParams.NodeConfig.StatisticsLogWriteInterval, true, serializationManager, loggerFactory);
            this.MetricsTable      = new SiloPerformanceMetrics(this.runtimeStats, loggerFactory, initializationParams.NodeConfig);
            this.countersPublisher = new CountersStatistics(initializationParams.NodeConfig.StatisticsPerfCountersWriteInterval, telemetryProducer, loggerFactory);

            initializationParams.ClusterConfig.OnConfigChange(
                "Defaults/LoadShedding",
                () => this.MetricsTable.NodeConfig = initializationParams.NodeConfig,
                false);
        }