Exemplo n.º 1
0
        public void StartEmulateNodes(int nodesQuantity)
        {
            RaftNode rn = null;

            RaftNodeSettings rn_settings = new RaftNodeSettings()
            {
            };

            for (int i = 0; i < nodesQuantity; i++)
            {
                rn         = new RaftNode(rn_settings, this, this);
                rn.Verbose = true;
                rn.SetNodesQuantityInTheCluster((uint)nodesQuantity);
                rn.NodeAddress.NodeAddressId = i + 1;
                nodes.Add(rn.NodeAddress.NodeAddressId, rn);
                System.Threading.Thread.Sleep((new Random()).Next(30, 150));
                // System.Threading.Thread.Sleep(500);
                rn.NodeStart();
            }
        }
Exemplo n.º 2
0
        public void StartEmulateNodes(int nodesQuantity)
        {
            RaftNode rn = null;

            RaftNodeSettings rn_settings = new RaftNodeSettings()
            {
            };

            for (int i = 0; i < nodesQuantity; i++)
            {
                rn         = new RaftNode(rn_settings, @"D:\Temp\RaftDBreeze\node" + (4250 + i), this, this, (entityName, index, data) => { return(true); });
                rn.Verbose = true;
                rn.SetNodesQuantityInTheCluster((uint)nodesQuantity);
                rn.NodeAddress.NodeAddressId = i + 1;
                lock (sync_nodes)
                {
                    nodes.Add(rn.NodeAddress.NodeAddressId, rn);
                }
                System.Threading.Thread.Sleep((new Random()).Next(30, 150));
                // System.Threading.Thread.Sleep(500);
                rn.NodeStart();
            }
        }
Exemplo n.º 3
0
        public void StartEmulateTcpNodes(int nodesQuantity)
        {
            TcpRaftNode trn = null;

            rn_settings = new RaftNodeSettings()
            {
                VerboseRaft = true,
                //VerboseRaft = false,
                VerboseTransport = false,

                DelayedPersistenceIsActive = true,

                //InMemoryEntity = true,
                //InMemoryEntityStartSyncFromLatestEntity = true
            };

            for (int i = 0; i < nodesQuantity; i++)
            {
                eps.Add(new TcpClusterEndPoint()
                {
                    Host = "127.0.0.1", Port = 4250 + i
                });
            }

            for (int i = 0; i < nodesQuantity; i++)
            {
                lock (sync_nodes)
                {
                    //S:\temp\RaftDbr
                    trn = new TcpRaftNode(eps, new List <RaftNodeSettings> {
                        rn_settings
                    }, @"D:\Temp\RaftDBreeze\node" + (4250 + i),
                                          (entityName, index, data) => { Console.WriteLine($"wow committed {entityName}/{index}"); return(true); },
                                          4250 + i, this);

                    //rn = new TcpRaftNode(eps, @"S:\temp\RaftDbr\node" + (4250 + i), 4250 + i,
                    //       (data) => {
                    //           Console.WriteLine($"wow committed");
                    //       }, this, rn_settings);

                    nodes.Add(trn.GetNodeByEntityName("default").NodeAddress.NodeAddressId, trn);
                }

                trn.Start();

                //new Thread(() =>
                //{
                //    rn.Start();
                //    //Thread.CurrentThread.IsBackground = true;

                //    //lock (sync_nodes)
                //    //{
                //    //    rn = new TcpRaftNode(eps, 4250 + i, this, rn_settings);
                //    //    nodes.Add(rn.rn.NodeAddress.NodeAddressId, rn);
                //    //    rn.Start();
                //    //}

                //}).Start();

                //Task.Run(() =>
                //{
                //    rn = new TcpRaftNode(eps, 4250 + i, this, rn_settings);
                //    lock (sync_nodes)
                //    {
                //        nodes.Add(rn.rn.NodeAddress.NodeAddressId, rn);
                //    }
                //    rn.Start();
                //});


                //rn.Verbose = true;
                //rn.SetNodesQuantityInTheCluster((uint)nodesQuantity);
                //rn.NodeAddress.NodeAddressId = i + 1;
                //lock (sync_nodes)
                //{
                //    nodes.Add(4250 + i, rn);
                //}
                System.Threading.Thread.Sleep((new Random()).Next(30, 350));
                //// System.Threading.Thread.Sleep(500);
                //rn.NodeStart();
                //rn.Start();
            }
        }
Exemplo n.º 4
0
        public static TcpRaftNode GetFromConfig(int configVersion, string configuration, string dbreeze, int port, IWarningLog log, Func <string, ulong, byte[], bool> OnCommit)
        {
            //Setip for configVersion=1
            try
            {
                TcpRaftNode rn = null;

                var rn_settings = new RaftNodeSettings()
                {
                    EntityName       = "default",
                    VerboseRaft      = false,
                    VerboseTransport = false
                };

                string[] sev;
                List <TcpClusterEndPoint> eps = new List <TcpClusterEndPoint>();

                List <RaftNodeSettings> rnSettings = new List <RaftNodeSettings>();
                string entityName = "";

                StringReader strReader = new StringReader(configuration);

                while (true)
                {
                    var el = strReader.ReadLine();
                    if (el == null)
                    {
                        break;
                    }

                    var se = el.Split(new char[] { ':' });
                    if (se.Length < 2)
                    {
                        continue;
                    }
                    switch (se[0].Trim().ToLower())
                    {
                    case "endpoint":
                        sev = se[1].Split(new char[] { ',' });
                        eps.Add(new TcpClusterEndPoint()
                        {
                            Host = sev[0].Trim(), Port = Convert.ToInt32(sev[1].Trim())
                        });
                        break;

                    //case "dbreeze":
                    //    dbreeze = String.Join(":",se.Skip(1));
                    //    break;
                    case "entity":
                        entityName = se[1].Trim();
                        if (entityName.ToLower().Equals("default"))
                        {
                            continue;
                        }
                        //flushing default entity and starting new one
                        if (String.IsNullOrEmpty(entityName))
                        {
                            throw new Exception("Raft.Net: configuration entity name must not be empty and must be unique among other entities");
                        }
                        rnSettings.Add(rn_settings);
                        rn_settings = new RaftNodeSettings {
                            EntityName = entityName
                        };
                        break;

                    case "verboseraft":
                        if (se[1].Trim().ToLower().Equals("true"))
                        {
                            rn_settings.VerboseRaft = true;
                        }
                        break;

                    case "verbosetransport":
                        if (se[1].Trim().ToLower().Equals("true"))
                        {
                            rn_settings.VerboseTransport = true;
                        }
                        break;

                    case "delayedpersistenceisactive":
                        if (se[1].Trim().ToLower().Equals("true"))
                        {
                            rn_settings.DelayedPersistenceIsActive = true;
                        }
                        break;

                    case "delayedpersistencems":
                        rn_settings.DelayedPersistenceMs = Convert.ToUInt32(se[1].Trim());
                        break;

                    case "inmemoryentity":
                        if (se[1].Trim().ToLower().Equals("true"))
                        {
                            rn_settings.InMemoryEntity = true;
                        }
                        break;

                    case "inmemoryentitystartsyncfromlatestentity":
                        if (se[1].Trim().ToLower().Equals("true"))
                        {
                            rn_settings.InMemoryEntityStartSyncFromLatestEntity = true;
                        }
                        break;
                    }//DelayedPersistenceMs
                }

                rnSettings.Add(rn_settings);


                rn = new TcpRaftNode(eps, rnSettings, dbreeze,
                                     OnCommit,
                                     port, log);

                return(rn);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }