版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
微服務(wù)開發(fā)中的數(shù)據(jù)架構(gòu)設(shè)計(jì)
前言微服務(wù)是當(dāng)前非常流行的技術(shù)框架,通過服務(wù)的小型化、原子化以及分布式架構(gòu)的彈性伸縮和高可用性,可以實(shí)現(xiàn)業(yè)務(wù)之間的松耦合、業(yè)務(wù)的靈活調(diào)整組合以及系統(tǒng)的高可用性。為業(yè)務(wù)創(chuàng)新和業(yè)務(wù)持續(xù)提供了一個(gè)良好的基礎(chǔ)平臺(tái)。本文分享在這種技術(shù)架構(gòu)下的數(shù)據(jù)架構(gòu)的設(shè)計(jì)思想以及設(shè)計(jì)要點(diǎn),本文包括下面若干內(nèi)容。微服務(wù)技術(shù)框架中的多層數(shù)據(jù)架構(gòu)設(shè)計(jì)數(shù)據(jù)架構(gòu)設(shè)計(jì)中的要點(diǎn)要點(diǎn)1:數(shù)據(jù)易用性要點(diǎn)2:主、副數(shù)據(jù)及數(shù)據(jù)解耦要點(diǎn)3:分庫分表要點(diǎn)4:多源數(shù)據(jù)適配要點(diǎn)5:多源數(shù)據(jù)緩存要點(diǎn)6:數(shù)據(jù)集市為了容易理解,本文用一個(gè)簡化的銷售模型來闡述,如下圖。圖1顯示了客戶、賣家、商品、定價(jià)、訂單的關(guān)系(這里省略支付、物流等其他元素)。圖1銷售模型在這個(gè)銷售模型中,賣家提供商品、制定價(jià)格,客戶選擇產(chǎn)品購買、形成銷售訂單。根據(jù)微服務(wù)的理念設(shè)計(jì),可以劃分為客戶服務(wù)、賣家服務(wù)、商品服務(wù)、定價(jià)服務(wù)、訂單服務(wù),以及公共服務(wù)(比如認(rèn)證、權(quán)限、通知等),如圖2所示。圖2微服務(wù)功能微服務(wù)架構(gòu)中的多層數(shù)據(jù)架構(gòu)設(shè)計(jì)分布式架構(gòu)一般把系統(tǒng)分為Saas(Software-as-a-Service)、Paas(Platform-as-a-Service)、Iaas(InfrastructureasaService)三層。其中Saas層負(fù)責(zé)對(duì)外部提供業(yè)務(wù)服務(wù),Paas層提供基礎(chǔ)應(yīng)用平臺(tái),Iaas層提供基礎(chǔ)設(shè)施。微服務(wù)垂直嵌入這三層服務(wù)之中,相互獨(dú)立。因此數(shù)據(jù)架構(gòu)設(shè)計(jì)時(shí)需要考慮三層服務(wù)對(duì)數(shù)據(jù)的關(guān)注點(diǎn),又要考慮微服務(wù)的獨(dú)立性。數(shù)據(jù)架構(gòu)的分層設(shè)計(jì)圖3微服務(wù)技術(shù)框架如圖3所示,Iaas層提供程序運(yùn)行的物理基礎(chǔ)環(huán)境(這邊涉及很多硬件·網(wǎng)絡(luò)內(nèi)容,在本文中省略)。Pass層細(xì)分為三層,基礎(chǔ)服務(wù)層,主要負(fù)責(zé)數(shù)據(jù)存儲(chǔ)處理;事務(wù)框架層,主要負(fù)責(zé)微服務(wù)的注冊(cè)·調(diào)度管理、分布式事務(wù)處理;應(yīng)用服務(wù)層、主要實(shí)現(xiàn)各個(gè)微服務(wù)的API,供其它微服務(wù)直接調(diào)用以及Saas層的服務(wù)調(diào)用。Saas服務(wù)就是公開對(duì)外提供的業(yè)務(wù)服務(wù)。全文中架構(gòu)技術(shù)運(yùn)用到的知識(shí)點(diǎn)可以在群619881427免費(fèi)獲取。感興趣的可以加入進(jìn)來。數(shù)據(jù)架構(gòu)自下向上相應(yīng)的分為RawData層、LogicData(inner)層和LogicData(outer)層(Iaas中主要以基礎(chǔ)硬件環(huán)境為主,在本文中省略)。RawData層是基于數(shù)據(jù)庫、文件或者其他形式數(shù)據(jù)內(nèi)容。LogicData(inner)層是微服務(wù)API使用的邏輯數(shù)據(jù),比如客戶數(shù)據(jù)、訂單數(shù)據(jù)等等。LogicData(outer)層是對(duì)外服務(wù)提供數(shù)據(jù),比如客戶訂單數(shù)據(jù)。因此,我們的數(shù)據(jù)架構(gòu)的分層結(jié)果如圖4所示。圖4數(shù)據(jù)分層架構(gòu)除此之外,很多情報(bào)會(huì)以畫面或報(bào)表的形式展現(xiàn)出來。因此在LogicData(outer)之上,可以構(gòu)建InformationBlock(常用的信息塊)、通過Viewtype(顯示模式)的設(shè)定后,最終View展現(xiàn)出來。如圖4所示,越靠近對(duì)外服務(wù)層,客戶對(duì)設(shè)計(jì)者的影響度越大,越需要從使用性、易用性、適用性等考慮。反之,越遠(yuǎn)離對(duì)外服務(wù)層,設(shè)計(jì)上更關(guān)心數(shù)據(jù)的存儲(chǔ)。數(shù)據(jù)三層架構(gòu)的好處是實(shí)現(xiàn)數(shù)據(jù)從系統(tǒng)實(shí)現(xiàn)到業(yè)務(wù)實(shí)現(xiàn)的逐層過渡,實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)和系統(tǒng)數(shù)據(jù)間的松耦合。同時(shí)實(shí)現(xiàn)業(yè)務(wù)的靈活擴(kuò)展和系統(tǒng)的靈活擴(kuò)展。數(shù)據(jù)架構(gòu)設(shè)計(jì)中的要點(diǎn)上面講述了數(shù)據(jù)架構(gòu)的分層設(shè)計(jì),下面講述數(shù)據(jù)架構(gòu)設(shè)計(jì)中的要點(diǎn)。要點(diǎn)1:數(shù)據(jù)易用性數(shù)據(jù)無論用什么方式實(shí)現(xiàn),其最終目的都是為業(yè)務(wù)(或者是客戶)使用的。因此,在對(duì)外提供服務(wù)的時(shí)候,數(shù)據(jù)的易用性非常關(guān)鍵。圖5數(shù)據(jù)易用性如圖5所示,客戶信息在LogicData(inner)層中為了數(shù)據(jù)的柔軟性和非冗余,把人員信息拆成若干子表來存儲(chǔ)。比如,人員地址表可以無限多的存儲(chǔ)客戶地址信息。這樣的好處在于每次人員地址更新時(shí),不用直接更新人員地址,而是生成一個(gè)新的地址數(shù)據(jù),原有的地址信息作為歷史數(shù)據(jù)得到保存,易于數(shù)據(jù)快速恢復(fù)和歷史信息追蹤。但在LogicData(outer)層提供外部數(shù)據(jù)的時(shí)候,首先考慮的是一次性能提供足夠用的信息(畢竟查詢的操作大大高于修改的操作),減少業(yè)務(wù)場景中不需要的信息。比如對(duì)一般客戶只提供三個(gè)常用地址的時(shí)候,數(shù)據(jù)設(shè)計(jì)中地址1、地址2和地址3放在一張表中。要點(diǎn)2:主、副數(shù)據(jù)及數(shù)據(jù)解耦每個(gè)微服務(wù)API的數(shù)據(jù)完全獨(dú)立是不太現(xiàn)實(shí)的,比如訂單中需要有商品、客戶(包括收貨者)、賣家以及價(jià)格等數(shù)據(jù)。如果這些數(shù)據(jù)都在訂單服務(wù)API中管理,那么客戶情報(bào)的變更、價(jià)格調(diào)整等信息都要同步給訂單API中數(shù)據(jù),數(shù)據(jù)的耦合度就會(huì)變得非常高。在數(shù)據(jù)設(shè)計(jì)的時(shí)候,需要考慮降低數(shù)據(jù)間的相互依賴性。因此,首先需要確定每個(gè)微服務(wù)API的主數(shù)據(jù)和副數(shù)據(jù)。主數(shù)據(jù)指微服務(wù)API的核心數(shù)據(jù),這種數(shù)據(jù)的增刪改主要集中在某個(gè)微服務(wù)API中,比如訂單服務(wù)API中的訂單數(shù)據(jù)。副數(shù)據(jù)指參照或者映射其他微服務(wù)API的數(shù)據(jù),比如訂單服務(wù)API中的商品數(shù)據(jù)、價(jià)格數(shù)據(jù)等。其次,為了降低數(shù)據(jù)之間的耦合度,用數(shù)據(jù)關(guān)聯(lián)表來表征數(shù)據(jù)間的關(guān)系。如果想去掉數(shù)據(jù)間的關(guān)聯(lián)關(guān)系,直接去掉關(guān)聯(lián)表即可,對(duì)數(shù)據(jù)本身的沒有任何影響。具體如圖6所示。圖6主、副數(shù)據(jù)及數(shù)據(jù)解耦要點(diǎn)3:分庫分表隨著業(yè)務(wù)數(shù)據(jù)量不斷增加,單一數(shù)據(jù)庫或單一數(shù)據(jù)表中會(huì)積累大量的數(shù)據(jù),比如訂單數(shù)據(jù),隨著時(shí)間推移和客戶數(shù)量的增加,產(chǎn)生的訂單數(shù)據(jù)也會(huì)越來越多。當(dāng)數(shù)據(jù)累積到一定程度后,數(shù)據(jù)操作的性能會(huì)大幅下降,也就是我們常說的數(shù)據(jù)庫“帶不動(dòng)了”。所以,在數(shù)據(jù)架構(gòu)設(shè)計(jì)階段就應(yīng)該考慮數(shù)據(jù)的分庫分表。如圖7所示,分庫,即我們把訂單數(shù)據(jù)分為當(dāng)前數(shù)據(jù)應(yīng)用庫、歷史數(shù)據(jù)庫、歷史歸檔數(shù)據(jù)庫。當(dāng)前數(shù)據(jù)應(yīng)用庫用來支持新訂單的生成以及執(zhí)行中訂單的增刪改查。歷史數(shù)據(jù)庫(這里舉例分為最近3個(gè)月和最近1年)當(dāng)客戶想看過往訂單的時(shí)候才使用。歷史歸檔數(shù)據(jù)(按年間歸檔)原則上不直接對(duì)客戶公開,用于備查、統(tǒng)計(jì)分析。對(duì)于當(dāng)前數(shù)據(jù)應(yīng)用庫,可以繼續(xù)再分庫,按客戶號(hào)范圍來分庫。這樣每個(gè)數(shù)據(jù)庫的大小都能得到有效控制。分表,即把一條信息分別存儲(chǔ)在兩張或多張表中。比如把訂單信息按基本信息和詳細(xì)信息分表,就可以適用于訂單的基本信息查詢和訂單詳細(xì)信息查詢。總之,分庫分表的核心就是控制單一數(shù)據(jù)庫的負(fù)荷(數(shù)據(jù)量和數(shù)據(jù)信息量),通過多表多庫來應(yīng)對(duì)業(yè)務(wù)數(shù)據(jù)量的增長。圖7分表分庫要點(diǎn)4:多源數(shù)據(jù)適配傳統(tǒng)的關(guān)系型數(shù)據(jù)庫之外,有多種多樣的數(shù)據(jù)源,比如圖像、聲音、視頻等多媒體數(shù)據(jù)文件或數(shù)據(jù)流,CSV、TXT、Doc、Excle、PDF、XML等各種異構(gòu)數(shù)。這些數(shù)據(jù)都需要做相應(yīng)的處理,轉(zhuǎn)換成可管理的數(shù)據(jù)信息。因此在數(shù)據(jù)架構(gòu)設(shè)計(jì)的時(shí)候,需要給不同性質(zhì)的數(shù)據(jù)源配置相對(duì)應(yīng)的讀寫適配器,同時(shí)也需要有統(tǒng)一調(diào)度的地方,如圖8所示。全文中架構(gòu)技術(shù)運(yùn)用到的知識(shí)點(diǎn)可以在群619881427免費(fèi)獲取。感興趣的可以加入進(jìn)來。圖8多源數(shù)據(jù)適配要點(diǎn)5:多源數(shù)據(jù)緩存數(shù)據(jù)處理的性能除了處理邏輯的復(fù)雜度以外,還有很大一部分是目標(biāo)數(shù)據(jù)的操作時(shí)長(含對(duì)硬件磁盤設(shè)備的讀寫以及網(wǎng)絡(luò)的傳輸)。網(wǎng)絡(luò)速度特別是光纖的使用后已經(jīng)大幅度提高,但機(jī)器磁盤的讀寫效率并沒有顯著提高,因此減少磁盤讀寫是提高效率的一個(gè)重要途徑。數(shù)據(jù)緩存就是把常用的數(shù)據(jù)(不會(huì)經(jīng)常更改的數(shù)據(jù))、最近使用數(shù)據(jù)放到內(nèi)存中。這樣就可以大幅降低系統(tǒng)對(duì)硬件磁盤設(shè)備的操作開銷,提高整個(gè)數(shù)據(jù)系統(tǒng)的性能,如圖9所示。圖9數(shù)據(jù)緩存要點(diǎn)6:數(shù)據(jù)集市數(shù)據(jù)集市是一個(gè)很大的話題。當(dāng)現(xiàn)有的數(shù)據(jù)不能簡單地通過幾個(gè)表數(shù)據(jù)關(guān)聯(lián)以及簡單加工后就可以供業(yè)務(wù)使用的時(shí)候,就需要考慮構(gòu)建數(shù)據(jù)集市。數(shù)據(jù)集市以數(shù)據(jù)運(yùn)用的觀點(diǎn)來分析加工數(shù)據(jù),通
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)家樂餐飲服務(wù)與食材供應(yīng)合同4篇
- 2025年度電力設(shè)施維護(hù)司機(jī)派遣服務(wù)合同4篇
- 2025年度企業(yè)員工短期培訓(xùn)費(fèi)支付標(biāo)準(zhǔn)合同
- 二零二五年度新能源車輛采購配送及運(yùn)營服務(wù)合同3篇
- 二零二五年度企業(yè)法律顧問提前終止服務(wù)合同協(xié)議書
- 二零二五年度城市綠化項(xiàng)目臨時(shí)綠化員聘用合同4篇
- 2025年度個(gè)人與企業(yè)貸款融資合作協(xié)議合同范本4篇
- 2025版門面轉(zhuǎn)讓合同范本:商業(yè)地產(chǎn)經(jīng)營權(quán)轉(zhuǎn)讓詳細(xì)協(xié)議
- 課題申報(bào)參考:南水北調(diào)中線水源區(qū)家庭農(nóng)場耕地生態(tài)保護(hù)行為形成邏輯與實(shí)現(xiàn)機(jī)制研究
- 2025年度美容院美容護(hù)理產(chǎn)品代工合同4篇
- 定額〔2025〕1號(hào)文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價(jià)格水平調(diào)整的通知
- 2024年城市軌道交通設(shè)備維保及安全檢查合同3篇
- 電力溝施工組織設(shè)計(jì)-電纜溝
- 【教案】+同一直線上二力的合成(教學(xué)設(shè)計(jì))(人教版2024)八年級(jí)物理下冊(cè)
- 湖北省武漢市青山區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末質(zhì)量檢測數(shù)學(xué)試卷(含解析)
- 單位往個(gè)人轉(zhuǎn)賬的合同(2篇)
- 電梯操作證及電梯維修人員資格(特種作業(yè))考試題及答案
- 科研倫理審查與違規(guī)處理考核試卷
- GB/T 44101-2024中國式摔跤課程學(xué)生運(yùn)動(dòng)能力測評(píng)規(guī)范
- 鍋爐本體安裝單位工程驗(yàn)收表格
- 高危妊娠的評(píng)估和護(hù)理
評(píng)論
0/150
提交評(píng)論