day21 : TIDB on K8S (上)

对大部分使用k8s服务的人来说都会有一个探讨的问题是,到底DB是否适合上k8s,其实我个人是觉得不适合,db需要因需求调整底层设定,也需要快速的储存空间,而且DB较难轻量化,所以我并不推荐k8s上运行DB服务,但是像是redis etcd 这些DB又能运行自如,所以今天就来介绍一套混合应用的DB。

TIDB是一套NewSQL DB,他的特点有几个

  1. 他是用NOSQL的方式储存,但是完全相容mysql语法查询。
  2. 运算层跟资料层完全分开,所以可以横向扩充运算层,也可以横向扩充资料层。
  3. 藉由FLASH的机制做出类似join table的查询表加快查询。

所以TIDB其实也是元件非常的多,架构会像下图
https://ithelp.ithome.com.tw/upload/images/20210921/201396619Vw8gqP9kK.png
而其中本次会主要着重於TIDB、TIKV、PD,这三个最基本元件上。

那麽这三个元件分别做什麽呢?

TIDB是一个提供SQL查询的端口,运算後去跟PD询问资料分片在哪个TIKV上,然後再进行存取,本身是可以无状态运行的,所以非常适合横向扩展。
PD为管理资料储存的集群,同时他会侦测TIKV的资料储存状态进行适当的重新分配,可以自动化的完成资料可用性和一致性。
TIKV是一过key-value的储存库,本身的储存单位为region,并兼容多副本储存。

知道了这些基本元件的关系,就可以开始来尝试部署了,因为TIDB有提供两种建置方法,分别是透过vm或是实体机的方式建置的TIUP工具,以及k8s上自动管理的TiDB Operator ,因为我认为TIDB的自动扩展非常适合运行在k8s上,所以我会使用deployment的方式布建,如果有想要完全应用在k8s上也可以使用TiDB Operator 配置,但是如同开头讲的DB需要调教底层设定运行较为顺利,所以也会透过TIUP的方式布建PD和TIKV,那麽这样就可以组成一套兼容自动扩展的TIDB以及运行效能较佳的TIKV罗。


<<:  Day05【Web】Websocket、Polling 与 SSE

>>:  DAY9: setImmediate 与 nextTick的比较

拥抱组合叠叠乐 Composition API [序]

前言 为了解决 Vue.js 2x 元件之间无法重复使用逻辑和程序码,而出现了 Compositio...

D23. 学习基础C、C++语言

D23. C++介绍 C++是一种被广泛使用的电脑程序设计语言。它是一种通用程序设计语言,支援多重程...

Material UI in React [ Day 20] Feedback

今天会对 Feedback 的部分做讲解,因为都比较简单的应用就会一起讲。 Progress 进度指...

Day-27 手把手的手写面是模型 0x2:资料训练和结果输出

我们昨天成功拿到资料了,今天就要开始训练模型了 那由於我们当初在介绍 CNN 结构时的 code ...

Day03 - Amazon ECS Anywhere 基础说明与建置(上)

这系列主要就是讲Amazon ECS Anywhere 所以先来看看阳春版怎麽建立出来 基础运行元件...