那天,我被拉入一個Redis群聊···
我是Redis,一個叫Antirez的男人把我帶到了這個世界上。
那天,Redis基友群裡,許久未見的大白髮來了一條訊息···
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/90efaf657b8883b6c0f52dea245cd2cc7bc36c72b4573185b2595ee1394146e8.jpg)
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/7be9b6116945089983cfb5999b121921acfc62de05c7306070789a900e438bea.jpg)
於是,大白拉了一個新的群
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/c618feff25a460cfc12dec9af2beab5b665cc7eec5f0f5a98659a2950056a8f6.jpg)
以後的日子中,我們們哥仨相互配合,日常工作中最多的就是資料同步了
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/a247bd314351b780dc3c8300119886bd46c143c587e8dfd7f93314815a4cf7b6.jpg)
如果主節點有資料寫入、刪除、修改命令,也會把這些命令挨個通知到從節點,我們把這叫做命令傳播。
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/57ff1a64fdb419eb69da88c02a36b4beec0e077f5d69ab8236df03aae11e2243.jpg)
透過這樣的方式,我們主節點與從節點之間資料就能保持同步了~
有一次,我不小心掉線了~
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/3a17e596d0e232f74a379ddf7e50de1a21243dd3834f4e65d8de48dc1b4d1601.jpg)
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/91242cec7fb12b691d1d76aedf7d76d19142113c2d1effaeb6646047d02dfa9f.jpg)
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/0597d3deb5d7562f65d6795b8ffed41f0ee0213418302ca8b4b8d2ce16584fcd.jpg)
我們用上了新的資料同步策略,效率高了不少,就算偶爾掉個線,也能很快把缺失的資料給補上。
就這樣過了一段時間···
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/b365fc470d3448c9dc71448681df95551a59f0116e59299c4cb8331856274e64.jpg)
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/371178d507d69b639bb51a4ebec16486a5b51b337dd303ff3e998a1ba20123f8.jpg)
新添了人手,我們準備大幹一場!
為了及時獲得和更新主從節點的資訊,我們們哨兵每隔十秒鐘就要用INFO命令去問候一下主節點,主節點會告訴我他有哪些從節點
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/893c75580287cab646bdfcf04e7c949aa5a0c2d3c4c778af3d7336a554810d57.jpg)
為了更加及時知道大家是否掉線,我們們哨兵每隔一秒都要用PING命令問候一下群裡的各個小夥伴:
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/a9cc799f09a477de9e6c4675d4cac4adcf3e999cbef38948568b84b0b58ac1dc.jpg)
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/0858000e42848ed372d03dc048442f5a21725433a267c755f6759f795ddb9970.jpg)
如果在設定的時間裡沒有收到回覆,我就知道這傢伙多半是跪了,就該啟動故障轉移了
不過這只是我的主觀意見,光我一個人說了不算,為了防止誤判,我還得去管理員小群裡徵求一下大家的意見:
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/9590622ea46e25b084f3f6066b00fd2f4e9122b2725e2dbdae51304c57d39da5.jpg)
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/23141bb28c3d5ba161cb17cbe6e22ad95763a0c1e77d404143b90e59eba3c130.jpg)
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/e1dc60e41a5d7f4c34c0f8545d83274700fb49631508e4fa76f20e1dd7265cfd.jpg)
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/cd7778778a7414ef576ce670a13fd86aa58ada7781fcfcce50bdaa5d8c57e7b5.jpg)
接下來,我們們就開始了第一次選舉。
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/3224956edac7db5440082037857159f820aa0f21e6fdccea4bebd55f69eb79ef.jpg)
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/1ebf2249753564f68c4652df461e43c92f41cc0d20aebafeacbc0f23cb2c645c.jpg)
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/7e91b7ce5485a343ba09740da98587742285ad2ca891e52e8b6e689d41804f7f.jpg)
經過一番努力,我終於完成了故障轉移,現在R2是主節點了。
不過沒過多久,R1又回來了:
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/327af9ce213b585b0af02ed3bb829c148d239ecc5a3d5f284f09a68297bb0635.jpg)
以上就是我們的日常工作了,透過我們們幾個小夥伴的齊心協力,構成了一個高可用的快取服務,MySQL大哥再也不敢小瞧我們了。
![那天,我被拉入一個Redis群聊···](https://i.iter01.com/images/8de980bd1aa1a0af112bbdadadf16cd4c769268719e3988ff0254f10054dbb2e.jpg)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024924/viewspace-2927355/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 專訪被Facebook開除的中國工程師尹伊:我不後悔那天的決定工程師
- 我為Redis找到了一個新家——VMWareRedis
- 我是一個請求,我是如何被髮送的?
- 我們被一個 kong 的效能 bug 折騰了一個通宵
- 風很大的那天
- 那一天,我被Redis主從架構支配的恐懼Redis架構
- 微信聊天趣味玩法,把“你被移出群聊”發給好友
- Java NIO - 群聊Java
- Node + WebSocket + Vue 聊天室建立群聊/加入群聊WebVue
- 花了20分鐘,給女朋友們寫了一個web版群聊程式Web
- 面試了一個 39 歲程式設計師後,我被罵了……面試程式設計師
- 推薦一個.Net Core開發的Websocket群聊、私聊的開源專案Web
- 公司中了勒索病毒,我一個助理工程師應該被辭退麼?工程師
- 建群,加群,群聊
- 【Azure Developer】一個複製Redis Key到另一個Redis服務的工具(redis_copy_net8)DeveloperRedis
- 盤點一下Redis中常用的Java客戶端,或者我們們手寫一個?RedisJava客戶端
- 89元一張,我被電影票價勸退
- 美團一面:專案中使用過Redis嗎?我說用Redis做快取。他對我哦了一聲Redis快取
- [Redis原始碼閱讀]實現一個redis命令--nonzerodecrRedis原始碼
- 我期待被「畢業」
- 我被刪庫了
- 什麼鬼,面試官竟然讓我用Redis實現一個訊息佇列!!?面試Redis佇列
- 這個 Redis 連線池的新監控方式針不戳~我再加一點佐料Redis
- 面試被吊打系列 - Redis原理面試Redis
- 深入解析dio(一) Socket 程式設計實現本地多端群聊程式設計
- 使用 golang 寫一個 redis-cliGolangRedis
- 實現一個 Redis 分散式鎖Redis分散式
- 實現一個redis連線池Redis
- Memcached vs Redis, 挑選哪一個?Redis
- 分享一個簡單的redis限流Redis
- 【redis前傳】自己手寫一個LRU策略 | redis淘汰策略Redis
- 《最後生還者2》:我覺得我被一槍崩掉膝蓋,然後被高爾夫球棒狠狠抽打
- 建立 UIWindow 被忽視的一個坑UI
- 記Promise一個容易被忽略的特性Promise
- 當面試遇到 Redis,我作為一個面試官是這麼“刁難”你的!面試Redis
- 我不是一個成功的人,但是我想做一個優秀的程式設計師程式設計師
- 我被這個瀏覽了 746000 次的問題驚住了!
- TenSunS監控REDIS:使用一個redis_exporter監控所有的Redis例項RedisExport