版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、分布式微服務(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ǔ)平臺。本文分享在這種技術(shù)構(gòu)架下的數(shù)據(jù)構(gòu) 架設(shè)計(jì)的設(shè)計(jì)想法和設(shè)計(jì)要點(diǎn),本文包括下面若干內(nèi)容。分布式微服務(wù)構(gòu)架中的多層數(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è)簡化的銷售模型來闡述,如下圖。圖 一顯示了客戶、賣
2、家、商品、定價(jià)、訂單的關(guān)系(這里省略支付、物 流等其他元素B買、形成銷售訂單。根據(jù)微服務(wù)的理念設(shè)計(jì)為客戶服務(wù)、賣家服務(wù)、 商品服務(wù)、定價(jià)服務(wù)、訂單服務(wù),以及公共服務(wù)(比如認(rèn)證、權(quán)限、 通知等),如圖二所示??蛻舴唵畏?wù)商品服務(wù)定價(jià)服務(wù)賣家服務(wù)公共服務(wù)、.客戶新增/修正客戶訂單做成/修正商品情報(bào)查詢定價(jià)規(guī)則制定/修正賣家新熠/修正認(rèn)證服務(wù)客戶情報(bào)查詢客戶訂單查詢商品新增/修正.定價(jià)規(guī)則發(fā)布/廢棄賣家情報(bào)查詢權(quán)限管理客戶訂單取消商品上架/下架商品定價(jià)1 0 日志服務(wù)賣家訂單查詢商品賣家指定 0 LrL JJ1.K/圖二微服務(wù)功能一、分布式微服務(wù)構(gòu)架中的多層數(shù)據(jù)構(gòu)架設(shè)計(jì)分布式構(gòu)架一般把系統(tǒng)分為S
3、aas( Software-as-a-Service)、Paas(Platform-as-a-Service X Iaas( Infrastructure as a Service)三層。其中 Saas層負(fù)責(zé)對外部提供業(yè)務(wù)服務(wù),Paas層提供基礎(chǔ)應(yīng)用平臺,Iaas層 提供基礎(chǔ)設(shè)施。微服務(wù)垂直嵌入這三層服務(wù)之中,相互獨(dú)立。因此數(shù) 據(jù)構(gòu)架設(shè)計(jì)時(shí)需要考慮三層服務(wù)對數(shù)據(jù)的關(guān)注點(diǎn),又要考慮微服務(wù)的獨(dú)立性。Logic Data(outer)!圖三分布式微服務(wù)構(gòu)架數(shù)據(jù)架構(gòu)的分層設(shè)計(jì)如圖三自下向上所示,Iaas層提供程序運(yùn)行的物理基礎(chǔ)環(huán)境(這 邊涉及很多硬件網(wǎng)路內(nèi)容,在本文中省略。Pass層細(xì)分為三層: 基礎(chǔ)
4、服務(wù)層,主要負(fù)責(zé)數(shù)據(jù)存儲處理;事務(wù)框架層,主要負(fù)責(zé)微服務(wù) 的注冊調(diào)度管理、分布式事務(wù)處理;應(yīng)用服務(wù)層、主要實(shí)現(xiàn)各個(gè)微 服務(wù)的API ,供其它微服務(wù)直接調(diào)用以及Saas層的服務(wù)調(diào)用。Saas 服務(wù)就是公開對外提供的業(yè)務(wù)服務(wù)。數(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)層是對外
5、服務(wù)提供數(shù)據(jù), 比如客戶訂單數(shù)據(jù)。因此,我們的數(shù)據(jù)架構(gòu)的分層結(jié)果如圖四。強(qiáng)應(yīng)用Logic Data (inner)客戶影響度設(shè)計(jì)傾向圖四數(shù)據(jù)分層構(gòu)架除此之外,很多情報(bào)會以畫面或報(bào)表的形式展現(xiàn)出來。因此在 Logic Data(outer)之上,可以構(gòu)建InformationBlock(常用的信息塊)v 通過Viewtype (顯示模式)的設(shè)定后,最終View展現(xiàn)出來。如圖四所示,越靠近對外服務(wù)層,客戶對設(shè)計(jì)者的影響度越大, 越需要從使用性、易用性、適用性等考慮。反之,越遠(yuǎn)離對外服務(wù)層, 設(shè)計(jì)上更關(guān)心數(shù)據(jù)的存儲。數(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ù)
6、間的松耦合。同時(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ù)(或者是客戶)使用的。因此,在對外提供服務(wù)的時(shí)候,數(shù)據(jù)的易用性非常關(guān)鍵。圖五數(shù)據(jù)易用性如圖五所示,客戶信息在LogicData( inner)層中為了數(shù)據(jù)的 柔軟性和非冗余,把人員信息拆成若干子表來存儲。比如,人員地址 表可以無限多的存儲客戶地址信息。這樣的好處在于每次人員地址更 新時(shí),不用直接更新人員地址,而是生成一個(gè)新的地址數(shù)據(jù),原有的 地址信息作為歷史數(shù)據(jù)得到保存,易于數(shù)據(jù)快速恢復(fù)和歷史信
7、息追蹤。 但在LogicData( outer)層提供外部數(shù)據(jù)的時(shí)候,首先考慮的是一次 性能提供足夠用的信息(畢竟查詢的操作大大高于修改的操作),減 少業(yè)務(wù)場景中不需要的信息。比如對一般客戶只提供三個(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ù)的耦合度就會變得非常高。在數(shù)據(jù)設(shè) 計(jì)的時(shí)候,需要考慮降低數(shù)據(jù)間的相互依賴性。因此,首先需要
8、確定 每個(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)表即可,對數(shù)據(jù)本身的沒有任何影響。 具體如圖六所示。圖六主、副數(shù)據(jù)及數(shù)據(jù)解耦要點(diǎn)3 :分庫分表隨著業(yè)務(wù)數(shù)據(jù)量不斷增加,單一數(shù)據(jù)庫或單一數(shù)據(jù)表中會積累大 量的數(shù)據(jù),比如訂單數(shù)據(jù),隨著時(shí)間推移和客戶數(shù)量的增加,產(chǎn)生的 訂單數(shù)據(jù)也會越來越多。當(dāng)數(shù)據(jù)累積到
9、一定程度后,數(shù)據(jù)操作的性能 會大幅下降,也就是我們常說的數(shù)據(jù)庫“帶不動(dòng)了”。所以,在數(shù)據(jù)構(gòu) 架設(shè)計(jì)階段就應(yīng)該考慮數(shù)據(jù)的分庫分表。如圖七所示,分庫:我們把 訂單數(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ù)(按年間歸檔)原則上不直接對客戶公 開,用于備查、統(tǒng)計(jì)分析。對于當(dāng)前數(shù)據(jù)應(yīng)用庫,可以繼續(xù)再分庫, 按客戶號范圍來分庫。這樣每個(gè)數(shù)據(jù)庫的大小都能得到有效控制。分表:把一條信息分在存儲在兩張或多張表中。比如把訂單信息按基本信息和詳細(xì)信息分
10、表,就可以適用于訂單的基本信息查詢和訂單詳細(xì) 信息查詢??傊?,分庫分表的核心就是控制單一數(shù)據(jù)庫的負(fù)荷(數(shù)據(jù)量和數(shù)據(jù)信息量),通過多表多庫來應(yīng)對業(yè)務(wù)數(shù)據(jù)量的增長。分庫設(shè)計(jì) 分庫分表設(shè)計(jì)當(dāng)前數(shù)據(jù)- - -一一 -執(zhí)行中的訂單當(dāng)前數(shù)據(jù)歷史數(shù)據(jù)最近三個(gè)月商訂單客戶號訝0而0的訂單,表1訂單信息項(xiàng)目1-項(xiàng)目25訂單信息項(xiàng)目26-項(xiàng)目XXX歷史歸檔數(shù)據(jù)最近一年兩訂單訂單信息 項(xiàng)目1-項(xiàng)目25訂單信息 項(xiàng)目1-項(xiàng)目25訂單信息 項(xiàng)目26-項(xiàng)目XXX20001- 40000的訂單喜 )5號10001-20000的訂單圖七分表分庫要點(diǎn)4 :多源數(shù)據(jù)適配傳統(tǒng)的關(guān)系型數(shù)據(jù)庫之外,有多種多樣的數(shù)據(jù)源,比如圖像、聲 音
11、、視頻等多媒體數(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ù)源配置相對應(yīng)的讀寫適配器,同時(shí)也需要有統(tǒng)一調(diào)度的地方,如圖八所示。圖八多源數(shù)據(jù)要點(diǎn)5 :多源數(shù)據(jù)緩存數(shù)據(jù)處理的性能除了處理邏輯的復(fù)雜度以外,還有很大一部分是 目標(biāo)數(shù)據(jù)的操作時(shí)長(含對硬件磁盤設(shè)備的讀寫以及網(wǎng)絡(luò)的傳輸)。 網(wǎng)絡(luò)速度特別是光纖的使用后已經(jīng)大幅度提高,但機(jī)器磁盤的讀寫效 率并沒有顯著提高,因此減少磁盤讀寫是提高效率的一個(gè)重要途徑。 數(shù)據(jù)緩存就是把常用的數(shù)據(jù)(不會經(jīng)常更改的數(shù)據(jù))、最近使用數(shù)據(jù) 放到內(nèi)存中。這樣就可以大幅降低系統(tǒng)對硬件磁盤設(shè)備的操作開銷, 提高整個(gè)數(shù)據(jù)系統(tǒng)的性能。圖九數(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ù),通過多源 數(shù)據(jù)的導(dǎo)入、清洗、加工、視圖做成等一系列的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 常見的植物(練習(xí))(解析版)
- 自我管理的8個(gè)好習(xí)慣
- 備考2024河南省攝影師資格證考試真題練習(xí)試卷A卷附答案
- 大學(xué)物理第九章磁場
- 科技創(chuàng)新論壇籌備方案
- 酒店開業(yè)推廣活動(dòng)策劃方案
- 中級經(jīng)濟(jì)師考試《工商管理》真題沖刺模擬(含標(biāo)準(zhǔn)答案)
- 人員培訓(xùn)成果
- 高層建筑火災(zāi)的安全疏散計(jì)劃
- 高中化學(xué)復(fù)習(xí)導(dǎo)圖
- 湘少版五年級下冊英語全期教案
- 高速公路收費(fèi)站常見特情處理辦法課件
- 《行政許可法培訓(xùn)》課件
- 顱內(nèi)占位性的病變護(hù)理查房課件
- 山東省煙臺市芝罘區(qū)(五四制)2023-2024學(xué)年九年級上學(xué)期期末考試物理試題
- DB14∕T 1851-2019 中華鼢鼠防治技術(shù)規(guī)程
- 2024年風(fēng)電鑄件行業(yè)市場研究報(bào)告
- 中耳膽脂瘤的護(hù)理查房
- 財(cái)務(wù)科廉潔風(fēng)險(xiǎn)點(diǎn)及防控措施【15篇】
- 六年級上冊道德與法治《期中考試試卷》含答案解析
- 物聯(lián)網(wǎng)的數(shù)據(jù)傳輸技術(shù)
評論
0/150
提交評論