數(shù)據(jù)庫(kù)元數(shù)據(jù)設(shè)計(jì)的維度和分層設(shè)計(jì)
對(duì)于元數(shù)據(jù)體系的建設(shè)思考,目前的設(shè)計(jì)是基于基礎(chǔ)數(shù)據(jù)配置的管理,包括多個(gè)元數(shù)據(jù)維度的管理,在此基礎(chǔ)上需要梳理基于系統(tǒng)場(chǎng)景的元數(shù)據(jù)設(shè)計(jì),覆蓋如備份恢復(fù),監(jiān)控報(bào)警,實(shí)例部署等層面的元數(shù)據(jù)管理信息,通過(guò)運(yùn)維任務(wù)提煉得到系統(tǒng)流程; 然后基于業(yè)務(wù)需求來(lái)梳理相關(guān)的業(yè)務(wù)場(chǎng)景的元數(shù)據(jù)相關(guān)設(shè)計(jì),如資源申請(qǐng),權(quán)限申請(qǐng)等,逐步梳理出主干業(yè)務(wù)流程,其中每個(gè)層之間都是相對(duì)隔離的,每個(gè)層都需要開放相關(guān)的API,在業(yè)務(wù)層不能直接暴露ORM層的相關(guān)操作。
我們?cè)诖嗣枋龅闹饕窃獢?shù)據(jù)的核心設(shè)計(jì)部分。
元數(shù)據(jù)維度可以按照業(yè)務(wù)維度和系統(tǒng)維度來(lái)綜合考慮,其中業(yè)務(wù)維度相對(duì)簡(jiǎn)單,而系統(tǒng)維度結(jié)構(gòu)和層次要復(fù)雜一些,但是業(yè)務(wù)維度的信息是基于系統(tǒng)維度的設(shè)計(jì),如對(duì)于實(shí)例的概念,對(duì)于業(yè)務(wù)來(lái)說(shuō),實(shí)例,集群在業(yè)務(wù)中都是廣義的實(shí)例范疇,所以接下來(lái)會(huì)按照系統(tǒng)維度的設(shè)計(jì)為主。
接口層:業(yè)務(wù)訪問維度,基于app_code, 對(duì)外統(tǒng)一體現(xiàn)為實(shí)例,如單實(shí)例,主從,集群等,都是以實(shí)例的角色出現(xiàn),不顯示內(nèi)部的數(shù)據(jù)信息(如不顯示數(shù)據(jù)分片節(jié)點(diǎn)),接口層數(shù)據(jù)源自代理層,接口層的數(shù)據(jù)為只讀模式,數(shù)據(jù)可刷新
代理層:代理層是設(shè)計(jì)中邏輯關(guān)系最為關(guān)鍵的一層,承上啟下,其中單實(shí)例在代理層需要體現(xiàn)service_name, 基于MHA的環(huán)境需要體現(xiàn)Consul或VIP的service_name,如果是集群,則需要在其中體現(xiàn)中間件和數(shù)據(jù)分片;如果是分布式集群,僅顯示對(duì)外服務(wù)層(如TiDB中顯示Server層,如果有多個(gè)Server,則顯示多個(gè)。
拓?fù)鋵樱菏沁壿嬯P(guān)系最復(fù)雜的一層,需要支持多種拓?fù)浣Y(jié)構(gòu),比如一主一從,一主多從,級(jí)聯(lián)復(fù)制,雙主復(fù)制等,其中單實(shí)例是一種特殊的復(fù)制拓?fù)?,也需要體現(xiàn),此外還需要支持分布式模型,在分布式模型中,多個(gè)節(jié)點(diǎn)是相對(duì)獨(dú)立的角色,無(wú)法體現(xiàn)多個(gè)節(jié)點(diǎn)間的映射。
實(shí)例層:實(shí)例層是整體元數(shù)據(jù)的基座,以IP+端口來(lái)唯一標(biāo)識(shí),實(shí)例層按照計(jì)算存儲(chǔ)分離的模式來(lái)考慮,不光包含數(shù)據(jù)庫(kù)實(shí)例信息,還包括中間件的相關(guān)信息,實(shí)例層是連接數(shù)據(jù)庫(kù)層的重要環(huán)節(jié)。
主機(jī)層:主機(jī)層的信息相對(duì)獨(dú)立,主要是主機(jī)層的基礎(chǔ)信息,可以通過(guò)外部接口進(jìn)行提取,并保持周期性刷新。
實(shí)例和集群的關(guān)系
數(shù)據(jù)庫(kù)實(shí)例是基礎(chǔ)的服務(wù)單元,按照實(shí)例角色可以分為單實(shí)例,主庫(kù)實(shí)例,從庫(kù)實(shí)例和級(jí)聯(lián)實(shí)例。
集群類型分為高可用集群,分布式集群(分庫(kù)分表),分布式集群(NewSQL體系)
高可用集群:多個(gè)主從實(shí)例,如一主一從或者一主多從
分布式集群(分庫(kù)分表):多個(gè)數(shù)據(jù)庫(kù)實(shí)例(通常一組主從實(shí)例為一個(gè)高可用集群)和少量數(shù)據(jù)庫(kù)中間件(通常1~3個(gè)做負(fù)載均衡)
分布式集群(NewSQL體系):按照存儲(chǔ)計(jì)算分離模式,有計(jì)算節(jié)點(diǎn),存儲(chǔ)節(jié)點(diǎn)和配置管理節(jié)點(diǎn),基于分布式協(xié)議實(shí)現(xiàn)分布式存儲(chǔ)管理
同時(shí),集群維度和實(shí)例維度會(huì)有明顯差異的運(yùn)維管理流程,從長(zhǎng)遠(yuǎn)來(lái)看,以集群形式交付和以實(shí)例形式交付是根據(jù)業(yè)務(wù)需求來(lái)共同決定,會(huì)長(zhǎng)期共存。
綜上,集群和實(shí)例的含義有一些交叉,但是又有明顯的區(qū)別,按照規(guī)范程度來(lái)說(shuō),實(shí)例應(yīng)該盡可能以高可用集群的基礎(chǔ)架構(gòu)形式出現(xiàn),同時(shí)按照數(shù)據(jù)存儲(chǔ)水平擴(kuò)展需要可重構(gòu)成分布式集群(分庫(kù)分表)架構(gòu),同時(shí)因?yàn)楝F(xiàn)狀和使用的差異,會(huì)存在單實(shí)例,普通的主從等環(huán)境。
所以元數(shù)據(jù)的維度有實(shí)例和集群的明顯差異,但是在元數(shù)據(jù)設(shè)計(jì)中卻需要把兩者有效結(jié)合起來(lái),元數(shù)據(jù)為和元數(shù)據(jù)分層的對(duì)應(yīng)關(guān)系為:
元數(shù)據(jù)維度 |
元數(shù)據(jù)分層 |
接入層(信息緩存) |
|
實(shí)例 |
代理層拓?fù)鋵?/span>實(shí)例層 |
集群 |
|
主機(jī) |
主機(jī)層 |
數(shù)據(jù)庫(kù) |
數(shù)據(jù)庫(kù)層 |
業(yè)務(wù) |
業(yè)務(wù)層 |
本文轉(zhuǎn)載自微信公眾號(hào)「楊建榮的學(xué)習(xí)筆記」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系楊建榮的學(xué)習(xí)筆記公眾號(hào)。