InfluxDB cluster 高可用方案

论坛 期权论坛     
选择匿名的用户   2021-5-23 02:01   289   0
<div class="post-body" style="font-size: 16px;">
<p>本文基于InfluxDB之前开源的cluster版本(v0.11)来分析一下其cluster方案,主要分析如下问题:</p>
<ul><li>InfluxDB cluster方案提供了哪些模块?</li><li>InfluxDB cluster方案中meta node元数据都有哪些?</li><li>InfluxDB cluster方案提供的与集群交互的client客户端是什么方式?</li><li>data node之间是如何交互的呢?数据格式什么样?</li><li>InfluxDB cluster方案中 meta node 一致性怎么保证的?</li><li>InfluxDB cluster方案提供的hintedoff具体是怎么工作的?</li></ul>
<p>下面就会针对每个问题进行分析<br><a id="more"></a></p>
<h1 id="InfluxDB-cluster方案提供了哪些模块?"><a class="headerlink" href="https://blog.csdn.net/yilan1993/article/details/106575863#InfluxDB-cluster%E6%96%B9%E6%A1%88%E6%8F%90%E4%BE%9B%E4%BA%86%E5%93%AA%E4%BA%9B%E6%A8%A1%E5%9D%97%EF%BC%9F" title="InfluxDB cluster方案提供了哪些模块?"></a>InfluxDB cluster方案提供了哪些模块?</h1>
<p>关于这个问题,<a href="http://mysql.taobao.org/monthly/2018/02/02/" rel="noopener noreferrer" target="_blank">这篇文章讲解的非常好</a>,主要包括Meta Node和Data Node两个模块。各个模块的工作模式和原理已经在这篇文章中讲解的很清楚了,这里就不在赘述。</p>
<h1 id="InfluxDB-cluster方案中meta-node元数据都有哪些?"><a class="headerlink" href="https://blog.csdn.net/yilan1993/article/details/106575863#InfluxDB-cluster%E6%96%B9%E6%A1%88%E4%B8%ADmeta-node%E5%85%83%E6%95%B0%E6%8D%AE%E9%83%BD%E6%9C%89%E5%93%AA%E4%BA%9B%EF%BC%9F" title="InfluxDB cluster方案中meta node元数据都有哪些?"></a>InfluxDB cluster方案中meta node元数据都有哪些?</h1>
<p>cluster meta data 都在influxdb/services/meta/data.go中,其结构体如下所示,之前我们介绍过<a href="http://neuyilan.github.io/2019/12/12/InfluxDB-%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5%E5%92%8Cmeta%E4%BB%8B%E7%BB%8D/">单机版的InfluxDB中的meta</a>,相比单机版的,cluster版本的元数据主要多了MetaNodes和DataNodes两个属性,其对应的数据结构也很简单,就是描述了一个node的信息。<br></p>
<figure class="highlight plain" style="display:block;text-align:center;">
  <table><tbody><tr><td class="gutter"><pre class="blockcode"><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre class="blockcode"><span class="line">type Data struct {<!-- --></span><br><span class="line"> Term      uint64 // associated raft term</span><br><span class="line"> Index     uint64 // associated raft index</span><br><span class="line"> ClusterID uint64</span><br><span class="line"> MetaNodes []NodeInfo</span><br><span class="line"> DataNodes []NodeInfo</span><br><span class="line"> Databases []DatabaseInfo</span><br><span class="line"> Users     []UserInfo</span><br><span class="line"></span><br><span class="line"> MaxNodeID       uint64</span><br><span class="line"> MaxShardGroupID uint64</span><br><span class="line"> MaxShardID      uint64</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line">// NodeInfo represents information about a single node in the cluster.</span><br><span class="line">type NodeInfo struct {<!-- --></span><br><span class="line"> ID      uint64</span><br><span class="line"> Host    string</span><br><span class="line"> TCPHost string</span><br><span class="line">}</span><br></pre></td></tr></tbody></table>
</figure>
<p></p>
<p>由此可见,meta信息中除了汇总了单机版的meta信息之外,还多了一些meta node和data node的信息。</p>
<h1 id="InfluxDB-cluster方案提供的与集群交互的client客户端是什么方式?"><a class="headerlink" href="https://blog.csdn.net/yilan1993/article/details/106575863#InfluxDB-cluster%E6%96%B9%E6%A1%88%E6%8F%90%E4%BE%9B%E7%9A%84%E4%B8%8E%E9%9B%86%E7%BE%A4%E4%BA%A4%E4%BA%92%E7%9A%84client%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%98%AF%E4%BB%80%E4%B9%88%E6%96%B9%E5%BC%8F%EF%BC%9F" title="InfluxDB cluster方案提供的与集群交互的client客户端是什么方式?"></a>InfluxDB cluster方案提供的与集群交互的client客户端是什么方式?</h1>
<p>InfluxDB提供了两种与集群交互的方式:(1)influxDB CLI/Shell (2) influx client。首先声明一下,client是直接与data node交互的。<br>下面我们简单介绍一下这两种方式是怎么与cluster交互的。</p>
<h2 id="influxDB-CLI-Shell"><a class="headerlink" href="https://blog.csdn.net/yilan1993/article/details/106575863#influxDB-CLI-Shell" title="influxDB CLI/Shell"></a>influxDB CLI/Sh
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP