예제 #1
0
        public GrpcTestClient(LightningConfig lightningConfig)
        {
            var port = (uint)Interlocked.Increment(ref _startingPort);

            lightningConfig.Name = $"{lightningConfig.Name ?? "db"}_{port}"; // It is safe to do as LightningConfig is a struct

            if (Directory.Exists(lightningConfig.Name))
            {
                Directory.Delete(lightningConfig.Name, true);
            }

            ReplicaConfig = new ReplicaConfig
            {
                ReplicaId   = "replica_1",
                Port        = port,
                Replication = new ReplicationConfig {
                    Port = port + 2000, PageSize = 10000, UseBatching = false
                },
                Persistence = lightningConfig
            };
            _server = new Replica(ReplicaConfig);

            _client = new LightClient(new Channel($"127.0.0.1:{port}", ChannelCredentials.Insecure), new ClientConfig
            {
                UseStreaming = true,
                Compression  = None,
                HashedWith   = Md5
            });
        }
예제 #2
0
        static void Main(string[] args)
        {
            ConfigureLog($"logs/CacheServer_{DateTime.Now}.nlog");
            GC.AddMemoryPressure(2L * 1024 * 1024 * 1024);
            GrpcEnvironment.SetLogger(new LogLevelFilterLogger(new ConsoleLogger(), LogLevel.Debug));
            // GrpcEnvironment.SetLogger(new TextWriterLogger(new StreamWriter(File.OpenWrite($"logs/CacheServer_{DateTime.Now}.log"))));

            var lightningConfig = new LightningConfig
            {
                Name                          = @"C:\Work2\braindump\LmdbCacheServer\TestDir",
                MaxTables                     = 20,
                StorageLimit                  = 10,
                WriteBatchMaxDelegates        = 1000,
                WriteBatchTimeoutMilliseconds = 1,
                SyncMode                      = LightningDbSyncMode.NoSync
            };

            var replicaConfigMaster = new ReplicaConfig
            {
                ReplicaId          = "replica_1",
                Port               = Port,
                MonitoringInterval = 10000,
                Replication        = new ReplicationConfig {
                    Port = Port + 2000, PageSize = 10000, UseBatching = false
                },
                Persistence = lightningConfig
            };

            var lightningConfigSlave = lightningConfig.Clone();

            lightningConfigSlave.Name = @"C:\Work2\braindump\LmdbCacheServer\TestDir_Slave";
            lightningConfigSlave.WriteBatchMaxDelegates        = 10000;
            lightningConfigSlave.WriteBatchTimeoutMilliseconds = 1;
            lightningConfigSlave.SyncMode = LightningDbSyncMode.NoSync;
            var replicaConfigSlave = new ReplicaConfig
            {
                ReplicaId   = "replica_2",
                MasterNode  = $"{"127.0.0.1"}:{replicaConfigMaster.Replication.Port}",
                Replication = new ReplicationConfig {
                    Port = Port + 2500, PageSize = 10000, UseBatching = false
                },
                Port = Port + 500,
                MonitoringInterval = 10000,
                Persistence        = lightningConfigSlave
            };

            using (var server = new Replica.Replica(args.Length == 0 ? replicaConfigMaster : replicaConfigSlave))
            {
                Console.WriteLine("Cache server started on port " + Port);
                Console.WriteLine("Press any key to stop the server...");

                Console.ReadKey();
            }
        }