iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
DevOps

玩耍開源k8s30天系列 第 21

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囉。


上一篇
day20 : redisDB keyDB on K8S (下)
下一篇
day22 : TIDB on K8S (中)
系列文
玩耍開源k8s30天31

尚未有邦友留言

立即登入留言