關(guān)于數(shù)據(jù)庫(kù)資源交付的通用設(shè)計(jì)和改進(jìn)
對(duì)于安裝部署來(lái)說(shuō),涉及的流程較為繁雜,而且隨著后續(xù)的維護(hù)管理,流程會(huì)產(chǎn)生變動(dòng),在以往的代碼層維護(hù)中,會(huì)容易產(chǎn)生難以適配,流程不穩(wěn)定的情況,導(dǎo)致安裝部署的交付效率和預(yù)期存在較大的差距。
已有的流程如下:
如上流程存在以下的問(wèn)題,相信在很多中小公司都會(huì)或多或少有所涉及。
整體表現(xiàn)
1) 在代碼實(shí)現(xiàn)中,流程相對(duì)臃腫,偏硬編碼實(shí)現(xiàn),流程改動(dòng)風(fēng)險(xiǎn)高
2) 資源申請(qǐng)的填寫(xiě)信息過(guò)多,信息不夠簡(jiǎn)潔,對(duì)于業(yè)務(wù)側(cè)不夠友好
3) 目前的資源流程較為復(fù)雜,屬于定制化開(kāi)發(fā),如果在其他流程中有類(lèi)似的配置,代碼實(shí)現(xiàn)復(fù)用度低
資源審批
4) 資源交付時(shí)間比預(yù)期要長(zhǎng),一方面體現(xiàn)在審批環(huán)節(jié),另一方面體現(xiàn)在資源交付的試錯(cuò)成本高
5) 測(cè)試環(huán)境的數(shù)據(jù)庫(kù)資源申請(qǐng)目前在工單中不支持,需要人工引導(dǎo)創(chuàng)建數(shù)據(jù)庫(kù)的流程
主機(jī)資源池篩選
6) 在資源交付中,如果存在工單中不匹配的資源配置,則無(wú)法交付,需要重新修改工單單據(jù)
7) 主機(jī)資源池的環(huán)節(jié)目前是人為控制,需要手工錄入主機(jī)信息,沒(méi)有資源池的閾值管理和資源預(yù)申請(qǐng)流程
數(shù)據(jù)庫(kù)資源交付
8) 如果流程執(zhí)行失敗,重試流程檢測(cè)相對(duì)單薄,需要手工做一些額外的處理工作
9) 流程過(guò)長(zhǎng),某一環(huán)節(jié)出現(xiàn)錯(cuò)誤的概率較高,導(dǎo)致整個(gè)部署的出錯(cuò)概率偏高
10) 數(shù)據(jù)庫(kù)新版本的接入,使得原本的模式難以兼容,新環(huán)境部署目前多采用手工模式部署
11) 如果申請(qǐng)單實(shí)例,一主兩從,集群環(huán)境,則無(wú)法支持和適配。
數(shù)據(jù)庫(kù)權(quán)限交付
12) 資源交付后的權(quán)限交付處理,可能在業(yè)務(wù)資源申請(qǐng)的時(shí)候還沒(méi)有明確,所以后期改動(dòng)的概率較高,而如果手工申請(qǐng),則需要提交自動(dòng)化上線協(xié)作單(建庫(kù)),權(quán)限申請(qǐng)協(xié)作單(需要再一輪審批),建表(自動(dòng)化上線協(xié)作單或者對(duì)象操作協(xié)作單),對(duì)于流程不夠熟悉的開(kāi)發(fā)人員,流程會(huì)顯得復(fù)雜,不夠清晰。
對(duì)此相應(yīng)的改進(jìn)策略和方向如下,簡(jiǎn)而言之是希望讓資源的預(yù)申請(qǐng)和預(yù)配置這些占比超過(guò)90%的基礎(chǔ)工作先做好,業(yè)務(wù)提交申請(qǐng)的時(shí)候DBA只需要額外處理那10%的一部分配置管理。
整體表現(xiàn)
1) 在代碼實(shí)現(xiàn)中,流程相對(duì)臃腫,偏硬編碼實(shí)現(xiàn),流程改動(dòng)風(fēng)險(xiǎn)高
改進(jìn)策略:基于配置化的流程編排實(shí)現(xiàn),在設(shè)計(jì)初期就考慮流程的變化,通過(guò)多流程配置和編排來(lái)實(shí)現(xiàn)不同業(yè)務(wù)場(chǎng)景的支持,如對(duì)于單實(shí)例,一主一從,一主兩從的支持,流程相似但不同,通過(guò)配置不同的流程來(lái)實(shí)現(xiàn)多類(lèi)需求
2) 資源申請(qǐng)的填寫(xiě)信息過(guò)多,信息不夠簡(jiǎn)潔,對(duì)于業(yè)務(wù)側(cè)不夠友好
改進(jìn)策略:優(yōu)化目前的前端配置,去除不必要的信息和必填項(xiàng),減少至少20%的填寫(xiě)項(xiàng)。
3) 目前的資源流程較為復(fù)雜,屬于定制化開(kāi)發(fā),如果在其他流程中有類(lèi)似的配置,代碼實(shí)現(xiàn)復(fù)用度低
改進(jìn)策略:對(duì)于流程編排和任務(wù)配置,可以通過(guò)通用化配置和通用服務(wù)來(lái)實(shí)現(xiàn),提高代碼復(fù)用和穩(wěn)定性建設(shè)。
資源審批
4) 資源交付時(shí)間比預(yù)期要長(zhǎng),一方面體現(xiàn)在審批環(huán)節(jié),另一方面體現(xiàn)在資源交付的試錯(cuò)成本高
改進(jìn)策略:
對(duì)于測(cè)試環(huán)境的資源交付,其實(shí)就是數(shù)據(jù)庫(kù)交付,可以簡(jiǎn)化流程實(shí)現(xiàn)
對(duì)于開(kāi)發(fā)環(huán)境的資源交付,可以直接去除審批環(huán)節(jié),后期通過(guò)虛擬化多租戶的模式來(lái)實(shí)現(xiàn)
對(duì)于線上環(huán)境的資源交付,目前仍然保留已有的審批環(huán)節(jié),在資源成本方面的體現(xiàn)有待商榷
5) 測(cè)試環(huán)境的數(shù)據(jù)庫(kù)資源申請(qǐng)目前在工單單據(jù)中不支持,需要人工引導(dǎo)創(chuàng)建數(shù)據(jù)庫(kù)的流程
改進(jìn)策略:如上
主機(jī)資源池篩選
6) 在資源交付中,如果存在工單中不匹配的資源配置,則無(wú)法交付,需要重新修改工單的數(shù)據(jù)
改進(jìn)策略:資源池的配置可以實(shí)現(xiàn)差異化,但是需要考慮適配性。資源配置按照優(yōu)先可擴(kuò)容的標(biāo)準(zhǔn)來(lái)實(shí)現(xiàn),比如業(yè)務(wù)申請(qǐng)8C8G的數(shù)據(jù)庫(kù)資源,目前資源池存在5個(gè)實(shí)例資源:
① 2個(gè) 4C4G, 2個(gè)8C8G,1個(gè)8C16G,則可以按照2個(gè)8C8G的規(guī)格來(lái)交付
② 2個(gè) 4C4G, 1個(gè)8C8G,1個(gè)8C16G,則可以按照1個(gè)8C8G,1個(gè)8C16G的規(guī)格來(lái)交付,其中8C16G優(yōu)先綁定主庫(kù)
③ 2個(gè) 4C4G, 1個(gè)8C8G,2個(gè)8C16G,則可以按照2個(gè)8C16G的規(guī)格來(lái)交付
7) 主機(jī)資源池的環(huán)節(jié)目前是人為控制,需要手工錄入主機(jī)信息,沒(méi)有資源池的閾值管理和資源預(yù)預(yù)申請(qǐng)流程
改進(jìn)策略:在資源快速交付層面,可以把資源層拆分為主機(jī)資源池和數(shù)據(jù)庫(kù)實(shí)例資源池,通過(guò)主機(jī)資源池和實(shí)例資源池來(lái)分層建設(shè),其中實(shí)例資源池僅保留可用的資源,資源被使用后,需要?dú)w檔到資源歷史明細(xì)中,而主機(jī)資源池需要和系統(tǒng)部通過(guò)流程的方式來(lái)對(duì)接,對(duì)此主機(jī)資源池需要考慮實(shí)現(xiàn)閾值告警,并提供必要的接口供系統(tǒng)部回調(diào)。
數(shù)據(jù)庫(kù)資源交付
8) 如果流程執(zhí)行失敗,重試流程檢測(cè)相對(duì)單薄,需要手工做一些額外的處理工作
9) 流程過(guò)長(zhǎng),某一環(huán)節(jié)出現(xiàn)錯(cuò)誤的概率較高,導(dǎo)致整個(gè)部署的出錯(cuò)概率偏高
10) 數(shù)據(jù)庫(kù)新版本的接入,使得原本的模式難以兼容,新環(huán)境部署目前多采用手工模式部署
11) 如果申請(qǐng)單實(shí)例,一主兩從,集群環(huán)境,則無(wú)法支持和適配
改進(jìn)策略:目前通過(guò)通用流程來(lái)配置任務(wù)明細(xì),對(duì)于任務(wù)對(duì)象,需要考慮流水編號(hào)的全局唯一性
數(shù)據(jù)庫(kù)權(quán)限交付
12) 資源交付后的權(quán)限交付處理,可能在業(yè)務(wù)資源申請(qǐng)的時(shí)候還沒(méi)有明確,所以后期改動(dòng)的概率較高,而如果手工申請(qǐng),則需要提交自動(dòng)化上線協(xié)作單(建庫(kù)),權(quán)限申請(qǐng)協(xié)作單(需要再一輪審批),建表(自動(dòng)化上線協(xié)作單或者對(duì)象操作協(xié)作單),對(duì)于流程不夠熟悉的開(kāi)發(fā)人員,流程會(huì)顯得復(fù)雜,不夠清晰。
改進(jìn)策略:對(duì)于資源申請(qǐng)單據(jù)的處理,可以適度提供更靈活的支持模式,盡可能減少多工單的提交方式。
對(duì)于通用任務(wù)流程的整體設(shè)計(jì),主要是按照如下的方式分層的。
圖片
在更細(xì)節(jié)的部分涉及會(huì)少一些,比如任務(wù)依賴,超時(shí)處理等,主要還是以基本的流程執(zhí)行模式為主。
其中編排層實(shí)現(xiàn)流程的編排,流程任務(wù)的配置,此處涉及基本信息,不涉及具體的實(shí)現(xiàn)細(xì)節(jié)
應(yīng)用層為業(yè)務(wù)獨(dú)立的數(shù)據(jù)模型,需要在業(yè)務(wù)層定義全局唯一的批次號(hào)(batch_no),也可以理解為全局唯一的對(duì)象ID.
任務(wù)執(zhí)行層主要為通用任務(wù)的實(shí)現(xiàn),其中流程任務(wù)的配置明細(xì)是基于應(yīng)用層的數(shù)據(jù)配置和流程任務(wù)配置結(jié)合而成,形成任務(wù)明細(xì)的注冊(cè),如在提交部署請(qǐng)求的時(shí)候,就是任務(wù)明細(xì)的執(zhí)行計(jì)劃。
流程任務(wù)明細(xì)日志維護(hù)流程任務(wù)明細(xì)的執(zhí)行日志和狀態(tài),如果任務(wù)執(zhí)行成功,則會(huì)更新相應(yīng)的任務(wù)明細(xì)記錄狀態(tài),反之如果失敗,則需要啟動(dòng)重試機(jī)制。
本文轉(zhuǎn)載自微信公眾號(hào)「楊建榮的學(xué)習(xí)筆記」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系楊建榮的學(xué)習(xí)筆記公眾號(hào)。