Exemplo n.º 1
0
        public async Task StartAsync(
            IConsumer <byte[], byte[]> consumer,
            IEnumerable <TopicPartition> partitions,
            CancellationToken stopCancellationToken = default)
        {
            this.offsetManager = new OffsetManager(
                new OffsetCommitter(
                    consumer,
                    this.configuration.AutoCommitInterval,
                    this.logHandler),
                partitions);

            await Task.WhenAll(
                Enumerable
                .Range(0, this.configuration.WorkerCount)
                .Select(
                    workerId =>
            {
                var worker = new ConsumerWorker(
                    consumer,
                    workerId,
                    this.configuration,
                    this.offsetManager,
                    this.logHandler,
                    this.middlewareExecutor);

                this.workers.Add(worker);

                return(worker.StartAsync(stopCancellationToken));
            }))
            .ConfigureAwait(false);

            this.distributionStrategy = this.distributionStrategyFactory(this.dependencyResolver);
            this.distributionStrategy.Init(this.workers.AsReadOnly());
        }
Exemplo n.º 2
0
 public CreateCollectionOperation()
 {
     _createCollectionCommand = new Alachisoft.NosDB.Common.Protobuf.CreateCollectionCommand.Builder();
     _collectionConfiguration = new CollectionConfiguration();
     _distribution            = null;
     base.Message             = this;
 }
        public void ConfigureDistributionStategy(string collection, IDistributionStrategy strategy)
        {
            ManagementCommand command = GetManagementCommand(ConfigurationCommandUtil.MethodName.ConfigureDistributionStategy, 1);

            command.Parameters.AddParameter(collection);
            command.Parameters.AddParameter(strategy);

            ExecuteCommandOnConfigurationServer(command, false);
        }
 public void ConfigureDistributionStategy(string collection, IDistributionStrategy strategy)
 {
     try
     {
         this.service.ConfigureDistributionStategy(this.cluster, this.shard, collection, strategy, true);
         NotifyConfigurationChange(cluster);
     }
     catch (System.Exception ex)
     {
     }
 }
Exemplo n.º 5
0
 public void Deserialize(Common.Serialization.IO.CompactReader reader)
 {
     Name                  = reader.ReadObject() as string;
     CappedInfo            = reader.ReadObject() as CappedInfo;
     ParitionKey           = reader.ReadObject() as PartitionKey;
     Statistics            = reader.ReadObject() as CollectionStatistics;
     _distributionStrategy = reader.ReadObject() as IDistributionStrategy;
     //DataDistribution = reader.ReadObject() as IDistribution;
     CollectionShard = reader.ReadObject() as string;
     UID             = reader.ReadObject() as string;
 }
Exemplo n.º 6
0
        public MessageClient(IServiceClient serviceClient)
        {
            _serviceClient = serviceClient;

            _serviceAddress = new TaskCompletionSource <Uri>();

            var cacheSettings = new CacheSettings(1000, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(30));

            _cache = new GreenCache <EndpointInfo>(cacheSettings);
            _index = _cache.AddIndex("endpointId", x => x.EndpointId);

            _distribution = new ConsistentHashDistributionStrategy <EndpointInfo>(new Murmur3AUnsafeHashGenerator(), GetHashKey);
            _distribution.Init(Enumerable.Empty <EndpointInfo>());
        }
Exemplo n.º 7
0
        public ServiceClientMessageCache(IClientFactory clientFactory, Guid clientId, IServiceInstanceCache instanceCache)
        {
            _clientFactory = clientFactory;
            _instanceCache = instanceCache;

            ClientId = clientId;

            _serviceAddress = TaskUtil.GetTask <Uri>();

            _distribution = new ConsistentHashDistributionStrategy <ServiceInstanceContext>(new Murmur3AUnsafeHashGenerator(), GetHashKey);
            _distribution.Init(Enumerable.Empty <ServiceInstanceContext>());

            instanceCache.Connect(this);
        }
Exemplo n.º 8
0
        public MessageClient(IClientFactory clientFactory, Guid clientId)
        {
            _clientFactory = clientFactory;

            ClientId = clientId;

            _serviceAddress = TaskUtil.GetTask <Uri>();

            var cacheSettings = new CacheSettings(1000, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(30));

            _cache = new GreenCache <EndpointInfo>(cacheSettings);
            _index = _cache.AddIndex("endpointId", x => x.EndpointId);

            _distribution = new ConsistentHashDistributionStrategy <EndpointInfo>(new Murmur3AUnsafeHashGenerator(), GetHashKey);
            _distribution.Init(Enumerable.Empty <EndpointInfo>());
        }
Exemplo n.º 9
0
        /// <summary>
        /// Occurs when ASP.NET acquires the current state (for example, session state) associated
        /// with the current request.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="ea"></param>
        private void OnAcquireRequestState(object source, EventArgs ea)
        {
            _transformer        = new MonolithicDistribution();
            this._acquireCalled = true;
            this._releaseCalled = false;
            HttpApplication application = (HttpApplication)source;
            HttpContext     context     = application.Context;

            _httpSession = context.Session;

            if (_httpSession != null)
            {
                FillAspNetSessionFromNCache(context);
            }
            else
            {
                if (NCacheLog != null)
                {
                    NCacheLog.Error("NSessionStateModule.OnAcquireRequestState", "Session is null");
                }
            }
        }
