TiDB简介与整体架构

  推荐- - - - - -描述得很牛逼,有待验证
  

  TiDB整体架构   

  

  要深入了解TiDB的水平扩展和高可用特点,首先需要了解TiDB的整体架构。   

  

   TiDB简介与整体架构”>
  </p>
  <p>
  TiDB集群主要分为三个组件:
  </p>
  <h4 id=   TiDB服务器      

  TiDB服务器负责接收SQL请求,处理SQL相关的逻辑,并通过PD找到存储计算所需数据的TiKV地址,与TiKV交互获取数据,最终返回结果。   TiDB服务器是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(如lv, HAProxy或F5)对外提供统一的接入地址。   

  

  PD服务器   

  

  放置司机(简称PD)是整个集群的管理模块,其主要工作有三个:一是存储集群的元信息(某个关键存储在哪个   TiKV节点);二是对TiKV集群进行调度和负载均衡(如数据的迁移,筏组长   的迁移等);三是分配全局唯一且递增的事务ID。   

  

  帕金森病是一个集群,需要部署奇数个节点,一般线上推荐至少部署3个节点。   

  

  TiKV服务器   

  

  TiKV服务器负责存储数据,从外部看TiKV是一个分布式的提供事务的键值存储引擎。存储数据的基本单位是   地区,每个地区负责存储一个关键范围(从StartKey到EndKey的左闭右开区间)的数据,每个   TiKV节点会负责多个地区.TiKV使用筏协议做复制,保持数据的一致性和容灾。副本以地区   为单位进行管理,不同节点上的多个地区构成一个木筏,互为副本。数据在多个TiKV之间的负载均衡由PD   调度,这里也是以地区为单位进行调度。   

  

  水平扩展   

  

  无限水平扩展是TiDB的一大特点,这里说的水平扩展包括两方面:计算能力和存储能力.TiDB服务器负责处理SQL   请求,随着业务的增长,可以简单的添加TiDB服务器节点,提高整体的处理能力,提供更高的吞吐.TiKV   负责存储数据,随着数据量的增长,可以部署更多的TiKV服务器节点解决数据规模的问题.PD会在TiKV节点之间以   地区为单位做调度,将部分数据迁移到新加的节点上,所以在业务的早期,可以只部署少量的服务实例(推荐至少部署3个TiKV, 3个   PD, 2个TiDB),随着业务量的增长,按照需求添加TiKV或者TiDB实例。   

  

  高可用   

  

  高可用是TiDB的另一大特点,TiDB TiKV/PD这三个组件都能容忍部分实例失效,不影响整个集群的可用性。下面分别说明这三个组件的可用性,单个实例失效后的后果以及如何恢复。   

  
      <李>   

      TiDB   

      

      TiDB是无状态的,推荐至少部署两个实例,前端通过负载均衡组件对外提供服务。当单个实例失效时,会影响正在这个实例上进行的   会话,从应用的角度看,会出现单次请求失败的情况,重新连接后即可继续获得服务。单个实例失效后,可以重启这个实例或者部署一个新的实例。   

      李   <李>   

      PD   

      

      帕金森病是一个集群,通过筏协议保持数据的一致性,单个实例失效时,如果这个实例不是大量的   领袖,那么服务完全不受影响,如果这个实例是筏的领袖,会重新选出新的木筏领导人,自动恢复服务.PD   在选举的过程中无法对外提供服务,这个时间大约是3秒钟。推荐至少部署三个PD实例,单个实例失效后,重启这个实例或者添加新的实例。   

    TiDB简介与整体架构