Redis集群~StackExchange.redis連接Sentinel伺服器並訂閱相關事件(原創)

来源:http://www.cnblogs.com/lori/archive/2016/09/01/5829250.html
-Advertisement-
Play Games

回到目錄 對於redis-sentinel我在之前的文章中已經說過,它是一個仲裁者,當主master掛了後,它將在所有slave伺服器中進行選舉,選舉的原則當然可以看它的官方文章,這與我們使用者沒有什麼關係,而對於sentinel來說,它在進行主從切換時,會觸發相關事件,這是和我們開發人員有關係的, ...


回到目錄

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

下麵是我這幾天作的測試,對於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伺服器
            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模式必須加上
            sentinelConfig.CommandMap = CommandMap.Sentinel;
            // Need Version 3.0 for the INFO command?
            sentinelConfig.DefaultVersion = new Version(3, 0);
            ConnectionMultiplexer conn = ConnectionMultiplexer.Connect(sentinelConfig);

有了上面的代碼後,我們可以成功的連接一個sentinel伺服器,對這個連接的實際意義在於:當一個主從進行切換後,如果它外層有Twemproxy代理,我們可以在這個時機(+switch-master事件)通知你的Twemproxy代理伺服器,並更新它的配置文件里的master伺服器的地址,然後從起你的Twemproxy服務,這樣你的主從切換才算真正完成。

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

我們可以使用.netcore開發一個跨平臺的程式,將它放在linux的tw代理伺服器上,使用dotnet run去運行它,然後當收到由sentinel發來的+switch-master事件時,將更新tw配置文件並從起它的服務。

希望大家對技術多一點深度的研究,找不到答案就看看它的源代碼,可能會有意外的收穫!

歡迎大家關註大叔博客!

回到目錄


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SparkSQL是指整合了Hive的spark-sql cli, 本質上就是通過Hive訪問HBase表,具體就是通過hive-hbase-handler, 具體配置參見:Hive(五):hive與hbase整合 目錄: SparkSql 訪問 hbase配置 測試驗證 SparkSql 訪問 hb ...
  • 1.linux版mysql下載(建議不要下5.7,安裝的時候各種bug啊,5.6是最好) 到mysql官網下載mysql編譯好的二進位安裝包,在下載頁面Select Platform:選項選擇linux-generic,然後把頁面拉到底部,64位系統下載Linux - Generic (glibc ...
  • 隨著互聯網、信息技術以及雲計算的高速發展,當今社會已進入了海量數據的時代。不管是移動通信、電商金融還是物聯網等各個領域,每天都會產生巨量的各種不同類型的數據。如何從這些龐大的、結構各異的、而又摻雜著大量雜訊的數據中提取出隱含在其中的具有一定意義的知識或規則,正是關聯規則提取的研究內容。 傳統的關聯規 ...
  • 當查詢表結構完全相同的多張表的數據時: 1.當查詢條件完全相同且不包括主鍵,此時用union查詢會過濾掉查詢出的重覆的記錄,及漏查記錄;使用union all進行查詢,則會查出所有的符合條件的記錄,保證數據的完整性。 2.當查詢條件完全相同且包含主鍵,此時用union和union all查詢出來的記 ...
  • Percona TokuDB Percona TokuDB. 1 1. TokuDB說明... 1 2. TokuDB安裝... 1 3. 使用TokuDB. 1 3.1 快速插入和富索引... 1 3.2 聚集secondary索引... 1 3.3 線上索引創建... 1 3.4 線上添加,刪除 ...
  • 此簡訊平臺,支持法國wavecom簡訊貓.有VB及DELPHI示常式序 錯誤說明0 成功-1 連接簡訊平臺失敗-2 命令執行失敗-3 無可讀簡訊 function ConnectToServer(aServerName, aLogID, aPass: pchar): integer; stdcall ...
  • 下載解壓後配置redis.conf文件配置埠號和密碼,打開poweshell命令,進入redis解壓目錄,使用.\redis-server.exe redis.conf 命令啟動redis服務,再打開一個powershell命令,通過命令.\redis-cli -h 127.0.0.1 -p 63 ...
  • 這幾天一直在學習C++下使用Mysql的方法及其中各種的問題,也看了很多Mysql的API函數,當然自己看的還是很基礎的。其實對於每種資料庫的操作,基本的方法都是非常類似的,大多都是connect,select,update,delete以及insert這幾個操作。接下來我就將這幾個步驟以代碼的方式 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...