中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

Redis集(ji)群~StackExchange.redis連接Sentinel服務(wu)器并訂閱相(xiang)關(guan)事件(原(yuan)創)

回到目錄

對于redis-sentinel我在之前的文章中已經說過,它是一個仲裁者,當主master掛了后,它將在所有slave服務器中進行選舉,選舉的原則當然可以看它的官方文章,這與我們使用者沒有什么關系,而對于sentinel來說,它在進行主從切換時,會觸發相關事件,這是和我們開發人員有關系的,如當+switch-master事件被觸發時,說明(ming)當前Sentinal已經(jing)(jing)完成了一(yi)次主從的切換(huan),并所有服務已經(jing)(jing)正(zheng)常(chang)運轉(zhuan)了。

下面是我這幾天作的測試,對于Twemproxy代理和Sentinal哨兵都已經成功使用stackExchange.redis進行了連接,并正常訪問了,當然Sentinel只公開了幾個redis命令,這個大家要清夢,不明白的可以看我的這篇文章《Redis集群~windows下搭建Sentinel環境及它對主從模式的實際意義》。

連接普通的redis服務器

  ConnectionMultiplexer conn = ConnectionMultiplexer.Connect("127.0.0.1:6379");
  ConfigurationOptions option = new ConfigurationOptions();
  option.EndPoints.Add("127.0.0.1", 6379);
  ConnectionMultiplexer conn = ConnectionMultiplexer.Connect(option);

連接TW代理服務器

    ConfigurationOptions twOption = new ConfigurationOptions();
    twOption.EndPoints.Add("127.0.0.1", 22122);
    twOption.EndPoints.Add("127.0.0.1", 22123);
    twOption.Proxy = Proxy.Twemproxy;//代理的類型
    ConnectionMultiplexer conn = ConnectionMultiplexer.Connect(twOption);

連接Sentinal仲裁哨兵服務器

           //連接sentinel服(fu)務器(qi)
            ConfigurationOptions sentinelConfig = new ConfigurationOptions();
            sentinelConfig.ServiceName = "master1";
            sentinelConfig.EndPoints.Add("192.168.2.3", 26379);
            sentinelConfig.EndPoints.Add("192.168.2.3", 26380);
            sentinelConfig.TieBreaker = "";//這行在sentinel模式必須加上(shang)
            sentinelConfig.CommandMap = CommandMap.Sentinel;
            // Need Version 3.0 for the INFO command?
            sentinelConfig.DefaultVersion = new Version(3, 0);
            ConnectionMultiplexer conn = ConnectionMultiplexer.Connect(sentinelConfig);

有(you)了上面的(de)(de)代碼后,我們可以(yi)成功(gong)的(de)(de)連(lian)接一(yi)個(ge)sentinel服(fu)務器,對這(zhe)個(ge)連(lian)接的(de)(de)實際意義在于:當一(yi)個(ge)主從(cong)(cong)進行(xing)切換后,如果它(ta)外層有(you)Twemproxy代理,我們可以(yi)在這(zhe)個(ge)時機(+switch-master事件)通(tong)知你(ni)的(de)(de)Twemproxy代理服(fu)務器,并更新它(ta)的(de)(de)配置文件里(li)的(de)(de)master服(fu)務器的(de)(de)地址,然后從(cong)(cong)起你(ni)的(de)(de)Twemproxy服(fu)務,這(zhe)樣你(ni)的(de)(de)主從(cong)(cong)切換才算(suan)真(zhen)正完成。

對于Twemproxy-sentinal-master/slave主從切換實現圖

我們可以使用.netcore開發一個跨平臺的程序,將它放在linux的tw代理服務器上,使用dotnet run去運行它,然后當收到由sentinel發來的+switch-master事件(jian)時,將更新tw配(pei)置(zhi)文件(jian)并從(cong)起(qi)它的服(fu)務。

希望大家對(dui)技術多一點深(shen)度的(de)研究,找不到答(da)案就看看它的(de)源代(dai)碼(ma),可能會有意外的(de)收獲!

歡迎大家關注大叔博客(ke)!

回到目錄

posted @ 2016-09-01 11:47  張占嶺  閱讀(5300)  評論(3)    收藏  舉報