tikv原理以及踩坑

TiKV相关关键点分享

TiKV文档地址:https://tikv.github.io/client-java/introduction/introduction.html

TiDB文档地址:https://book.tidb.io/

TiDB社区:https://tidb.net/

tikv核心地址:https://github.com/tikv/tikv

客户端Git地址:https://github.com/tikv/client-java

公用ProtoGit地址:https://github.com/pingcap/kvproto

重点架构

  1. PD(Placement Driver):

负责集群的元数据管理,包括Region的分配、Store的调度、Leader的选举等。PD是Tikv集群中的核心组件,可以通过多个PD实例实现高可用性和负载均衡。

  1. TiKV Server:

是Tikv集群中的核心组件,负责数据存储和处理。每个TiKV Server实例承载多个Region,根据Region的元信息进行数据读写操作等。

  1. TiKV Client:

是Tikv集群外部应用程序(如TiDB)和TiKV Server之间的接口,负责处理各种请求并将其转发给TiKV Server执行。

  1. Region:

是Tikv存储数据的基本单位,每个Region承载一段特定的数据,并分布在TiKV集群的不同节点上。Region的ID、范围、所在的节点信息等元信息会存储在PD中,TiKV Client通过查询PD获取Region的元信息,从而确定数据所在的节点。

  1. Store:

是TiKV集群中存储实例的基本单位,包括磁盘、内存等存储介质。每个Store负责存储和管理一部分Region的数据,每个Store由一个或多个TiKV Server实例组成。

  1. raft服务器:

通过实现Raft协议来保证数据的一致性和高可用性,提升TiKV整体的可靠性和性能。

  1. peer实例:

Peer节点通过Raft协议实现了数据复制与一致性维护,确保了Tikv集群的高可用性、容错性和数据一致性。

PD(Placement Driver)

在TiKV中,PD(Placement Driver)服务器是一个分布式调度器,主要承担以下几个作用:

 1. 维护全局Cluster元信息:PD服务器会维护TiKV集群的拓扑结构信息和节点状态信息,并动态地进行负载均衡和资源调度,以保证整个集群的高可用性和高性能。

 2. 调度Raft Group:PD服务器会动态地计算出每个Raft Group的Leader,以及Follower节点和副本的分布情况,并将Raft Group的元信息下发给对应的TiKV节点。同时,当节点发生故障时,PD服务器会自动进行Raft Group的调度和重分配。

 3. 数据安全管理:PD服务器会进行数据冗余备份和数据分区恢复等操作,确保数据的安全性和可靠性。

 总的来说,PD服务器是TiKV集群的调度中心,对整个数据库的运行状态进行监控和管理,以确保集群的高可用性和高性能。

TiKV Server

TiKV Server是TiKV数据库的核心组件,其主要用于存储数据和提供数据的读写服务。TiKV Server的整体架构采用了基于分布式Raft协议的副本复制机制,同时支持横向扩展的分布式架构。下面是TiKV Server的一些核心特性和架构:

 

 1. 分布式存储:TiKV Server采用分布式存储架构,将数据分片存储在多台节点上,以提高数据的容量和吞吐量。每个节点上都有多个副本来保证数据的高可用性和数据冗余备份。

 

 2. 水平扩展:TiKV Server采用了分布式集群架构,可以灵活地扩展集群规模,以应对不同规模的数据存储和服务需求。

 

 3. 副本复制:TiKV Server在节点之间采用基于Raft协议的副本复制机制,保证数据的高可用性和强一致性。在每个Raft Group中,有一个Leader节点和多个Follower节点,Leader负责接收客户端的写入请求,并通过Raft协议同步数据给Follower节点,保证了数据的强一致性和高可用性。

 

 4. 分布式事务:TiKV Server通过在Raft Group之间协调进行分布式事务,实现了分布式多版本并发控制(MVCC),保证了多个事务之间的数据隔离性和原子性。

 

 5. 存储引擎:TiKV Server底层采用了RocksDB作为KV存储引擎,提供了快速的数据读写和高效的数据压缩和管理功能。同时,TiKV Server还支持多种存储引擎,包括LMDB、Pebble等。

 

 6. 周边生态:TiKV Server提供了丰富的周边生态支持,包括TiDB、Spark等,以满足用户不同的数据管理和分析需求。

 

 总的来说,TiKV Server是一个具有强一致性、高可用性和高性能的分布式存储系统,并支持横向扩展的分布式架构。

TiKV Client

Tikv Client是和TiKV Server进行通信的客户端程序,主要用于与TiKV Server进行数据交互和查询操作。由于TiKV Server本身是一个分布式存储系统,需要提供统一的数据接口来对外提供服务,Tikv Client就是其中的一种客户端程序。

具体来说,Tikv Client主要用于实现以下功能:

1. 数据的读写操作:可以通过Tikv Client向TiKV Server发起数据读写请求,进行KV数据的读写操作。

2. 数据查询和统计:Tikv Client可以向TiKV Server发送数据查询请求,查询指定的数据信息和统计数据特征等。

3. 分布式事务的管理和控制:TiKV Server支持分布式事务,Tikv Client可以通过发起分布式事务进行管理和控制,保证数据的一致性和完整性。

4. 集群管理和扩展:Tikv Client还可以用于管理和扩展TiKV Server的分布式集群,包括节点的添加、删除和动态负载均衡等功能。

Tikv Client和TiKV Server的通信主要采用GRPC协议进行传输,GRPC是一个高性能的开源RPC框架,可以实现快速的数据传输和低延迟的数据交互。在Tikv Client中,可以通过GRPC通信协议发送数据请求和接收数据响应,保证数据的安全和可靠。通过GRPC,Tikv Client可以实现非常高效的数据查询和操作,同时保证了请求和响应的可靠性和一致性。

Region

在 TiKV 中,Region 是一个在 KV 存储引擎层面上的概念,是指存储在 TiKV 中所有数据按照一定的规则,被分割成不同的 Region,每个 Region 对应一个 Key 范围。Region 是用来实现分布式存储和数据管理的,其主要功能包括:

1. 分布式存储:TiKV 通过将数据分割成多个 Region 并将其分散在不同的节点上,实现了分布式存储,提高了系统的可伸缩性和数据容量。

2. 数据平衡:TiKV 可以自动对存储在不同节点上的 Region 进行负载均衡,使得各个节点的数据分布相对均匀。

3. 容错恢复:Region 是 TiKV 的数据管理单位,当某个节点宕机或出现异常情况时,TiKV 可以自动切换 Region 的存储位置,保证数据的可靠性和高可用性。

4. 事务处理:TiKV 支持按照 Region 进行分布式事务处理,实现了数据的一致性和可靠性。当事务跨越多个 Region 时,TiKV 会自动协调 Region 之间的数据访问和修改操作,确保数据的正确性和一致性。

Store

在 TiKV 中,Store 表示存储数据的节点,每个 Store 包含多个 Region,而每个 Region 又包含多个 Key-Valu

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值