Example #1
0
        private void Failover(WatchGroup group)
        {
            var toLift = SelectOneSlave(group.Slaves.Values);

            if (toLift == null)
            {
                throw new Exception("no slave selected");
            }

            Console.WriteLine("failover lift {0} to master", toLift.EndPoint);

            toLift.Server.MakeMaster(ReplicationChangeOptions.Broadcast);

            foreach (var slave in group.Slaves.Values)
            {
                if (slave != toLift)
                {
                    slave.Server.SlaveOf(toLift.EndPoint);
                }
            }
        }
Example #2
0
        static void InitService()
        {
            AutoInit.Init();

            zkAdaptor   = new ZkAdaptor();
            amqpAdaptor = new AmqpAdaptor(ConfigManager.MQIP(), ConfigManager.AMQPPort(),
                                          ConfigManager.MQUser(), ConfigManager.MQPass());

            ServiceImplementStub.Bind <IWatcherServiceNotifyImpl>(amqpAdaptor, new WatcherServiceImpl());

            //dbClientNotifyDelegate = new DbClientNotifyDelegate(zkAdaptor);
            watcherServiceNotifyDelegate = new WatcherServiceNotifyDelegate(amqpAdaptor);

            amqpAdaptor.BeginReceive();
            zkAdaptor.BeginReceive();

            var toWatch     = ConfigManager.Instance.Read <int>("WatcherService", "WatchNum");
            var watchGroups = new List <WatchGroup>();

            for (int i = 1; i <= toWatch; i++)
            {
                var group = new WatchGroup()
                {
                    GroupName       = ConfigManager.Instance.Read <string>("WatcherService", "WatchName" + i),
                    Quorum          = ConfigManager.Instance.Read <int>("WatcherService", "WatchQuorum" + i),
                    DownAfterPeriod = ConfigManager.Instance.Read <int>("WatcherService", "WatchDownAfter" + i),
                    ParallelSync    = ConfigManager.Instance.Read <int>("WatcherService", "WatchParallelSync" + i),
                    FailoverTime    = ConfigManager.Instance.Read <int>("WatcherService", "WatchFailoverTimeout" + i),
                };

                group.SetCurrentMaster(new MasterInstance(group)
                {
                    EndPoint = ConfigManager.Instance.Read <EndPoint>("WatcherService", "WatchAddr" + i),
                });

                watchGroups.Add(group);
            }

            watcherManager = new WatcherManager(watchGroups);
        }
 public MasterInstance(WatchGroup @group) : base(@group)
 {
 }
 public RedisInstanceBase(WatchGroup group)
 {
     Group = group;
 }
 public SlaveInstance(WatchGroup @group) : base(@group)
 {
 }