摘要:
1. 整体模块架构 leveldb是个嵌入式键值数据库,它的核心原理是采用LSM算法作为存储引擎,写入时采用WAL的方式将随机写转换为顺序写,最终落盘存储为文件时采用有序key组织方式,同时会生成布隆过滤器元数据;读取时采取缓存、二分定位和布隆过滤器等方式快速定位key,因此它在读写方面都拥有很高的 阅读全文
摘要:
1. pd-server架构图 TIKV集群主要由两个核心组件组成,分别是pd-server和tikv-server。 pd-server可以看做是整个集群的大脑,里面保存着集群的关键元信息,比如集群配置、全局的region信息和store信息等。类似于Ceph的mon组件。 pd节点之间会内部维护 阅读全文
摘要:
1. 整体系统架构 boltdb是单机kv数据库,所有数据都保存在一个文件中,通过内存映射的方式进行数据读取和写入,存储结构采用类B+树的组织形式,支持一写多读的事务机制,支持bucket增删改查、bucket嵌套和k/v增删改查等功能,etcd的底层存储系统就是基于boltdb实现的,不过etcd 阅读全文
摘要:
1. RaftHttp模块介绍 在etcd里raft模块和网络模块是分开的,raft模块主要负责实现共识算法,保证集群节点的一致性,消息的发送和接收则交给raftHttp网络模块来处理,由上层应用模块来进行协调交互和消息传递。 1.1. 整体结构图 (1)当raft模块发生了状态变化时,会把变化的消 阅读全文
摘要:
1. Raft简介 raft是一个管理复制式日志的共识算法,它是通过复制日志的方式来保持状态机里的数据是最终一致的。 整体的一个运行描述图: 从图中可以看到由几部分组成,共识模块、日志模块和状态机。当client端发送一个请求过来时,首先经过共识模块产生日志并复制到大多数节点,然后将日志应用到状态机 阅读全文
摘要:
1.基本组件介绍 JuiceFS Client:支持多种Client端的接口,比如兼容POSIX文件系统的接口,以此你可以将它挂载到系统上当文件系统使用,且可以为k8s提供存储使用,用ks8s的csi driver进行接入。同时也支持S3协议,开发了对应的S3网关进行支持; Data Storage 阅读全文
摘要:
1.TiKV框架图和模块说明 图1 TiKV整体架构图 1.1.各模块说明 PD Cluster:它是由多个PD节点组成的etcd集群,PD是具有“上帝视角”的管理组件,负责存储元数据和进行负载均衡,比如Region对应的range段信息、调度Region切分和合并等; gRPC:开源远程过程调用系 阅读全文
摘要:
1.准备环境 准备4台ubuntu 16.04虚拟机 部署规划: 节点类型 CPU 内存 存储 部署数量 所在节点IP TiKV 8 core 8 GB 200GB 3 10.10.10.2 10.10.10.3 10.10.10.4 PD 8 core 8 GB 3 10.10.10.2 10.1 阅读全文
摘要:
1.实现目的 主要目的是用来熟悉go语言,通过该项目可以熟悉到的go知识点: (1)go语言语法; (2)go的goroutine使用方式; (3)go通道chan的使用 (4)等待所有goroutine结束的同步信号使用; (5)go的结构体定义和方法使用; 2.实现的功能点 (1)支持批量上传下 阅读全文
摘要:
1 学习Git的方式 学习git最好的方式就是项目中使用git来管理版本代码,这样才会遇到各种问题,然后你才会想去想办法解决,印象才会深刻,否则学了后也只会记得简单的add、commit和push操作 这里推荐一个入门git教程网站,它可以相当于玩游戏一样来学习git,可视化的界面让你对git的命令 阅读全文