Exemplo n.º 10
0
        public void RestoreDistributionStrategy(string cluster, string database, string collection, IDistributionStrategy strategy)
        {
            ClusterInfo clusterInfo = (ClusterInfo)_clusterMetaData[cluster];

            if (clusterInfo.Databases != null)
            {
                clusterInfo.GetDatabase(database).GetCollection(collection).DistributionStrategy = strategy;
                //clusterInfo.GetDatabase(database).GetCollection(collection).DataDistribution = strategy.GetCurrentBucketDistribution();
                _configurationStore.InsertOrUpdateDistributionStrategy(clusterInfo, database, collection);
                
                if (LoggerManager.Instance.RecoveryLogger != null && LoggerManager.Instance.RecoveryLogger.IsInfoEnabled)
                    LoggerManager.Instance.RecoveryLogger.Info("MetaStore.RestoreDistributionStrrategy()", "Updated");
            }
        }
Exemplo n.º 11
0
 public void RemoveDistributionStrategy()
 {
     _distributionStrategy = null;
     //DataDistribution = null;
 }
Exemplo n.º 12
0
 public void SetDistributionStrategy(DistributionStrategyConfiguration configuration, IDistributionStrategy strategy)
 {
     _distributionStrategy = strategy;
     // DataDistribution = _distributionStrategy.GetCurrentBucketDistribution();
 }
Exemplo n.º 13
0
 /// <summary>
 /// Occurs after ASP.NET finishes executing all request handlers. This event causes state
 /// modules to save the current state data.
 /// </summary>
 /// <param name="source"></param>
 /// <param name="ea"></param>
 private void OnReleaseRequestState(object source, EventArgs ea)
 {
     this._releaseCalled = true;
     FillNCacheFromAspNetSession(HttpContext.Current);
     _transformer = null;
 }
Exemplo n.º 14
0
        public bool CreateCollection(string cluster, string shard, string database, CollectionConfiguration configuration, IDistributionStrategy distribution)
        {
            ManagementCommand command = GetManagementCommand(ConfigurationCommandUtil.MethodName.CreateCollection);

            command.Parameters.AddParameter(cluster);
            command.Parameters.AddParameter(shard.ToLower());
            command.Parameters.AddParameter(database);
            command.Parameters.AddParameter(configuration);
            command.Parameters.AddParameter(distribution);
            return((bool)ExecuteCommandOnMgtServer(command, true));
        }
Exemplo n.º 15
0
        //IDictionary<string, ClusterInfo> _clusterMetaData = new Dictionary<string, ClusterInfo>();


        public void AddDistributionStrategy(string cluster, string database, string collection, IDistributionStrategy strategy, DistributionStrategyConfiguration configuration, Boolean needTransfer)
        {
            ClusterInfo clusterInfo = (ClusterInfo)_clusterMetaData[cluster];

            if (clusterInfo.Databases != null)
            {
                DatabaseInfo databaseInfo = clusterInfo.GetDatabase(database);
                
                CollectionInfo collectionInfo = databaseInfo.GetCollection(collection);
                collectionInfo.SetDistributionStrategy(configuration, strategy);
                if (collectionInfo.DistributionStrategy.Name.Equals(DistributionType.NonSharded.ToString()))
                {
                    collectionInfo.DistributionStrategy.AddShard(collectionInfo.CollectionShard, null, needTransfer);
                    //In case of NonShardedDistributionStrategy: The shard told by user must be added first. That is why this check is placed
                }

                _clusterMetaData[cluster] = clusterInfo;
                _configurationStore.InsertOrUpdateDistributionStrategy(clusterInfo, database, collection);
            }

        }
Exemplo n.º 16
0
 public EvaluationVisitor(IDistributionStrategy distributionStrategy, Option <MoneyEvaluationContext> context)
 {
     _distributionStrategy = distributionStrategy;
     _context = context;
 }
Exemplo n.º 17
0
        public void SetDistributionStrategy(string cluster, string database, string collection, IDistributionStrategy distribution)
        {
            ClusterInfo clusterInfo = (ClusterInfo)_clusterMetaData[cluster];

            if (clusterInfo.Databases != null)
            {
                clusterInfo.GetDatabase(database).GetCollection(collection).DistributionStrategy = distribution;
                _configurationStore.InsertOrUpdateDistributionStrategy(clusterInfo, database, collection);
            }
        }
Exemplo n.º 18
0
 public void ConfigureDistributionStategy(string cluster, string database, string collection, IDistributionStrategy strategy)
 {
     _session.ConfigureDistributionStategy(cluster, database, collection, strategy);
 }
Exemplo n.º 19
0
 public bool CreateCollection(string cluster, string shard, string database, CollectionConfiguration configuration, IDistributionStrategy distribution)
 {
     try
     {
         return(this.dbMgtServer.CreateCollection(cluster, shard, database, configuration, distribution));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 public void ConfigureDistributionStategy(string collection, IDistributionStrategy strategy)
 {
     _shardSession.ConfigureDistributionStategy(collection, strategy);
 }