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