diff options
Diffstat (limited to '2019/11/replication/index.html')
-rw-r--r-- | 2019/11/replication/index.html | 162 |
1 files changed, 69 insertions, 93 deletions
diff --git a/2019/11/replication/index.html b/2019/11/replication/index.html index c6f4055..3e1485e 100644 --- a/2019/11/replication/index.html +++ b/2019/11/replication/index.html @@ -33,6 +33,7 @@ <link rel="stylesheet" href="https://xiaohei.im/hugo-theme-pure/css/style.css"> <link rel="stylesheet" href="https://cdn.staticfile.org/highlight.js/9.15.10/styles/github.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css"> + <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.4.2/tocbot.css"> <meta property="og:title" content="Redis-复制功能探索" /> <meta property="og:description" content="之前对redis 的复制只有一点点了解,这次想要搞明白的是:如何实现的复制? 复制会遇到哪些问题(时延/一致性保证/网络故障时的处理)? 如何解决?高可用实现方案? @@ -171,7 +172,8 @@ <li class="category-list-item"><a href="https://xiaohei.im/hugo-theme-pure/categories/corejava/" class="category-list-link">corejava</a><span class="category-list-count">7</span></li> <li class="category-list-item"><a href="https://xiaohei.im/hugo-theme-pure/categories/hystrix/" class="category-list-link">hystrix</a><span class="category-list-count">2</span></li> <li class="category-list-item"><a href="https://xiaohei.im/hugo-theme-pure/categories/leetcode/" class="category-list-link">leetcode</a><span class="category-list-count">3</span></li> - <li class="category-list-item"><a href="https://xiaohei.im/hugo-theme-pure/categories/redis/" class="category-list-link">redis</a><span class="category-list-count">8</span></li> + <li class="category-list-item"><a href="https://xiaohei.im/hugo-theme-pure/categories/redis/" class="category-list-link">redis</a><span class="category-list-count">10</span></li> + <li class="category-list-item"><a href="https://xiaohei.im/hugo-theme-pure/categories/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/" class="category-list-link">学习笔记</a><span class="category-list-count">1</span></li> <li class="category-list-item"><a href="https://xiaohei.im/hugo-theme-pure/categories/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97/" class="category-list-link">消息队列</a><span class="category-list-count">4</span></li> </ul> </div> @@ -198,12 +200,16 @@ class="tag-list-count">3</span></li> + <li class="tag-list-item"><a href="https://xiaohei.im/hugo-theme-pure/tags/netty/" class="tag-list-link">netty</a><span + class="tag-list-count">1</span></li> + + <li class="tag-list-item"><a href="https://xiaohei.im/hugo-theme-pure/tags/rabbitmq/" class="tag-list-link">rabbitmq</a><span class="tag-list-count">4</span></li> <li class="tag-list-item"><a href="https://xiaohei.im/hugo-theme-pure/tags/redis/" class="tag-list-link">redis</a><span - class="tag-list-count">8</span></li> + class="tag-list-count">10</span></li> <li class="tag-list-item"><a href="https://xiaohei.im/hugo-theme-pure/tags/rust/" class="tag-list-link">rust</a><span @@ -237,50 +243,50 @@ <li> <div class="item-inner"> <p class="item-title"> - <a href="https://xiaohei.im/hugo-theme-pure/2019/11/replication/" class="title">Redis-复制功能探索</a> + <a href="https://xiaohei.im/hugo-theme-pure/2019/11/netty/" class="title">[学习笔记] Netty</a> </p> <p class="item-date"> - <time datetime="2019-11-16 14:24:40 +0800 CST" itemprop="datePublished">2019-11-16</time> + <time datetime="2019-11-29 18:40:27 +0800 CST" itemprop="datePublished">2019-11-29</time> </p> </div> </li> <li> <div class="item-inner"> <p class="item-title"> - <a href="https://xiaohei.im/hugo-theme-pure/2019/11/event/" class="title">Redis-事件</a> + <a href="https://xiaohei.im/hugo-theme-pure/2019/11/cluster/" class="title">Redis HA - Cluster</a> </p> <p class="item-date"> - <time datetime="2019-11-14 15:01:45 +0800 CST" itemprop="datePublished">2019-11-14</time> + <time datetime="2019-11-24 11:48:17 +0800 CST" itemprop="datePublished">2019-11-24</time> </p> </div> </li> <li> <div class="item-inner"> <p class="item-title"> - <a href="https://xiaohei.im/hugo-theme-pure/2019/11/aof/" class="title">Redis-AOF持久化</a> + <a href="https://xiaohei.im/hugo-theme-pure/2019/11/sentinel/" class="title">Redis HA - 哨兵模式</a> </p> <p class="item-date"> - <time datetime="2019-11-08 15:18:05 +0800 CST" itemprop="datePublished">2019-11-08</time> + <time datetime="2019-11-23 17:56:15 +0800 CST" itemprop="datePublished">2019-11-23</time> </p> </div> </li> <li> <div class="item-inner"> <p class="item-title"> - <a href="https://xiaohei.im/hugo-theme-pure/2019/11/rdb/" class="title">Redis-RDB持久化</a> + <a href="https://xiaohei.im/hugo-theme-pure/2019/11/replication/" class="title">Redis-复制功能探索</a> </p> <p class="item-date"> - <time datetime="2019-11-06 19:08:56 +0800 CST" itemprop="datePublished">2019-11-06</time> + <time datetime="2019-11-16 14:24:40 +0800 CST" itemprop="datePublished">2019-11-16</time> </p> </div> </li> <li> <div class="item-inner"> <p class="item-title"> - <a href="https://xiaohei.im/hugo-theme-pure/2019/11/db/" class="title">Redis-数据库长什么样?</a> + <a href="https://xiaohei.im/hugo-theme-pure/2019/11/event/" class="title">Redis-事件</a> </p> <p class="item-date"> - <time datetime="2019-11-06 11:00:32 +0800 CST" itemprop="datePublished">2019-11-06</time> + <time datetime="2019-11-14 15:01:45 +0800 CST" itemprop="datePublished">2019-11-14</time> </p> </div> </li> @@ -292,61 +298,14 @@ - <aside class="sidebar sidebar-toc collapse" id="collapseToc" itemscope itemtype="http://schema.org/WPSideBar"> - <div class="slimContent"> - <nav id="toc" class="article-toc"> - <h3 class="toc-title">文章目录</h3> - <div class="toc-content always-active"><nav id="TableOfContents"> -<ul> -<li> -<ul> -<li><a href="#复制是什么">复制是什么?</a></li> -<li><a href="#redis-主从复制">Redis 主从复制</a> -<ul> -<li><a href="#主从复制作用">主从复制作用</a></li> -<li><a href="#redis-复制设计要点">Redis 复制设计要点</a></li> -<li><a href="#主从复制过程">主从复制过程</a> -<ul> -<li><a href="#backlog-buffer-是啥">backlog buffer 是啥?</a></li> -<li><a href="#全量复制">全量复制</a></li> -<li><a href="#sync-psync">SYNC/PSYNC</a></li> -<li><a href="#replication-id">Replication ID</a> -<ul> -<li><a href="#为什么有两个-replid">为什么有两个<code>replId</code>?</a></li> -<li><a href="#为什么晋升后需要生成新-replid">为什么晋升后需要生成新 replId?</a></li> -</ul></li> -<li><a href="#无盘复制">无盘复制</a></li> -<li><a href="#如何处理可以过期的键">如何处理可以过期的键?</a></li> -<li><a href="#心跳机制">心跳机制</a> -<ul> -<li><a href="#master-slave">master -> slave</a></li> -<li><a href="#replica-master">replica -> master</a></li> -</ul></li> -</ul></li> -</ul></li> -<li><a href="#复制惨痛案例">复制惨痛案例</a> -<ul> -<li> -<ul> -<li><a href="#数据过期问题">数据过期问题</a></li> -<li><a href="#数据延迟不一致">数据延迟不一致</a></li> -<li><a href="#复制超时导致复制中断">复制超时导致复制中断</a> -<ul> -<li><a href="#为什么要判断超时">为什么要判断超时?</a></li> -<li><a href="#判断机制">判断机制?</a></li> -<li><a href="#问题">问题</a></li> -</ul></li> -<li><a href="#backlog-过小导致无限全量复制">backlog 过小导致无限全量复制</a></li> -</ul></li> -</ul></li> -<li><a href="#参考">参考</a></li> -</ul></li> -</ul> -</nav> - </div> - </nav> - </div> - </aside> +<aside class="sidebar sidebar-toc collapse" id="collapseToc" itemscope itemtype="http://schema.org/WPSideBar"> + <div class="slimContent"> + <h4 class="toc-title">文章目录</h4> + <nav id="toc" class="js-toc toc"> + + </nav> + </div> +</aside> <main class="main" role="main"><div class="content"> <article id="-" class="article article-type-" itemscope itemtype="http://schema.org/BlogPosting"> @@ -387,7 +346,7 @@ <span class="post-readcount hidden-xs" itemprop="timeRequired">阅读时长:8分 </span> </div> </div> - <div class="article-entry marked-body" itemprop="articleBody"> + <div class="article-entry marked-body js-toc-content" itemprop="articleBody"> <p>之前对<code>redis</code> 的复制只有一点点了解,这次想要搞明白的是:如何实现的复制? 复制会遇到哪些问题(时延/一致性保证/网络故障时的处理)? 如何解决?高可用实现方案?</p> <p>文章有部分是直接翻译的 <a href="https://redis.io/topics/replication">https://redis.io/topics/replication</a></p> @@ -417,7 +376,7 @@ <li><p><code>replicas</code> 可以从其他 <code>replica</code> 同步(从从复制).类似于级联更新的架构.</p></li> </ul> -<p><img src="https://raw.githubusercontent.com/xiaoheiAh/imgs/master/20191118110202.png" alt="从从复制" /></p> +<p><img src="https://cdn.jsdelivr.net/gh/xiaoheiAh/imgs@master/20191118110202.png" alt="从从复制" /></p> <ul> <li><code>master</code> 主节点在同步时不会阻塞.</li> @@ -602,6 +561,11 @@ struct redisServer { class="icon icon-angle-left" aria-hidden="true"></i><span> 下一篇</span></a> </li> + <li class="next"> + <a href="https://xiaohei.im/hugo-theme-pure/2019/11/sentinel/" + title="Redis HA - 哨兵模式"><span>上一篇 </span><i + class="icon icon-angle-right" aria-hidden="true"></i></a> + </li> <li class="toggle-toc"> <a class="toggle-btn collapsed" data-toggle="collapse" href="#collapseToc" aria-expanded="false" @@ -689,39 +653,52 @@ struct redisServer { <script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script> <script> - window.jQuery || document.write('<script src="js/jquery.min.js"><\/script>') + window.jQuery || document.write('<script src="js/jquery.min.js"><\/script>') </script> <script type="text/javascript" src="https://cdn.staticfile.org/highlight.js/9.15.10/highlight.min.js"></script> <script type="text/javascript" src="https://cdn.staticfile.org/highlight.js/9.15.10/languages/rust.min.js"></script> <script type="text/javascript" - src="https://cdn.staticfile.org/highlight.js/9.15.10/languages/dockerfile.min.js"></script> + src="https://cdn.staticfile.org/highlight.js/9.15.10/languages/dockerfile.min.js"></script> <script> -hljs.configure({ - tabReplace: ' ', - classPrefix: '' - -}) -hljs.initHighlightingOnLoad(); + hljs.configure({ + tabReplace: ' ', + classPrefix: '' + + }) + hljs.initHighlightingOnLoad(); </script> <script type="text/javascript" src="https://xiaohei.im/hugo-theme-pure/js/application.js"></script> <script type="text/javascript" src="https://xiaohei.im/hugo-theme-pure/js/plugin.js"></script> <script> - (function (window) { - var INSIGHT_CONFIG = { - TRANSLATION: { - POSTS: '文章', - PAGES: '页面', - CATEGORIES: '分类', - TAGS: '标签', - UNTITLED: '(未命名)', - }, - ROOT_URL: 'https:\/\/xiaohei.im\/hugo-theme-pure', - CONTENT_URL: 'https:\/\/xiaohei.im\/hugo-theme-pure\/searchindex.json ', - }; - window.INSIGHT_CONFIG = INSIGHT_CONFIG; - })(window); - </script> + (function (window) { + var INSIGHT_CONFIG = { + TRANSLATION: { + POSTS: '文章', + PAGES: '页面', + CATEGORIES: '分类', + TAGS: '标签', + UNTITLED: '(未命名)', + }, + ROOT_URL: 'https:\/\/xiaohei.im\/hugo-theme-pure', + CONTENT_URL: 'https:\/\/xiaohei.im\/hugo-theme-pure\/searchindex.json ', + }; + window.INSIGHT_CONFIG = INSIGHT_CONFIG; + })(window); +</script> <script type="text/javascript" src="https://xiaohei.im/hugo-theme-pure/js/insight.js"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/tocbot/4.4.2/tocbot.min.js"></script> +<script> + tocbot.init({ + + tocSelector: '.js-toc', + + contentSelector: '.js-toc-content', + + headingSelector: 'h1, h2, h3', + + hasInnerContainers: true, + }); +</script> <script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script> @@ -750,6 +727,5 @@ if (!doNotTrack) { </script> <script async src='https://www.google-analytics.com/analytics.js'></script> - </body> </html> |