亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線(xiàn)實(shí)戰(zhàn)洞察。

REA模型實(shí)戰(zhàn):用事件驅(qū)動(dòng)解決業(yè)務(wù)與財(cái)務(wù)數(shù)據(jù)不一致

REA模型實(shí)戰(zhàn):用事件驅(qū)動(dòng)解決業(yè)務(wù)與財(cái)務(wù)數(shù)據(jù)不一致 去年年中我在梳理模擬項(xiàng)目X的訂單履約鏈路時(shí)被一個(gè)簡(jiǎn)單的問(wèn)題卡住了財(cái)務(wù)說(shuō)賬上還有120萬(wàn)應(yīng)收賬款業(yè)務(wù)說(shuō)早該催款的只有80萬(wàn)兩邊數(shù)字對(duì)不上。系統(tǒng)里明明都用了同一套訂單數(shù)據(jù)為什么算出來(lái)的結(jié)果會(huì)差這么多追下去才發(fā)現(xiàn)癥結(jié)出在底層數(shù)據(jù)模型上。財(cái)務(wù)模塊延續(xù)的是復(fù)式記賬那一套——憑證、科目、借、貸、余額。每一筆訂單都要經(jīng)過(guò)憑證模板轉(zhuǎn)換成會(huì)計(jì)分錄再由總賬系統(tǒng)匯總成余額。業(yè)務(wù)側(cè)的數(shù)據(jù)模型則圍繞訂單、發(fā)貨單、回款單這些業(yè)務(wù)單據(jù)。兩套模型之間的橋梁是幾十個(gè)字段映射和轉(zhuǎn)換規(guī)則。只要中間任何一張單據(jù)漏配、錯(cuò)配財(cái)務(wù)賬與業(yè)務(wù)臺(tái)賬就會(huì)悄悄分叉。這不是某一家企業(yè)特有的問(wèn)題而是傳統(tǒng)會(huì)計(jì)信息系統(tǒng)的結(jié)構(gòu)性毛病。復(fù)式記賬法誕生于商業(yè)貿(mào)易靠紙質(zhì)憑證的年代它擅長(zhǎng)的是記錄金額的增減而不是描述業(yè)務(wù)發(fā)生了什么。借貸分錄天然地站在結(jié)果的視角站在賬戶(hù)的視角站在一種已經(jīng)被抽象過(guò)、壓縮過(guò)的狀態(tài)上。它不關(guān)心訂單是幾點(diǎn)幾分被確認(rèn)、貨物由誰(shuí)揀選、物流簽收發(fā)生在哪個(gè)環(huán)節(jié)而恰恰是這些過(guò)程信息構(gòu)成了數(shù)字化業(yè)務(wù)系統(tǒng)的核心。正因如此我才開(kāi)始認(rèn)真研究rea。rea的全稱(chēng)是Resource-Event-Agent最早是會(huì)計(jì)信息系統(tǒng)領(lǐng)域的研究者提出的一個(gè)企業(yè)建模框架后來(lái)被大量用在業(yè)務(wù)流程建模、領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)甚至事件溯源架構(gòu)中。它主張用資源、事件、參與者三要素來(lái)描述業(yè)務(wù)并認(rèn)為會(huì)計(jì)賬簿中的數(shù)字應(yīng)該是這套業(yè)務(wù)模型的自然派生結(jié)果而不是需要另起爐灶單獨(dú)維護(hù)的一套數(shù)據(jù)。這篇文章會(huì)給你完整展示我如何用rea模型梳理一條從銷(xiāo)售到收款的全流程包括底層表結(jié)構(gòu)設(shè)計(jì)、與DDD和事件溯源的映射關(guān)系以及落地時(shí)踩過(guò)的四個(gè)坑。如果你也正在被業(yè)務(wù)數(shù)據(jù)與財(cái)務(wù)數(shù)據(jù)不一致折磨或者想在下一個(gè)項(xiàng)目里嘗試事件溯源架構(gòu)這篇文章應(yīng)該能幫你省下不少摸索時(shí)間。1. 數(shù)據(jù)分叉背后借貸式記賬為何拖累了數(shù)字化業(yè)務(wù)1.1 財(cái)務(wù)模塊與業(yè)務(wù)臺(tái)賬各說(shuō)各話(huà)我在模擬項(xiàng)目X里最先碰到的矛盾其實(shí)是很多企業(yè)系統(tǒng)的共性困境。訂單、發(fā)貨、回款在業(yè)務(wù)庫(kù)中都是標(biāo)準(zhǔn)的結(jié)構(gòu)化數(shù)據(jù)每一筆都有時(shí)間戳、有狀態(tài)、有操作人可財(cái)務(wù)模塊不看這些它只認(rèn)憑證。系統(tǒng)里有一個(gè)憑證生成器把每一個(gè)業(yè)務(wù)動(dòng)作翻譯成借xx科目、貸xx科目再匯總進(jìn)總賬。問(wèn)題就出在這個(gè)翻譯層上——翻譯規(guī)則一旦不完整業(yè)務(wù)側(cè)和財(cái)務(wù)側(cè)就再也對(duì)不上。比如一張銷(xiāo)售訂單在業(yè)務(wù)側(cè)已經(jīng)發(fā)貨但憑證生成器因?yàn)槟硞€(gè)狀態(tài)位沒(méi)更新沒(méi)有生成對(duì)應(yīng)的收入確認(rèn)憑證。此時(shí)業(yè)務(wù)臺(tái)賬顯示已發(fā)貨未回款財(cái)務(wù)賬上卻完全沒(méi)有這筆應(yīng)收記錄。等到月底對(duì)賬時(shí)兩邊就差出一大截。你可以在事后補(bǔ)一個(gè)批處理任務(wù)去修復(fù)但每次修復(fù)都是打補(bǔ)丁補(bǔ)丁越打越多系統(tǒng)越來(lái)越難維護(hù)。這種困境的根源是數(shù)據(jù)模型的方向性錯(cuò)誤。借貸記賬法和業(yè)務(wù)事件流是兩套完全不同的抽象層級(jí)。前者把業(yè)務(wù)動(dòng)作壓縮成借貸金額這一種表達(dá)方式后者需要保留業(yè)務(wù)動(dòng)作的完整語(yǔ)義——誰(shuí)、何時(shí)、做了什么、改變了什么。當(dāng)你用一套高度壓縮的數(shù)據(jù)結(jié)構(gòu)去承載需要全細(xì)節(jié)的業(yè)務(wù)邏輯時(shí)摩擦是必然的。1.2 rea是另一種組織業(yè)務(wù)事實(shí)的方式rea給我的第一個(gè)啟發(fā)就是它換了提問(wèn)方式。傳統(tǒng)模型問(wèn)的是這筆業(yè)務(wù)該記在哪個(gè)科目、該借還是該貸rea問(wèn)的是發(fā)生了什么事件、涉及什么資源、由誰(shuí)參與。這三個(gè)問(wèn)題看起來(lái)樸素建立出來(lái)的數(shù)據(jù)模型卻完全不一樣。它不預(yù)設(shè)賬戶(hù)這個(gè)抽象概念而是把業(yè)務(wù)事實(shí)本身作為建模的起點(diǎn)。會(huì)計(jì)意義上的借和貸在rea里不存在取而代之的是資源流入和資源流出而流入流出后得到的狀態(tài)——比如應(yīng)收余額、庫(kù)存數(shù)量——全部可以由事件推導(dǎo)出來(lái)。兩個(gè)模式放在一起對(duì)比會(huì)更直觀(guān)視角傳統(tǒng)借貸模式rea事件模式記錄對(duì)象賬戶(hù)、憑證、科目資源、事件、參與者核心問(wèn)題余額是多少發(fā)生了什么時(shí)間特性期末匯總、過(guò)賬結(jié)轉(zhuǎn)事件發(fā)生時(shí)記錄余額產(chǎn)生方式借貸匯總事件流投影業(yè)務(wù)追溯憑證到流水多跳映射事件天然關(guān)聯(lián)表格里最后一行是我感觸最深的地方。傳統(tǒng)架構(gòu)要做一筆應(yīng)收追溯通常是從科目余額出發(fā)找到憑證從憑證找到業(yè)務(wù)單據(jù)中間還可能經(jīng)過(guò)幾張結(jié)轉(zhuǎn)表rea模型則可以直接定位到哪一筆銷(xiāo)售事件產(chǎn)生了這筆應(yīng)收哪一筆收款事件核銷(xiāo)了它。這種追溯能力對(duì)數(shù)字化業(yè)務(wù)太重要了幾乎決定了一個(gè)系統(tǒng)能否被長(zhǎng)期維護(hù)。2. 拆開(kāi)rea資源、事件、參與者分別回答什么問(wèn)題2.1 資源不是所有資產(chǎn)都能進(jìn)模型很多人第一次接觸rea時(shí)最常犯的錯(cuò)誤就是把資源等同于會(huì)計(jì)科目或資產(chǎn)。實(shí)際上rea中的資源必須滿(mǎn)足兩個(gè)條件第一它必須處于企業(yè)的控制范圍內(nèi)或交換范圍內(nèi)第二它必須能夠在經(jīng)濟(jì)事件中被消耗、轉(zhuǎn)化、轉(zhuǎn)移或創(chuàng)造。舉個(gè)例子庫(kù)存商品是資源因?yàn)殇N(xiāo)售事件會(huì)讓它減少采購(gòu)事件會(huì)讓它增加現(xiàn)金和銀行存款是資源因?yàn)槭湛钍录?huì)讓它增加付款事件會(huì)讓它減少。但廠(chǎng)房、設(shè)備、商標(biāo)權(quán)這些在企業(yè)日常經(jīng)營(yíng)活動(dòng)建模中往往不會(huì)被當(dāng)作rea資源——它們不參與頻繁的業(yè)務(wù)事件流轉(zhuǎn)更多是作為一個(gè)固定的經(jīng)營(yíng)前提存在建模時(shí)把注意力放在它們服務(wù)的那些業(yè)務(wù)事件上即可。為了便于理解我把資源類(lèi)比成水庫(kù)里的水位。水位本身是靜態(tài)的存量你不關(guān)心它的絕對(duì)值而是關(guān)心它在什么時(shí)間點(diǎn)因?yàn)槭裁词录l(fā)生了多少變化。這個(gè)視角和傳統(tǒng)庫(kù)存管理不一樣傳統(tǒng)庫(kù)存管理一上來(lái)就要正確的當(dāng)前庫(kù)存量而rea更關(guān)心庫(kù)存量是如何一步步變成現(xiàn)在這個(gè)值的。2.2 事件只看直接改變資源狀態(tài)的動(dòng)作如果說(shuō)資源是水庫(kù)的水位那么事件就是打開(kāi)閥門(mén)或關(guān)上閥門(mén)的動(dòng)作它是整個(gè)rea模型的樞紐。rea對(duì)事件的定義有一套嚴(yán)格但不難把握的標(biāo)準(zhǔn)一個(gè)事件必須在一個(gè)明確的時(shí)間點(diǎn)發(fā)生必須能被記錄必須與至少一個(gè)參與者相關(guān)并且必須直接改變一個(gè)或多個(gè)資源的狀態(tài)。注意這里我特意強(qiáng)調(diào)直接。這個(gè)直接標(biāo)準(zhǔn)對(duì)建模粒度非常關(guān)鍵?;氐戒N(xiāo)售場(chǎng)景中客戶(hù)點(diǎn)擊了商品詳情頁(yè)就不算事件因?yàn)辄c(diǎn)擊動(dòng)作沒(méi)有直接改變?nèi)魏问芸刭Y源的狀態(tài)。而銷(xiāo)售訂單被確認(rèn)就算事件因?yàn)樗苯幼寧?kù)存商品從可售狀態(tài)變成預(yù)占狀態(tài)或者說(shuō)資源的狀態(tài)發(fā)生了變化。我把這個(gè)判斷標(biāo)準(zhǔn)總結(jié)成一個(gè)輔助公式如果一個(gè)活動(dòng)既不增加、不減少、不轉(zhuǎn)化、也不轉(zhuǎn)移任何資源那它就不應(yīng)該出現(xiàn)在rea模型中。用這個(gè)標(biāo)準(zhǔn)去評(píng)審建模草稿通常能很快發(fā)現(xiàn)哪些地方塞進(jìn)了太多偽事件。2.3 參與者內(nèi)部與外部劃分以及職責(zé)分離參與者是整個(gè)模型中容易被忽略但同樣重要的一環(huán)因?yàn)橘Y源的狀態(tài)變化從來(lái)不是自動(dòng)發(fā)生的背后必須有人的決策或行動(dòng)。rea把參與者分成兩類(lèi)內(nèi)部參與者和外部參與者。內(nèi)部參與者是企業(yè)內(nèi)部的角色例如銷(xiāo)售員、倉(cāng)管員、財(cái)務(wù)人員外部參與者是企業(yè)邊界之外的角色例如客戶(hù)、供應(yīng)商、物流承運(yùn)商。這種區(qū)分在建模時(shí)非常有用因?yàn)樗鼘?duì)應(yīng)了企業(yè)風(fēng)險(xiǎn)管理中的職責(zé)分離原則。一個(gè)合格的事件模型應(yīng)當(dāng)能回答這個(gè)事件由哪個(gè)內(nèi)部參與者觸發(fā)、對(duì)哪個(gè)外部參與者生效這天然支持了審批流、控制流的設(shè)計(jì)。比如銷(xiāo)售員錄入訂單、倉(cāng)庫(kù)員審核出庫(kù)、財(cái)務(wù)人員確認(rèn)收款三個(gè)步驟在三類(lèi)參與者之間形成了內(nèi)部控制鏈路。我曾經(jīng)在一個(gè)項(xiàng)目里見(jiàn)過(guò)反面教材業(yè)務(wù)單據(jù)上只有一個(gè)操作人字段客戶(hù)和員工統(tǒng)統(tǒng)往里面塞。這樣做導(dǎo)致審計(jì)時(shí)完全無(wú)法回答是誰(shuí)代表公司、是誰(shuí)代表客戶(hù)每一個(gè)關(guān)鍵操作的責(zé)任邊界都是模糊的。rea的參與者劃分能強(qiáng)制你把這個(gè)邊界建立起來(lái)這對(duì)系統(tǒng)合規(guī)性是非常大的加分。2.4 三類(lèi)關(guān)系把三要素編織成業(yè)務(wù)網(wǎng)絡(luò)光有三類(lèi)要素還不夠rea模型靠三類(lèi)語(yǔ)義關(guān)系把它們串起來(lái)存量-流量關(guān)系Resource-Event描述資源與事件之間的增減關(guān)系。一個(gè)事件可以使資源流入也可以使資源流出甚至可以同時(shí)流入流出例如調(diào)撥事件。觸發(fā)關(guān)系Event-Event描述事件之間的因果順序。如銷(xiāo)售訂單確認(rèn)觸發(fā)出庫(kù)發(fā)貨出庫(kù)發(fā)貨觸發(fā)收款登記。控制關(guān)系Event-Agent描述參與者與事件之間的責(zé)任關(guān)系。內(nèi)部參與者對(duì)事件負(fù)執(zhí)行責(zé)任外部參與者則作為相對(duì)方。這三類(lèi)關(guān)系就是rea的語(yǔ)法。構(gòu)建模型時(shí)我基本就是圍繞這三類(lèi)關(guān)系反復(fù)自問(wèn)這個(gè)事件改變了什么資源它由誰(shuí)觸發(fā)、影響了誰(shuí)它的前序事件和后續(xù)事件分別是什么一旦能順暢回答這三個(gè)問(wèn)題模型的雛形就出來(lái)了。3. 實(shí)操演練從銷(xiāo)售訂單到回款的一條完整事件鏈3.1 劃清業(yè)務(wù)邊界列出事件候選為了讓討論不懸空我設(shè)定一個(gè)具體的演練對(duì)象某零售企業(yè)的訂單到收款流程。范圍從客戶(hù)提交訂單開(kāi)始到企業(yè)收到貨款、完成資金核銷(xiāo)為止。在動(dòng)手之前我習(xí)慣先列一條候選活動(dòng)清單。這里不用管粒度對(duì)不對(duì)凡是流程中肉眼可見(jiàn)的動(dòng)作都先寫(xiě)下來(lái)客戶(hù)下單、銷(xiāo)售確認(rèn)訂單、倉(cāng)庫(kù)揀貨并出庫(kù)、物流配送、客戶(hù)簽收、客戶(hù)付款、財(cái)務(wù)核銷(xiāo)。這七個(gè)動(dòng)作是我準(zhǔn)備放進(jìn)模型的事件候選。劃定邊界這件事看似簡(jiǎn)單其實(shí)直接影響建模質(zhì)量。我曾經(jīng)見(jiàn)過(guò)有人把客戶(hù)發(fā)起退貨申請(qǐng)也包括進(jìn)訂單到收款的邊界里導(dǎo)致事件鏈變得很復(fù)雜。邊界清晰之后建模的最大價(jià)值反而體現(xiàn)在后續(xù)可擴(kuò)展性上——如果以后要加退貨流程只需要在events表里增加對(duì)應(yīng)的事件類(lèi)型而不用推翻已有的表結(jié)構(gòu)。3.2 用資源狀態(tài)變化過(guò)濾事件候選接下來(lái)用上一章那個(gè)直接改變資源狀態(tài)的標(biāo)準(zhǔn)逐個(gè)過(guò)濾候選動(dòng)作。候選活動(dòng)是否直接改變受控資源狀態(tài)是否進(jìn)入模型說(shuō)明客戶(hù)提交訂單否否待確認(rèn)狀態(tài)資源未變只是草案銷(xiāo)售確認(rèn)訂單是是庫(kù)存從可售變?yōu)轭A(yù)占倉(cāng)庫(kù)揀貨并出庫(kù)是是庫(kù)存實(shí)物數(shù)量減少物流配送否否配送過(guò)程中貨物仍歸企業(yè)狀態(tài)未變客戶(hù)簽收是是物權(quán)轉(zhuǎn)移企業(yè)失去商品控制客戶(hù)付款是是銀行存款增加應(yīng)收債權(quán)減少財(cái)務(wù)核銷(xiāo)否否匹配動(dòng)作資源本身無(wú)變化經(jīng)過(guò)篩選真正進(jìn)入rea模型的事件是四個(gè)訂單確認(rèn)、出庫(kù)發(fā)貨、客戶(hù)簽收、收款到賬。這個(gè)篩選過(guò)程經(jīng)常會(huì)顛覆直覺(jué)。我在實(shí)際項(xiàng)目里發(fā)現(xiàn)大多數(shù)團(tuán)隊(duì)建模不一致根源就在于把一些動(dòng)作和事件混為一談。比如把物流配送單獨(dú)建模成事件會(huì)讓后續(xù)的聚合邊界變得很別扭。3.3 補(bǔ)齊參與者和資源事件-資源-參與者對(duì)照事件確定后資源與參與者就很好找了。我把四個(gè)事件的信息補(bǔ)成一個(gè)對(duì)照表這是建模過(guò)程中最常用來(lái)評(píng)審的產(chǎn)物。事件涉及資源外部參與者內(nèi)部參與者訂單確認(rèn)庫(kù)存商品在庫(kù)可售變預(yù)占客戶(hù)銷(xiāo)售員出庫(kù)發(fā)貨庫(kù)存商品在庫(kù)減少承運(yùn)人倉(cāng)庫(kù)員客戶(hù)簽收在途商品所有權(quán)轉(zhuǎn)移客戶(hù)倉(cāng)庫(kù)員收款到賬銀行存款增加、應(yīng)收債權(quán)減少客戶(hù)財(cái)務(wù)人員這張表一出來(lái)整個(gè)流程的語(yǔ)義就清晰了。每個(gè)事件都在資源層面有明確影響、在參與人層面有明確責(zé)任體。后續(xù)無(wú)論是開(kāi)發(fā)接口、設(shè)計(jì)權(quán)限還是做審計(jì)追溯都能直接從這張表出發(fā)。這里有一個(gè)細(xì)節(jié)需要注意應(yīng)收債權(quán)在這個(gè)表里出現(xiàn)在收款到賬事件中但它并不是一個(gè)獨(dú)立的資源實(shí)體而是訂單確認(rèn)和收款到賬兩個(gè)事件共同形成的派生狀態(tài)。上表為了表達(dá)方便寫(xiě)了減少實(shí)際建模時(shí)不要把它作為資源落表。3.4 落成四張核心表SQL建表與索引思路在很多文本中rea被描述為純概念模型但落到工程上完全可行。我在模擬項(xiàng)目X里就是用四張核心表實(shí)現(xiàn)了這套模型agents表參與者檔案區(qū)分內(nèi)部/外部。resources表資源檔案例如庫(kù)存商品、銀行存款。events表核心事件表記錄事件類(lèi)型、發(fā)生時(shí)間、參與的內(nèi)部與外部參與者。event_resource_links表事件與資源的關(guān)聯(lián)表記錄方向流入/流出和數(shù)量金額。一個(gè)典型的表結(jié)構(gòu)定義大概是這樣以通用SQL風(fēng)格展示CREATE TABLE agents ( agent_id INT PRIMARY KEY, agent_type VARCHAR(20), -- internal / external agent_name VARCHAR(100) ); CREATE TABLE resources ( resource_id INT PRIMARY KEY, resource_name VARCHAR(100), unit VARCHAR(20) ); CREATE TABLE events ( event_id INT PRIMARY KEY, event_type VARCHAR(40), -- e.g. order_confirmed, shipment_made occurred_at DATETIME, internal_agent_id INT, external_agent_id INT, CONSTRAINT fk_events_internal FOREIGN KEY (internal_agent_id) REFERENCES agents(agent_id), CONSTRAINT fk_events_external FOREIGN KEY (external_agent_id) REFERENCES agents(agent_id) ); CREATE TABLE event_resource_links ( link_id INT PRIMARY KEY, event_id INT, resource_id INT, direction VARCHAR(10), -- inflow / outflow quantity DECIMAL(18,4), amount DECIMAL(18,2), CONSTRAINT fk_links_event FOREIGN KEY (event_id) REFERENCES events(event_id), CONSTRAINT fk_links_resource FOREIGN KEY (resource_id) REFERENCES resources(resource_id) );注意這張表里我沒(méi)有為銷(xiāo)售訂單發(fā)貨單回款單這三類(lèi)單據(jù)各建一套獨(dú)立結(jié)構(gòu)而是讓它們統(tǒng)一并入events表再通過(guò)event_type區(qū)分。這樣設(shè)計(jì)有一個(gè)直接好處任何業(yè)務(wù)查詢(xún)都只需要過(guò)濾事件類(lèi)型而不需要跨多張業(yè)務(wù)單據(jù)表做join。索引方面我通常會(huì)為event_type和occurred_at建聯(lián)合索引因?yàn)閹缀跛袌?bào)表和追溯查詢(xún)都會(huì)以這兩個(gè)字段為過(guò)濾條件。event_resource_links表則一定要對(duì)event_id建索引這直接決定了派生余額的查詢(xún)性能。3.5 財(cái)務(wù)報(bào)表由事件流派生應(yīng)收賬款的計(jì)算示例最令我驚喜的部分是財(cái)務(wù)報(bào)表不再需要過(guò)賬環(huán)節(jié)。以應(yīng)收賬款為例它的定義可以直接寫(xiě)成事件投影應(yīng)收余額 訂單確認(rèn)事件中流出的商品金額之和 - 已核銷(xiāo)的收款事件金額之和把這個(gè)邏輯落到數(shù)據(jù)庫(kù)里就是兩條SQLSELECT COALESCE(SUM(amount), 0) AS receivable_generated FROM event_resource_links l JOIN events e ON l.event_id e.event_id WHERE e.event_type order_confirmed AND l.direction outflow;SELECT COALESCE(SUM(amount), 0) AS receivable_settled FROM event_resource_links l JOIN events e ON l.event_id e.event_id WHERE e.event_type payment_received AND l.direction inflow;余額等于兩者的差完全不需要一張單獨(dú)維護(hù)的余額表。這聽(tīng)起來(lái)簡(jiǎn)單但背后帶來(lái)的架構(gòu)變化是巨大的賬務(wù)數(shù)據(jù)從被動(dòng)的結(jié)果存儲(chǔ)變成了由事件實(shí)時(shí)推導(dǎo)的活動(dòng)圖任何一筆余額波動(dòng)都能追蹤到源頭事件。4. 從模型到架構(gòu)rea如何與DDD、事件溯源結(jié)合4.1 事件即領(lǐng)域事件rea天然貼近事件溯源我在設(shè)計(jì)模擬項(xiàng)目X的時(shí)候只需要問(wèn)自己一個(gè)問(wèn)題系統(tǒng)的歷史數(shù)據(jù)是否足夠支撐任意時(shí)點(diǎn)的回放如果需要那么事件溯源幾乎是必然的選擇。而rea的事件恰恰就是事件溯源里需要的領(lǐng)域事件。兩者結(jié)合得如此自然是因?yàn)樗鼈兌荚诨卮鹜活?lèi)問(wèn)題歷史到底發(fā)生了什么而不是現(xiàn)在賬上還剩多少。事件溯源把系統(tǒng)當(dāng)前狀態(tài)看作對(duì)歷史事件流的累積投影rea則告訴我們事件流如何與資源和參與者關(guān)聯(lián)如何從事件流中恢復(fù)出業(yè)務(wù)語(yǔ)義。用rea建模再配事件溯源等于直接把業(yè)務(wù)事實(shí)作為系統(tǒng)的唯一真相來(lái)源。會(huì)計(jì)數(shù)字、庫(kù)存數(shù)量、客戶(hù)余額全都只是投影視圖可以隨時(shí)按需重建這就是數(shù)據(jù)與賬本不再分家的實(shí)現(xiàn)方式。4.2 聚合邊界跟隨事件鏈劃分而不是按單據(jù)劃分引入rea之前我在劃分DDD聚合邊界時(shí)經(jīng)常猶豫訂單聚合要不要包含發(fā)運(yùn)信息發(fā)運(yùn)聚合要不要包含應(yīng)收記錄如果各選各的又回到數(shù)據(jù)不一致的怪圈。rea給了個(gè)比較清晰的判斷依據(jù)一組事件如果它們之間存在觸發(fā)關(guān)系而且一個(gè)內(nèi)部參與者對(duì)另一個(gè)事件負(fù)責(zé)那么這些事件往往應(yīng)該落在同一個(gè)聚合邊界內(nèi)或者至少通過(guò)事件同步保持一致。以銷(xiāo)售到回款為例訂單確認(rèn)、出庫(kù)發(fā)貨、客戶(hù)簽收、收款到賬這條事件鏈共享同一個(gè)客戶(hù)、同一張訂單上下文放在一個(gè)聚合里會(huì)讓數(shù)據(jù)一致性最直觀(guān)代價(jià)是聚合略微變大拆成多個(gè)聚合也可以但需要接受最終一致性帶來(lái)的復(fù)雜度。聚合方案一致性復(fù)雜度適用場(chǎng)景全部事件放一個(gè)聚合強(qiáng)一致低-中訂單量不大單體系統(tǒng)訂單發(fā)貨放一個(gè)聚合收款獨(dú)立訂單側(cè)強(qiáng)一致收款最終一致中以銷(xiāo)售為中心的企業(yè)推薦起點(diǎn)每個(gè)事件一個(gè)聚合最終一致高高并發(fā)、復(fù)雜分銷(xiāo)網(wǎng)絡(luò)我在實(shí)際項(xiàng)目中傾向于選擇中間方案把訂單確認(rèn)與出庫(kù)發(fā)貨放在一個(gè)聚合把收款到賬作為另一個(gè)聚合兩者通過(guò)領(lǐng)域事件通知進(jìn)行協(xié)調(diào)。這樣既保持高頻路徑的強(qiáng)一致性又不至于讓聚合無(wú)限膨脹。4.3 庫(kù)存與余額從存儲(chǔ)字段變成派生投影在這個(gè)模型下庫(kù)存數(shù)量、應(yīng)收余額這些傳統(tǒng)意義上的主數(shù)據(jù)全部變成了派生視圖。你不再需要在庫(kù)存表里維護(hù)一個(gè)實(shí)時(shí)扣減的數(shù)字而是通過(guò)庫(kù)存事件流計(jì)算得出當(dāng)前庫(kù)存。這種思路恰恰是CQRS架構(gòu)所提倡的寫(xiě)模型中只追加不可變事件讀模型中維護(hù)面向查詢(xún)的投影。庫(kù)存的投影可以是一個(gè)物化表每次出庫(kù)或入庫(kù)事件發(fā)生后就增量更新也可以是一張按需重算的動(dòng)態(tài)視圖。使用派生視圖最大的好處是杜絕了分布式事務(wù)。兩個(gè)系統(tǒng)不需要在同一個(gè)事務(wù)里同步扣減庫(kù)存和記錄銷(xiāo)售只需要保證事件流的順序一致。這個(gè)轉(zhuǎn)變讓系統(tǒng)的擴(kuò)展方式從改數(shù)據(jù)庫(kù)變成了追加新的事件類(lèi)型變化很輕影響很可控。4.4 審計(jì)與內(nèi)控控制關(guān)系直接復(fù)用傳統(tǒng)財(cái)務(wù)系統(tǒng)在審計(jì)時(shí)最痛苦的就是追溯一張憑證對(duì)著一堆流水流水又對(duì)應(yīng)一堆業(yè)務(wù)單據(jù)中間任何一步丟了映射審計(jì)就卡殼。rea模型天然把業(yè)務(wù)單據(jù)、業(yè)務(wù)事件、資源和參與者全部串聯(lián)在一起因此審計(jì)追溯的路徑大幅縮短。審計(jì)人員可以直接從一條收款記錄反向跟蹤到對(duì)應(yīng)的銷(xiāo)售事件、出庫(kù)事件、甚至當(dāng)初的訂單確認(rèn)操作以及操作人。這種透明性不是靠事后補(bǔ)錄而是建模時(shí)就把控制和授權(quán)關(guān)系放進(jìn)了事件結(jié)構(gòu)里。控制關(guān)系在rea中還有一個(gè)額外的作用它天然支持權(quán)限設(shè)計(jì)。內(nèi)部參與者和外部參與者被放在不同的字段里系統(tǒng)中查某個(gè)客戶(hù)名下的所有訂單或者查某個(gè)銷(xiāo)售員名下已經(jīng)確認(rèn)但未回款的訂單都只是一次簡(jiǎn)單的事件過(guò)濾不需要額外維護(hù)復(fù)雜的權(quán)限視圖。5. 落地過(guò)程中踩過(guò)的四個(gè)坑5.1 坑一把資源建模成科目翻版我第一次嘗試用rea時(shí)想著資源不就是錢(qián)和貨嗎于是順手把應(yīng)收賬款建成了資源。這個(gè)選擇看起來(lái)方便實(shí)際上打亂了整個(gè)模型的語(yǔ)義。因?yàn)閼?yīng)收賬款不是一個(gè)基礎(chǔ)業(yè)務(wù)實(shí)體而是銷(xiāo)售事件與收款事件共同投影出的派生狀態(tài)。把它作為資源就等于在事件之外又維護(hù)了一套賬戶(hù)體系模型又會(huì)退回到復(fù)式記賬的老路上。正確做法是把應(yīng)收留給派生層資源層只保留客戶(hù)實(shí)際獲得的商品、服務(wù)以及貨幣資金這類(lèi)基礎(chǔ)實(shí)體。這個(gè)教訓(xùn)我后來(lái)又驗(yàn)證到庫(kù)存上庫(kù)存量同樣不是資源庫(kù)存對(duì)應(yīng)的基礎(chǔ)資源是具體的商品實(shí)體而庫(kù)存量是累計(jì)流入流出事件的投影。5.2 坑二事件粒度是最大的敗筆來(lái)源事件粒度是最難拿捏的部分。太小的事件會(huì)把系統(tǒng)變成流水賬例如前面說(shuō)的點(diǎn)擊了詳情頁(yè)一旦混入模型后續(xù)聚合邊界和報(bào)表語(yǔ)義都會(huì)被干擾。太大的事件則會(huì)掩蓋細(xì)節(jié)例如把客戶(hù)簽收和客戶(hù)付款合并成一個(gè)銷(xiāo)售完成事件你會(huì)丟失收款時(shí)間與簽收時(shí)間之間的差異這對(duì)現(xiàn)金流分析至關(guān)重要。我的經(jīng)驗(yàn)是每當(dāng)猶豫要不要把某個(gè)活動(dòng)設(shè)成事件就檢查它是否引起可識(shí)別資源的狀態(tài)變化以及它的發(fā)生時(shí)間對(duì)業(yè)務(wù)決策是否有價(jià)值。這兩個(gè)條件同時(shí)滿(mǎn)足才值得成為模型中的事件。我在項(xiàng)目里曾經(jīng)把倉(cāng)庫(kù)內(nèi)部移庫(kù)也建模成獨(dú)立事件后來(lái)發(fā)現(xiàn)這個(gè)動(dòng)作對(duì)財(cái)務(wù)和外部客戶(hù)沒(méi)有任何意義白白增加了事件量??车糁蟛樵?xún)效率明顯提升聚合邊界也清晰很多。5.3 坑三把業(yè)務(wù)規(guī)則塞進(jìn)事件模型rea擅長(zhǎng)表達(dá)發(fā)生了什么但并不擅長(zhǎng)表達(dá)應(yīng)該發(fā)生什么。折扣規(guī)則、信用額度校驗(yàn)、審批流閾值……這些業(yè)務(wù)規(guī)則可以在應(yīng)用層實(shí)現(xiàn)不需要塞進(jìn)rea模型。我在模擬項(xiàng)目X的早期就犯了把太多校驗(yàn)邏輯塞進(jìn)事件定義里的錯(cuò)誤結(jié)果每個(gè)事件類(lèi)型都要寫(xiě)一堆if-else模型反而被規(guī)則淹沒(méi)。后來(lái)把規(guī)則全部移到應(yīng)用服務(wù)層rea專(zhuān)心作為事實(shí)記錄層代碼結(jié)構(gòu)清爽了很多??梢赃@樣理解rea是數(shù)據(jù)庫(kù)的事實(shí)表業(yè)務(wù)規(guī)則是服務(wù)層的過(guò)濾器。把它們分層之后每個(gè)部分都能獨(dú)立演進(jìn)而不是耦合在一起。5.4 坑四歷史數(shù)據(jù)遷移與期初余額事件引入rea時(shí)最難的是處理歷史數(shù)據(jù)。舊系統(tǒng)里長(zhǎng)期積累的科目余額、未核銷(xiāo)憑證怎么遷入新模型我的做法是引入一個(gè)期初余額事件概念把歷史存量轉(zhuǎn)化為幾個(gè)特定事件。例如遷移日之前的所有應(yīng)收賬款匯總成為一條期初應(yīng)收確認(rèn)事件遷移日之前的所有庫(kù)存數(shù)量匯總成為一條期初庫(kù)存盤(pán)點(diǎn)事件。歷史數(shù)據(jù)轉(zhuǎn)化為的期初事件涉及資源舊系統(tǒng)庫(kù)存數(shù)量期初庫(kù)存盤(pán)點(diǎn)事件庫(kù)存商品舊系統(tǒng)應(yīng)收余額期初應(yīng)收確認(rèn)事件商品/服務(wù)待核銷(xiāo)舊系統(tǒng)應(yīng)付余額期初應(yīng)付確認(rèn)事件采購(gòu)服務(wù)/商品待結(jié)算舊系統(tǒng)銀行余額期初資金到位事件銀行存款這樣設(shè)計(jì)雖然看起來(lái)新增了一個(gè)特殊事件但換來(lái)的是所有后續(xù)邏輯的統(tǒng)一。舊賬不再需要特殊的歷史余額表而是和其他事件一樣參與投影運(yùn)算這大大簡(jiǎn)化了遷移代碼。這里有一個(gè)額外提醒期初事件一定要核對(duì)原系統(tǒng)的明細(xì)。曾經(jīng)有一次遷移我們把應(yīng)收余額只按總額導(dǎo)入結(jié)果后續(xù)老客戶(hù)發(fā)起退貨時(shí)找不到對(duì)應(yīng)的銷(xiāo)售事件可沖銷(xiāo)處理起來(lái)特別麻煩。后來(lái)我調(diào)整策略凡是能追溯到原單據(jù)的應(yīng)收盡量逐筆導(dǎo)入為獨(dú)立事件只有確實(shí)無(wú)法追溯的散單才以總額方式入賬。結(jié)尾在這個(gè)方向投入了很多時(shí)間之后我最后想分享幾個(gè)實(shí)踐層面的體會(huì)。rea并不是要取代會(huì)計(jì)學(xué)而是一種重新組織業(yè)務(wù)事實(shí)的方式。它最打動(dòng)我的地方是逼迫我從記賬結(jié)果退回到業(yè)務(wù)事實(shí)把每個(gè)動(dòng)作看成一條不可變的事件。這個(gè)思考習(xí)慣對(duì)我設(shè)計(jì)DDD聚合、選擇事件溯源架構(gòu)、甚至是評(píng)審別人的數(shù)據(jù)模型都有很直接的幫助。最后給你一個(gè)小技巧。下次評(píng)審任何業(yè)務(wù)模型時(shí)先問(wèn)三個(gè)問(wèn)題這里最核心的資源是什么哪些動(dòng)作直接改變了資源狀態(tài)是誰(shuí)執(zhí)行和推動(dòng)的如果團(tuán)隊(duì)討論始終繞不開(kāi)這三個(gè)問(wèn)題說(shuō)明業(yè)務(wù)建模往正確的方向走了一大步。哪怕不引入全套rea這套提問(wèn)方式也能讓你快速發(fā)現(xiàn)模型里的裂縫。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
熟女乱伦二区| 欧美激情一| 91在线国产后入风骚翘臀美女素人| 青娱乐福利99| 91大学精品激情戏| 试看60秒 爽| 国产高清无码一区二区三区四区皇冠| 色情亚洲日本成人| 欧美黄页在线| 97碰碰色| 亚洲人成网www| 成人久久久精品| 91一区二区三区蜜桃| 五月丁香激情综合网| 亚洲十八禁止| 另类小色呦| 9ⅰ久久久天天| 在线免费观看日韩一区| 97视频在线观看免费高清| 亚洲欧综合另类无码一区| 一直超碰| 天天干天天狼在线视频| 插插综合网天天影视网| 96久久科窝| 欧美激情综合网| 99无码视频| 精品对白久久不卡| 东北女人被操| 操操逼操操逼操操逼逼| 美国三级日本三级久久99| 少妇3P性爱自拍| av72网| 欧美一级久久久久久久大片动画| 色哟哟1区2区| 91爆操视频| 99精品丰满人妻无码| 2019天天干天天操| 色臀av| 97国产色综合| 超碰精品国产无码| 噜噜噜亚洲精品| 久久香蕉综合一本到3atv| 9999久久久久| 五月天精品| 天天综合91| 少妇三P| 国产激情av女片自拍| 蜜桃午夜视频一区二区| 91国产大片| 亚洲97久久精品亚洲| 青草一区二区| 日日干夜夜欢| 宅男91视频在线播放| 人人摸.人人色| 91国产丝袜美女| 色婷网| 蜜臀99久久精品久久久懂爱| 亚洲999综合| 亚洲 欧美日韩 另类| 91男女| 中文一区二区婷婷视频| 色乱二区| 日韩福利综合一区| 亚州Av天美传媒| 1024久久高清视频| 欧美日韩系列| AV色五月| 日韩三级网址| 日本九九久久99播| 最新日产中文在线麻豆| 久久在线观看免费视频| 亚洲丝袜二区在线| 蜜桃色院一区久久| 国产一区二区三区中文字幕| 亚洲欧美精品福利在线| 成人av福利在线观看| 日韩国产九九精品一区二区三区毛片| 蜜桃中文字日产乱幕4区| 日韩人成网站在线播放| 国产精品美女久久久久久网站| 大屁股熟女一区二区三区| 色97| 色色婷婷丁香| 日本精品第一视频在'| 九九热AV| 久久人妻熟女一区二区| 天堂性色| 欧美色爱综合| 欧美午夜熟妇黑人精品91| 久久神马影院| 狠狠操一区二区| 9 9精品一区二区三区| 操逼免费视频无码国产| av一区二区三区不卡| 91精品国产91熟女| 欧美色图亚洲色,麻豆| 试看福利| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 亚州春色| 国产成人AV麻豆| 天天欧美色| 啪啪啪大香蕉| 先锋精品av色鲁| www.av在线观看| 久久国产乱子伦精品免费女人| 探花精品 一区二区| 蜜桃狠狠色伊人亚洲综合网站| 色97欧美| 欧美日韩欧美| 精品免费囯产一区二区三区| 亚洲 欧美 日韩另类 麻豆| 久久女女| 女性91网站| 欧美亚洲天天| 欧美激情 亚洲色图| 加勒比伊人综合| 东京成人一区| av天天在线| 天天看人人操屄犊摸阴| 好好的日:com久久九九| 日韩人人精品| 清纯唯美亚洲另类| 九九九九九九九九九国产精品| 蜜臀AV午夜精品久| 欧美97爱| 精品国产Av无码久久久亚洲| 一区二区三区免费视频入口| 日韩欧美成人午夜福利| 3d成人精品一区二区| 国产无马视频| 真实高潮91| 日韩伦理久 久久 清纯| 青春草A| 成人精品欧洲亚洲| 97综合久第一页| 欧美图片色五月天| 国产 日韩 欧美一区| 日本性爱视频一级| 性爱免费视频成人| 国产91久久九九免费精品无码| 婷婷丁香熟妇综合网| 婷婷五月天社区| 中文字幕二区日韩天堂| 久久人妻少妇| AVE乱伦| 999精品国产高清一区二区| 午夜a成v人电影| 精品亚洲国产成人精品| www.99在线| 大鸡吧尹人在线| 97超级欧美| 丰满熟女人妻一区二区三五十一路| 久9综合在线| 日韩精品人妻| 国产极品一区二区三区三州| 亚91亚洲网| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 日韩一级欧美一级国产一级台湾 | 性欧美999| 亚洲男人综合| 色情综合| 女生自91网站| 黄色大片视频在线免费看| 欧美精品一区二区少妇免费A片 | 99操逼| 91人妻丝袜无码| 舔舔啊| 三上悠亚在线毛片91| 综合影视国产无码| 色色99| 国产97av| 福利伊人玖玖国产| 精品国产网站| 97色欧洲| 97国产高清视频在线观看| 偷窥自拍亚洲色图| 久夜操| 久久激情亚洲精品无码?V| 免费看美国人人爽,人人操| 欧美日韩系列| 久久一级无码精品毛片6| 国产熟女少妇一区| 校园春色AV天堂| 日本一区二区成人在线| 91美女色视频亚洲| 精品国产三级av韩国在线| 午夜男人一级A片7777| 日韩精品人妻中文字幕久久久| 老熟女91视频| 中文字幕黑人大片| 九九九免费视频| 日本九九九九| 欧美激情亚洲| 亚洲国产日韩欧美熟妇在线| 超碰97综合网| 欧美午夜视频精品久久| 91亚洲丝袜熟女| 日本一级二级三级网站| 99re在线视频| 国产综合操逼高清| 色97欧美| 五月婷婷色色| 国产毛片片精品天天看视频| 啊啊啊啊啊在线观看网址 | 男人天堂久久精品不卡| 天天做日日爱夜夜爽| 国产欧美黑人丰满在线| 影音先锋新男人| 先锋音影AV| 亚洲AV秘无码一区..| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 高清无码网址| 91亚州| 素人播放一区| 蜜乳成人AV| 国产传媒美日韩av| 精品亚洲国产成人精品| 区自美91| 色蜜AV| 91福利网在线观看| 九九成人精品| 国模精品一区二区三区苹果色戒| 大色综合| a人片中文字幕一区二区| 亚洲天堂7777| 久热这里| 欧美色66| 国产精品无码在线| 麻豆视频一区二区| 老熟女区| 国产成人精品日本视频| 四虎免费在线观看| 熟妇国产免费一区| 狠狠色综合网| 26uuu欧美日韩| 亚洲AV色图一区| 99热超碰| 26uuu国产亚洲综合| 97精品网站| 久久久久久亚洲精品不卡人乳| 五月婷婷基地| 日韩午夜啪啪视频| 久久黄黄黄| 女优视频第10页| 成人五月天丁香激情综合| 久久国产精品91| 超硑97精品| 日本性爱少妇| A 天堂| 91麻豆一二三区| 农村妇女一级二级三级视频| 国产成人亚洲精品无码最新在线| 久久青娱乐| 亚熟在线| 很很干很很操| 国产熟女乱论| 2025年A片视频精品| av东京热男人的天堂| 人妻熟女字幕一区二区| 探花熟女,姿勢到位,體驗感也到位| 亚洲欧美清纯| 97久久国产精品| 超碰 另类 欧美 | 日韩啪啪视频| 亚洲骚男同com| 麻豆影音天美视频| 超碰激情808| 欧美婷婷五月天| 成全在线观看免费观看| 大香蕉欧美| 啊嗯嗯啊好大好爽| 青青草大香蕉在线视频| 91AV老熟女视频| 国产强奸超碰AV| 久久成年片色大黄全免费网站| 久超碰这里只有精品| 亚洲国成人情色好看电影| 五月丁香影视| 床上啊啊啊一区二区三区| 亚洲欧洲综合av在线| 天天插网| 亚洲牲交| 免费观看网黄| 免费国产电影一区二区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 国产精选三级在线观看| 免费亚洲黄色视频在线观看| 欧美五十路熟| 青青免费在线视频一区| 妇女性内射冈站HDWWWCOM| 欧美高清色| 欧美宗合网| 国产一线二线三线av| 大屁股熟女一区二区三区| 中文字幕78| 精品乱码久久久久| 十八禁电影伊人网| 欧美日韩狠狠爱| 高清无码91| 超碰精品97| 国产蜜臀精品一区二区尤物| 啊啊啊免费视频| 777超碰| 欧美精品97| 亚洲风情在线观看| 91天天| 熟女乱3伦999| 97在线精品观看视频| 男人天堂黄片| 免费在线观看国内色片网站网址| 久久久五月天| 亚洲另类综合欧美| 日本丝袜美腿人妻九九| 亚洲一本色码中文字幕| 欧美91色| 久夜视频| 色欲av一区二区三区蜜芽| 日韩精品在线视频在线观看| 精品黑人一区二区| 九九热在线精品视频| 国语对白在线播放视频| 久久精品色欧美aⅴ一区二区| 亚洲日本韩国在线| 久久精彩视频| 久久久久中出| 色五月第四色| 亚洲欧美综合图片| 欧美91在线| 思思久热在线精品66| 伊人网免费视频| 亚洲婷婷综合网| 丁香九月 婷婷| 欧美黄色大片在线观看| 最新啪啪视频| 婷婷丁香六月天| 天天日天天射天天干| 亚热日本熟女| 欧美激情内射| 84YTCOM性无码| 欧美成人性爱视频免费观看| 成人草草视频| 17c嫩草51久久91嫩草| 翔田千里无码一区| 秋霞视频一区二区| 欧美少妇内射| 少妇人妻在线| 欧美高清无码免费视频高清版| 精品国产91内射久久| 欧美操逼熟女| 精品人妻二区三区| 一二区在线观看视频| 欧美亚洲情色| 一本一道vs波多野结衣| 97超碰美国| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 欧美国产成人在线| 亚洲资源吧| 国产JDAV无码视频在线观看| 欧美中出1| 日韩中字av一区| 久久久极品| 国产三级资源在线观看| 久久XX| 欧美狠狠鲁| 青青草中文字幕| 国产成年精品高清在线观看91| 99视频在线| 伊人久久亚洲中文字幕不卡| 久操国产在线| 天天爽人人综合免费7799| 超碰97欧美在线| 色偷偷人人玩人人舔人人操人人摸人人爽 | 日韩欧美性吧婷婷乱伦大香蕉| 青娱乐亚洲自拍| 亚洲AV免费在线观看| 91色综合色| 亚洲人妻中文在线视频| 久99| 97鸡把在线视频| 欧美偷拍区| 校园春色综合| 中文字幕视频二区| 丁香五月婷婷基地| 欧美日日人人天天| 国产精品免费美女视频| 97亚洲资源| a片自拍直播视频| 天天爽天天| 97在线欧| 两性色网| 久草久热| 性色AV蜜色av色欲av| 丝袜美腿诱惑亚洲欧美视频在线观看| 欧美极品色| 亚洲成人性爱网站在线播放| 日本最新免费韩国1区2区视频播放| 午夜精品久久一区二区| 国产伊人自拍| 亚洲伊人久久综合97| 好淫网一二三视区| 试看60秒 爽| 婷婷色综合| 一本色道人妻久久| 精品四五区| 狠狠爱大香蕉| 91狠婷| 丝袜美腿亚洲| 精品一区二区麻豆| 亚洲免费在线探花| 人妻 欧美亚洲| 黑人无码一区二区| 久草看看看| 色婷婷电影网| 91麻豆天美| 精品国产一区二区久久| 国产一进一出视频网站| 伊人网在线视频| 欧美色图偷拍另类| 国产午夜精品理论片一二三区区| 超碰97久久观看| 最好看的中文字幕在线2018| 国产精品一级二级在线| 人妻精品视频一区二区| 好涩综合| 欧美中字二区| 亚洲操逼视频网站| 欧美97超碰| 人妻夜夜爽天天爽麻豆三区网站| 操逼日批| 亚洲色图 91| 95精品在线| 一级片视频啪啪| 校园春色中文字幕AV| 日韩精品黄片免费观看| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| julia高潮后不停追击中出| 国产婷婷综合在线观看| 天天综合网~91综合网| 精品超碰中文在线| gogogo免费高清看中国国语| 亚欧洲日韩国产精品| 久久9亚洲| 日韩综合无码色欲vv| 91熟女.com| 91九久| 欧美丰满少妇xx高潮| 9997se| 久久久9视频| 少妇高潮对白在线观看| 91性色| 亚洲国产丝袜在线观看| 丰满人妻一区二区三区| 白天啪啪晚上啪啪视频| 一区二区三区不卡视频| 欧美 亚洲 综合 制服 另类| 黄色性爱网网| 性爱视频无打码在线观看| 蜜桃臀av一区二区| 久久视网78| 天堂中文日本在线观看| 人人操人人插 - 百度 - 百度| 精品无码产区一区二| www.97在线| 香蕉久久国产AV一区二区| 国产一级特黄大片处女| 亚洲中字幕日本一区二区三区| 97免费视频在线观看视频| 日韩一999精品| 探花激情视频| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 亚洲熟女av日韩熟女| 绯色一区二区三区不卡少妇| 欧美伦乱爱| 亚洲精品色| 色香蕉影院| 亚洲成人无码影院| 久久无码成人| 性爱视频无打码在线观看| 丝袜亚洲综合| 国产熟女无套内射| 天天爽天天操啊啊啊| 中文字幕日韩电影人妻| 熟女人妻精品一区二区视频| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | av网站免费看| 老熟女91视频| 伊人宅男大香蕉| 亚洲大色鬼| 国产精品午夜福利视频| 久久爽爽精品| 亚洲天堂人人妻| 看黑丝美女操逼青青网站| 亚洲欧美另类少妇精品| 毛片视频白嫩| 九九十八精品| 久/久精品99看9| 婷婷激情四射| 狠狠干,狠狠操| 亚洲国产欧美中文永久| 五月天婷婷小说| 九九99精品视频在线观看| 亚洲AV免费在线| 狠狠色色| 3571色综合一区二区二区| 激情无码日韩| 国产女性无套 免费观看| 多乙久久久久久| 国产又大又硬又长又粗| 婷婷爱五月| 日日操天天操| 岛国小电影| 91色黑人少妇| 天天干夜夜肏| 亚洲欧美内射| 天天日夜干| 一起草三级AV电影在线观看| 国产一级内射无挡观看| 久草网站免费在线观看| 日韩丝袜二区| 亚洲国产综合久久久性感熟妇| 日本青青草在线| 亚洲综合影片| 亚洲一二三四区在线免费看视频 | 国产乱人伦AVA麻豆软件.| 日本中文字幕在线电影| 一区二区三区网站日日骚| 有码色中文字幕在线观看| 一区二区不卡免费| 不卡二三区人妻少妇| 97亚洲精品| 欧亚成人| 97天天爽| 国产日韩欧美| 欧美96在线|欧| 国产精品视频自拍在线| 日人妻视频91| 欧美视频在线第3页| 国产一区96在线| 日韩精品大香蕉伊人在线| 97中文综合| 97亚洲精品| 国产精品久久久三级无码| 久久久久精| 校园春色综合香蕉| 加勒比海色香蕉婷婷| 亚洲色图殴美色图激情乱伦| 天美国产三级传媒| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 国内精品嫩模A∨私拍小视频| 日韩色| 乱精品一区字幕二区| 国产精品3| 天天草天天日| 狠狠操狠狠插| 超碰午夜在线| 日夜伊人网| 成人三一级一片aaa| 密桃99999| 一区二区播放| 国产在线强奸视频| 花野真衣| 嗯嗯啊好大| 亚欧无码线免费观看视频| 色爱国产| 1024手机看片欧美日韩| 黄色操人| 狠狠躁AV| 国产9l 大屁股| 无码视频黄色网战| 淫骚熟女一区二区三区| 亚洲一级黄色毛片| 婷婷色婷婷| 亚洲区小说| 国产福利小视频高清在线观看| 久草久热| 日韩成人高清一区二区| 青青操青娱乐| 精品久久97| 一起草av| 成人青青草原伊人| 色综合网1| 裸体美女久久久| 三级日本一区二区三区| 久久啊哟| 欧美色网| 东京热一区二区三区四区五区六区| 成人青青草原伊人| 久操热| 台湾佬大香蕉| 激情av| 色欧美色交综合| 9久久精品| 懂色av中文字幕| 思思热影视| av久日| 岛园激情| 成人熟女视频一区二区三区| 福利天堂| 黄色AAAAA欧美| 亚洲av热热色| 一级@啪啪视频| 97一本大道亚洲一区| 国产精品久久久久无码A√| 久久久久久九九九九-美女久久久久久久-成人AV | 午夜AV人气不卡| 天堂国产AV| 97人人夜夜精品视频| 日本A级视频| 91三级理论片播放器| 99日免费视频中文字幕| 簧片免费看视频| 精品人妻一区二区三区日产| 色一射色一射| 熟妇的味道HD中文字幕| 高精欧美色| 色性综合| 国产精品ⅴ无码大片在线看.| 爱妻综合网| 超碰99热| 97久久超碰| 亚洲天堂另类美腿| 久久久久久国产精品免费网站| 青青草在线视频美女| 激情五月综合| www.99中文字幕| 日本道人妻久久久在线不卡色视频| 99热网站| 欧美成人AⅤ大片在线观看| 一本大道青青| 欧美人妻二区三区| 搡老熟女老女人老熟妇免费视频| 91性情| 欧美色图中文字幕| 久热伊人| 亚洲A曰本VA欧美VA视频| 人人妻天天做天天爽| 欧州色图区| 黄片色区软件| 91美女小视频| 97人人色| 欧美色图私拍91| 色婷婷网| 人妻aa| 东北少妇高潮zzzz| 尤物视频新赏网鲜网色诱网| 久久爽爽精品| 99色婷婷| 色久桃花影院在线观看| 丁香九月婷婷| 锕锕好爽 死我在线观看| 男人的天堂Va| 国产偷人妻精品一区二区在线| 天天射影院| www.99中文字幕| 久草在线| 久久久久久久9| 欧美中字不卡| 99热在线不卡| 96AV久久久| 久久人妻精品| 欧美午夜视频精品久久| 一起草欧美| 国产精品com| 欧美情色亚洲| 日本一二三免费久久| 亚洲色入欧美| 亚洲男人天堂网久久| 国产超碰国产97| 激情视频网址| 五月婷婷激情综合| 人人干人人搞人人摸| 国产探花日韩援交| .精品人妻一区二区三| 最近二区三区视频大全| 啊啊啊轻点在线观看| 91美女国产在线| 亚洲色悠悠久久88| 青春草A| 精品国产72| 亚洲国产一区二区三区在线| 男人的天堂啪啪| 精品少妇一区二区三区免费观看| 黄色高清无码无码破解免费暗网 | 亚州色阁| 欧美久久久| 麻豆国产第一| 日韩欧亚中文在线| 亚州色国| 久久夜夜夜| 九九九九一级| 男女香蕉一区二区| 日韩精品大香蕉伊人在线| 黑人精品久久97| 久久久久久久久久黄色网| 日韩99神马视频播放| 亚洲欧美日产国产91毛片| 91偷拍欧美亚洲| 97干色天堂| 中文字幕精品久久久久人妻红杏ⅰ| 亚洲综合性感在线| 天天操夜夜操| 99自拍B亚洲| 欧美白嫩女HD| 亚洲综合草草| 超碰97久| 亚洲欧洲自拍| 91一区二区三区蜜桃| 69XX一中文字幕人妻91| 亚洲图片激情综合另类| 18禁超污无遮挡无码免费网| 亚洲第一精品在线视频 | 欧美久久伊人| 综合久久六月久久婷婷| 久久免费精品视频免一| 色五月综合网| 色综合中文字幕不卡| 操b网站亚洲无码| 一二三四视频在线社区中文字幕| 欧美一二级| 丝袜美腿操av| 午夜精品久久99蜜桃的功能章节| 20cm女自慰在线日韩欧美| 曰本人妻人人澡人人夹| 人妻熟女av国产网站| 超碰免费在线| 91天天综合网,天天综合网| 98福利在线视频| 易易A毛视频| 91性高朝久久久久久久久| 永久免费发布性爱网| 国产动漫操逼视频| 手机不卡视频不卡在线一二三区| 欧美日本视频一区| 久操97| 国产大片精久久久久久| 97在线免费观看| 国内毛片国产专区二| 97色插| 九X超碰| 久久av一级av少妇av高潮| 乱伦熟女专区| 青娱乐休闲视频在线观看| 欧美懂色综合网| 欧美日韩在线小说 | 亚洲 小说 欧美 激情 另类| 大香蕉免| 韩国黄片aaaa| 天美传媒在线一区| 日韩精品 视频一区二区| 久久久111| 91小视频| 囯产精品久久久久久久久久梁医生 | 成人小说视频在线精品欧美| 福利大香蕉| 有码人妻系列| 狠狠狠狠狠狠| 少妇色综合| 强奸乱伦Av网| 亚洲精品人伦一区二区| 欧美aa一级片| 欧亚日本情色| 九九九午夜| 爽极品影院| 青青草在线视频播放器| 狠狠中文字幕| 伊人久久综合影院精品久久久| 75大香蕉| 操婷婷逼| 最新无码国产| 天美久久久久| 日韩二级| 中文字幕黄色片| 国产亚洲深夜激情| 日韩干B| 中文字幕制服欧美久久一区| 园内精品自拍视频在线播放| 怡春院久久| 大香蕉欧美伊| 六月激情网| 国产女人操逼视频| 麻豆视频国产一区二区| 精品9999| 嗯嗯啊好大| 国产精品自在线发布| 亚洲第一页第二页激情| 综合亚洲欧美| 精品视频久久区| 天堂精品小草| 69精品在线| 综合色图区| 国产精品色色| 久久肏大逼| 日本色色色色色视频| 亚洲无无码αⅴ每日更新| 中文字幕视频二区| 久久久久久免费电影| 91美女国产在线| 天天色怡春院| 欲香欲色天天天综合和网| 色综合天天| 亚洲欧洲精品视频发布| 第四色奇米影视777| 翔田千里无码中出中文字幕| 成年无码动漫av片无尽在线| 成人线上超碰| 国产粉嫩蜜臀av一区二区三区| 91n欧美| 国产精品不卡高清在线观看| 啊啊啊好想要| 精品亚洲成人免费在线| 樱花蜜乳av| 草草网站影院白丝内射| 风流老熟女一区二区三区l| 黄网色一区二区三区四区精品| 亚洲欧综合另类无码一区| 国产成人bd在线观看| 国产成人天堂| 青青草华人在线欧美在线| 成人片在线播放| 欧美日韩狠狠爱| 精品网站9999| 亚洲 自拍偷拍 欧美| 99热线麻豆 | 九热久| 伊人久久在线视频观看| 天天日天天色| 精品大全99999| 波多野结衣之双飞调教在线播放| 性久久| 长长久久88视频| 久久九精品| 欧美不卡五十路| 日韩欧美午夜视频在线| 亚洲天堂99| 欧美黄色大香蕉一区二区| 天天日天天舔天天喷天天射| 高清肉丝中文无码| 亚洲欧美在线观看无码| 国产女s强制榨精视频| 99国产女人| 中文字幕一区二区视频在线观看| 欧美黄色手机在线观看| 国产精品又黄又猛又粗| 欧美一区二区三区不卡高清视频| 国语精品对白| 五月丁香激情四射| 精品性爱| 国产精品探花视频| 久久久久久9999| 五月婷亚洲精品天堂| 丁香六月东京热| 欧美亚洲日韩16色| 高清在线不卡一区二区 视频| 性爱乱伦视频免费| 波多野结衣被操50分钟免费视频| 97在线精品观看视频| AV不卡在线| 狼狼色丁香久久婷婷综合五月| 91P0RNY大屁股人妻| 欧美日韩国产黄色片| 欧美三级一级| 99色婷婷中文字幕乱色| 国产精品另类一区大香蕉| 色97干| A片A5445444| 人人做,人人操,人人摸| 国产精品自产拍在线观看社区| 亚洲乱色熟女一区| 91在线无码精品秘 软件| 欧美78P| 久久亚洲AV无码白度| 98人妻精品一区二区色欲| 免费操逼91| 久久透逼视频| 九九热视频在线观看| 亚洲国产一区二区三区在线 | 亚洲一区日韩精品| 男人的天堂2018.| 麻豆视频国产一区二区| 男人天堂日日夜夜| 在线岛| 亚洲干B| 伊人久久88国产女| 中文字幕人成乱码熟女香港| 人人九九精| 99热超碰| 黄色av片三级三级三级免费看| 97色综合中文网| 欧美另类自拍 | 九九热精品视频六| 第二页中文字幕| 手机在线观看不卡无码av| 亚洲日韩国产精品| 亚洲人精品久久久| 美女主播色欲91抠b在线播放| 日韩一级片| 国产极品精品美女视频| 九九九九免费| 激情四射婷婷六月天| 青青青青草av在线观看| 99碰碰| 色婷婷五月综合激情中文字幕| 精品久久无码午夜福利| 欧美日韩在线小说 | 日韩人妻资源在线看| 影音先锋视频在线| 一级做a爰片性色毛片久久| 精品国产乱码久久久久久蜜臀| se吧提供国产乱老熟视频胖女人| 亚洲色图欧美色图另类图片| 天天干夜夜操一区二区| 亚洲天天精品| 夜夜夜夜爽| 久操视频免费观看| 久操av在线| 日韩97精| 搞中出视频在线观看| 97蜜桃综合| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 欧美成人A天堂片在线观看| 亚洲欧美色图片| 狠狠爱综合网| 国产中出内射一区二区| 91性高朝久久久久久久久| 亚洲伊人成综合成人网| 精品国产一区探花在线观看| 丰满人妻一区二区三区色-百度| 国产人伦a片信息免费片| 日本亚洲vr欧美不卡高清专区| 岛国天天午夜影院传媒网| 岛国艾薇凹凸视频天堂| 插老姨肥穴| 狠狠色噜噜狠狠狠狠2018| 国产丰满熟夫69mpp| 人人操欧美风骚| 四虎影库国产精品免费| 1769成人国产精品视频| 99ri精品| 色眯眯av| 国产AV激情无码久久无码| 九九热在线视频| 九一性生活免费视频| av网站在线看| 欧美日韩色图片| 欧美性性性| 国产操操日韩三级黄| 日本伦理一区二区| 欧洲视频在线| 黄色片A级一区二区三区| 久操网视频| 一区二区三区四区色图| 男人天堂久久精品不卡| 九九热精品| 尤物视频网 刘玥| 乱色老一区二区三区的观看方式| 大香蕉欧美伊| 操曰本熟女| 成人五月天丁香激情综合| 欧美刺激色黄片免费看| 欧美97视频| 国产一区二区三区高清视频| 97色婷婷| 精品一区二区2| 久久三| 加勒比东京热五月天天堂网| 97无码视频在线播放| 伊人影院中文字幕| 天天亚洲| 激情综合五月| 91天天爱| 美女诱惑一区| 97玖玖人妻| 日韩免费一级性爱视频| 中文字幕一区二区三区蜜臀| 久午视频| 2001天天操| 国产精品国产亚洲区艳妇糸列| 91色鬼| 日韩成人精品| 91激情综合| 韩国黄色片精品久久久| 新91视频.cmp| www.91色综合| 丁香五六月啪啪| 热热热热日日漂亮永久永久国产日| 怡春院久久| 18岁禁 茉莉成人久久| 岛国大片国产| AV天黑人| 黄页大片在线观看| 色欲av一区二区三区蜜芽| 亚洲青青草| 中文字幕在线24| 在线a v| 91美女精品| 中文字幕精品人妻丝袜| 在线无码操| 天天日夜干| 人妻黑丝袜电影| 大香蕉av在线| ji熟女.com| 五十路一区无码| 精品一二三区四视频| 亚洲中文字幕三级在线| AA级电影三区| 69久久| 伊人久久亚洲中文字幕不卡| 一起草av| 欧美在线干| 精品视频免费在线一区| 欧洲在线性爱视频| 后入合集| 欧美最大综合网| 欧美色天堂网在线视频| 综合国产97| 一级黄色影片| 色综合久| 八戒午夜福利理论片| 精品性爱| 午夜舔阴达高潮视频免费看| 国产AV中文| 中文字幕免费在线观看| 久久视频少妇美女| 激情欧美日韩女同久久| 欧美色997| 爱啪精品一区| 日韩钢筋无码高清啾啾啾| 美女黑人91神马| 色偷偷色偷偷欧美日韩| 日韩精品人妻中文字幕有码午| 少妇无码太爽| 欧美亚男人的天堂| 人妻久热在线| 96爱综合| 男人的天堂在线| 啊啊啊啊在线播放| 骚鸭AV| 91欧美在线| 强奸乱伦免费网站| 日韩在线一区高清在线| 福利伊人玖玖国产| 97色在线| 欧美激情欧美精品| 麻豆天美AV传媒第一页| 亚洲色宗合| 久久在线观看免费视频| 亚洲中文字幕97久久精品少妇| 99re在线视频国产| 可以免费观看的日韩av毛片| 污电影在线观看| 青青久久手机线视频| 一区 欧美 日韩 麻豆| 人人操人人插 - 百度 - 百度| 三级三级三级日本99| 丝袜狠狠草尤物人妻av91| 激情小说在线视频| 欧美色图天堂在线| 亚洲男人天堂2013| 91亚洲综合| 欧美刺激色黄片免费看| 九九探花视频在线观看| 嗯嗯啊啊操死我| SUV一区二区在线看| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 日日夜夜精品视频| 欧美精品1区2区3区| 求求你操操我| 插入逼91| 农村妇女一级二级三级视频| 丰满精品人妻少妇久久字幕| 精品国产乱子伦一区二区三区,精品一| 欧美激情综合| 岛国免费黄色网址| 激激五月| 欧美日韩97| 日韩精品高清资源在线| 欧美精品宗合| 国产美女91视频| 亚洲精品少妇| 伦激情人妻另类人妻| 婬女免费一二三区A片| 欧美狠狠弄| 啊啊啊免费视频| 人人喜人人妻| 99久久无码| 日本伦理一区二区| 亚欧无码线免费观看视频| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 亚洲黄片免费在线播放| 99999久久久久9国产精品| 一区二区三区高清| 超碰人人妻| 欧美不卡在线一区二区| 国产性爱欧美性爱在线| 国产熟女完整版中字| 久久r精品| 韩日无码在线观看| 亚洲男人的天堂网| 亚洲激情综合另类男同| 亚洲色图第四色| 日本三级R| 999精品女人| 亚洲。日韩。欧美| 99久久99久久免费精品蜜臀| 一区麻豆 高清中文字幕| 亚洲一卡2卡3卡4卡乱码网站| 久久精品高清无码一区| 亚洲成人福利电影免费| 一区二区三区麻豆| 私色综合网| 91肉片| 大香蕉青青9| 五月天激情小说| 中文字幕熟女人妻丝袜| 欧美少妇内射| 丁香啪啪| 思思久热在线精品66| 亚码激情| 欧美丝袜制服久久| 国产精品白丝在线播放| 综合性视频99| 精品99999久久久久久| 日韩激情中文字幕有码| 欲香欲色综合天天伊人| 免费久久9999| 男人天堂久久精品| 人人操,操人人| 天天综合青苹果| 伊人网在线点播| 人妻黑丝袜电影| 亚洲欧美九九九| 深夜国产一区二区三区在线看| 91美女在线观看| 久久大香蕉97| 成人在线午夜视频一区| 男人的天堂激情| 内射中出日韩在线观看视频| 青青草五月份天| 人妻在线大香蕉| 色色色色色色色色色色色色色色综合 | 少妇高潮对白在线观看| 极品销魂美女一区二区| 超碰吊日色| 超碰97综合网| 久草精品国产蜜臀| 超AV色女| 久久欧美按摩999| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 区日韩亚洲乱码av电影| 精品一区二区啪啪啪| 亚洲成人在线播放| 深爱五月婷婷| 五月丁香啪| 依人大香蕉| 99999精品视频| 婷婷情色综合网| 玖玖综合色| 亚洲人在线成线成人| 国产偷人妻精品一区二区在线| 亚洲色图加勒比|