• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于領(lǐng)域消息驅(qū)動的輕量級Spring—DDD插件設(shè)計與實(shí)現(xiàn)

    2015-04-12 00:00:00王薇黃強(qiáng)
    現(xiàn)代電子技術(shù) 2015年24期

    摘 要: 領(lǐng)域驅(qū)動開發(fā)(DDD)是完全基于內(nèi)存的業(yè)務(wù)對象建模(In?Memory)方法,而目前的DDD框架不能完全覆蓋系統(tǒng)業(yè)務(wù),也不成熟穩(wěn)定,無法應(yīng)用于實(shí)際項(xiàng)目的開發(fā)。在Spring框架的基礎(chǔ)上,實(shí)現(xiàn)了一個基于領(lǐng)域消息驅(qū)動和內(nèi)存建模的DDD插件,在不影響目前系統(tǒng)架構(gòu)的基礎(chǔ)上,讓項(xiàng)目實(shí)施完全兼容DDD設(shè)計。同時基于JDK和Disruptor并發(fā)框架實(shí)現(xiàn)的領(lǐng)域事件消息和領(lǐng)域?qū)ο缶彺婺P?,有效地降低了系統(tǒng)的解耦關(guān)系,并提高了系統(tǒng)的整體性能及效率。

    關(guān)鍵詞: 領(lǐng)域消息驅(qū)動; 內(nèi)存建模; 領(lǐng)域事件; 領(lǐng)域緩存

    中圖分類號: TN911?34; TP319 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2015)24?0062?04

    Design and implementation of light?weighted Spring?DDD plug?in driven by

    domain message

    WANG Wei1, HUANG Qiang2, 3

    (1. Department of Electronic Business, Sichuan Finance and Economics Vocational College, Chengdu 610101, China;

    2. College of transportation, Southwest Jiaotong University, Chengdu 610031, China;

    3. College of Information and Engineering, Sichuan Agricultural University, Ya’an 625014, China)

    Abstract: DDD (domain driven development) is entirely memory?based business object modeling (In?Memory) method, but the current DDD framework is not stable enough to cover the system business completely and can not be applied to the development of practical project. On the basis of Spring framework, the DDD plug?in based on domain message driving and memory modeling was realized, in which the implementation of the project is fully compatible with DDD design without affecting the current system architecture. The domain event message and domain object caching model based on JDK and Disruptor concurrency control framework can effectively reduce the decoupling relationship and improve the whole performance and efficiency of the system.

    Keywords: domain message?driven; memory modeling; domain event; domain cache

    0 引 言

    領(lǐng)域建模(Domain Modeling,DM)的初期是基于對象關(guān)系映射的ORM(Object Relationship Mapping)技術(shù)。ORM通過數(shù)據(jù)庫與對象的數(shù)據(jù)映射,初步解決了關(guān)系與對象的不匹配問題[1],使系統(tǒng)設(shè)計分析人員能夠采用純粹的對象技術(shù)來解決領(lǐng)域問題。但是隨著業(yè)務(wù)分析的深入,ORM產(chǎn)生的貧血對象模型由于行為能力的缺失,讓系統(tǒng)又從對象模型退化為事務(wù)處理過程,與DM理論逐漸背離;隨后為了避免貧血模型的弊端而出現(xiàn)的充血模型,將業(yè)務(wù)與數(shù)據(jù)全部合并到領(lǐng)域模型中。在后來的幾年中,有很多框架都在充血模型的理論基礎(chǔ)上進(jìn)行了大量實(shí)踐(如ROR,Grails,Spring Roo等),這些快速開發(fā)框架出現(xiàn)的初期在小型項(xiàng)目上應(yīng)用非常成功。但是隨著業(yè)務(wù)增長,領(lǐng)域?qū)ο髸彼倥蛎?,維護(hù)難度會急劇增加,讓系統(tǒng)處于一個不可控的狀態(tài),并且業(yè)務(wù)和數(shù)據(jù)的領(lǐng)域整合會讓系統(tǒng)的結(jié)構(gòu)變得模糊不清,給系統(tǒng)帶來另外的壓力,所以這類框架始終沒有能成功地應(yīng)用到大型項(xiàng)目開發(fā)中去。在2004年,著名的軟件工程專家Evans提出了一個全新的領(lǐng)域開發(fā)模型Evans DDD[2]。Evans DDD不但彌補(bǔ)了ORM的對象行為缺失和生命周期問題,也通過領(lǐng)域聚合和分解有效地解決了充血模型隨著領(lǐng)域擴(kuò)大而迅速臃腫的缺陷,為大型系統(tǒng)設(shè)計和開發(fā)提供了一個合理的解決途徑。但是由于Evans DDD的設(shè)計理念比較靈活,依附于業(yè)務(wù)設(shè)計,且始終沒有一個統(tǒng)一的底層技術(shù)構(gòu)架來支持該模型,導(dǎo)致系統(tǒng)開發(fā)人員很難將系統(tǒng)分析轉(zhuǎn)換為編碼,故大大降低了系統(tǒng)的實(shí)施效率。同時現(xiàn)有的框架體系基本是以數(shù)據(jù)庫為核心的分層結(jié)構(gòu),也為DDD的實(shí)踐造成了很大的障礙。一些全新的框架由于不能很好地兼容以前的遺留系統(tǒng),也很難得到推廣。為此,本文以Java為例,在充分利用目前廣泛使用的Spring開發(fā)框架基礎(chǔ)上,提出了一種基于AOP和JDK Concurrent/Disruptor并發(fā)框架實(shí)現(xiàn)的領(lǐng)域事件消息和領(lǐng)域?qū)ο缶彺婺P?,并完成了能夠較好兼容Evans DDD的整套領(lǐng)域驅(qū)動開發(fā)插件Takia。在多個項(xiàng)目中的實(shí)施證明,該插件在保證系統(tǒng)開發(fā)效率的前提下,能夠有效匹配基于DDD的設(shè)計方案,消息模型使領(lǐng)域?qū)ο笾g以及領(lǐng)域?qū)ο笈c服務(wù)倉儲等組件之間的交互變得更加靈活。配合領(lǐng)域緩存,可以完全消除領(lǐng)域?qū)ο髮?shù)據(jù)庫的依賴,能夠很好地為系統(tǒng)構(gòu)架師所利用,以權(quán)衡系統(tǒng)整體的得失做出全局性的決策,讓系統(tǒng)的綜合性能達(dá)到最高,為基于DDD的項(xiàng)目分析和實(shí)施提供有效的架構(gòu)指導(dǎo)。

    1 基于消息的輕量級Spring?DDD領(lǐng)域插件模型

    Takia構(gòu)架設(shè)計

    本文提出的異步領(lǐng)域消息模型能夠更好地適應(yīng)領(lǐng)域?qū)ο蟮淖饔藐P(guān)系和領(lǐng)域擴(kuò)張問題,更好地支持領(lǐng)域建模。Takia以領(lǐng)域的四要素為基礎(chǔ)[3],采用分布式緩存系統(tǒng)實(shí)現(xiàn)了領(lǐng)域的In?Memory模型,并提出基于異步消息的數(shù)據(jù)通信方式,優(yōu)化了領(lǐng)域?qū)ο蟮纳a(chǎn)和存儲性能,很大程度提高領(lǐng)域?qū)ο笾g的解耦程度,以及領(lǐng)域?qū)ο蟮母卟l(fā)數(shù)據(jù)處理能力,其整體構(gòu)架如圖1所示[ 4?6]。

    從圖1中可以看出,該構(gòu)架底層基于Spring業(yè)務(wù)框架,Hibernate ORM框架和數(shù)據(jù)庫管理系統(tǒng),對于常規(guī)模型的開發(fā)人員來說相對比較熟悉,能夠較容易地完成開發(fā)過渡,而Takia插件構(gòu)架于Spring業(yè)務(wù)框架之上用以提供領(lǐng)域建模支持。在系統(tǒng)設(shè)計時,業(yè)務(wù)模塊在被劃分成多個領(lǐng)域進(jìn)行分散式并行開發(fā),一個領(lǐng)域一般由領(lǐng)域?qū)ο螅―omain Object)、值對象(Value Object)、服務(wù)(Usecase Service)和倉儲(Repository)等組件構(gòu)成[7];領(lǐng)域的外圍是Takia提供的透明緩存和消息服務(wù),這些服務(wù)通過基于Annotation的領(lǐng)域模型配置,使用AOP方式注入到相關(guān)的領(lǐng)域?qū)ο笾?,緩存用于提升領(lǐng)域?qū)ο蟮男阅?,消息用于降低系統(tǒng)及模塊之間的直接耦合。Takia在設(shè)計時支持多種緩存實(shí)現(xiàn),默認(rèn)為EhCache以支持集群和云結(jié)構(gòu)。

    圖1 Takia DDD的總體構(gòu)架模型

    2 Takia的消息模型設(shè)計

    并發(fā)的事件驅(qū)動模式是Takia的重要特點(diǎn)。通過DomainMessage作為橋梁來實(shí)現(xiàn)領(lǐng)域組件之間的信息交互,同時采用AOP編程模型,取代了傳統(tǒng)的面向?qū)ο笤O(shè)計(OOSD)中,組件的直接組合和繼承耦合,有效地消除了服務(wù)和倉儲組件對領(lǐng)域模型的結(jié)構(gòu)污染。Takia采用標(biāo)準(zhǔn)的生產(chǎn)者?消費(fèi)者(Producer?Consumer)設(shè)計模式構(gòu)架領(lǐng)域消息模型,并針對虛擬機(jī)內(nèi)部機(jī)制進(jìn)行有效的優(yōu)化,除了支持普通的JDK一對一同步/異步消息以外,還提供了高并發(fā)環(huán)境下的基于Disruptor框架的一對多異步消息支持,有效地解決了傳統(tǒng)JavaEE分層構(gòu)架的高并發(fā)環(huán)境下系統(tǒng)吞吐量迅速衰減的問題。下面依次對JDK和Disruptor兩種消息模型結(jié)構(gòu)進(jìn)行分析。

    2.1 JDK?Future消息模型設(shè)計

    Future消息模型基于JDK的Concurrent包實(shí)現(xiàn),核心組件是ChannelExecutor。該組件由一個線程池(ThreadPool)和一個同步組件組成,用于運(yùn)行消息監(jiān)聽器(MessageListener)。當(dāng)使用異步模式時,由ThreadPool來運(yùn)行MessageListener;使用同步模式時,由同步組件將MessageListener放入當(dāng)前線程中執(zhí)行。Future消息模型的詳細(xì)結(jié)構(gòu)和處理過程如圖2所示。

    由圖2可以看出,DomainMessage作為消息生產(chǎn)者DomainObject和消息消費(fèi)者M(jìn)essageListener之間的橋梁用以傳遞信息,由事件源(EventSource)和Future結(jié)果事件(FutureResultEvent)組成,結(jié)果事件中包含了結(jié)果對象,事件元數(shù)據(jù)配置和一個FutureTask對象,F(xiàn)utureTask作為簡單的內(nèi)存障(MemoryBarrier),與ChannelExecutor配合使用用以保證消息的一致性。由于受到Future機(jī)制的限制,在Future模式下只支持1∶1的生產(chǎn)者和消費(fèi)者通信模式。

    圖2 Future消息模型的詳細(xì)結(jié)構(gòu)和處理過程

    消息過程由DomainObject發(fā)起,通過調(diào)用DomainEvents(消息總線)創(chuàng)建一個DomainMessage對象后,DomainObject將事件源(EventSource)傳遞給DomainMessage(事件源即DomainObject傳遞給MessageListener的信息);接著DomainEvents會通知消息攔截器(MessageInterceptor)對DomainMessage的ResultEvent進(jìn)行初始化,完成消息創(chuàng)建過程;然后MessageInterceptor調(diào)用EventMessageFirer發(fā)送消息,EventMessageFirer將Future消息的發(fā)送委托給FutureFirer,其根據(jù)消息配置從IoC容器中獲取MessageListener組件后和DomainMessage一起放入ChannelExecutor執(zhí)行。

    對于同步消息,ChannelExecutor使用同步組件在當(dāng)前線程中運(yùn)行MessageListener,對于異步消息,ChannelExecutor會將MessageListener放入ThreadPool中執(zhí)行。MessageListener可以在業(yè)務(wù)完成以后對DomainMessage設(shè)置結(jié)果對象(EventResult),最后作為消息生產(chǎn)者的DomainObject可以通過DomainMessage的getEventResult方法獲取MessageListener處理結(jié)果,該方法可以被多次調(diào)用,并返回同一結(jié)果。在該模式下,DomainMessage的FutureTask會保證結(jié)果的可用性和一致性。

    2.2 Disruptor消息模型設(shè)計

    Disruptor消息模型基于并發(fā)編程框架Disruptor實(shí)現(xiàn)[5?6,8],采用全異步模式實(shí)現(xiàn),核心結(jié)構(gòu)由一個輸入?yún)^(qū)域(Input Disruptor)和一個輸出集合(Output Disruptors)組成。Disruptor模式支持1∶N消息模式。Input Disruptor的環(huán)形緩沖區(qū)(RingBuffr)可以同時運(yùn)行多個消息處理器(MessageListener),同時每一個DomainMessage都擁有自己的Output Disruptor,可以獨(dú)立的設(shè)置處理結(jié)果,互不干擾,Disruptor消息模型的詳細(xì)結(jié)構(gòu)和處理過程如圖3所示。圖3在Disruptor模式下DomainMessage由事件源(EventSource)和Disruptor結(jié)果事件(DisruptorResultEvent)組成,結(jié)果事件中包含事件元數(shù)據(jù)配置和一個事件處理器(ValueEventProcessor)對象,事件處理器用于讀/寫結(jié)果輸出區(qū)域的RingBuffer。Disruptor模式下支持1∶N的生產(chǎn)者和消費(fèi)者主體訂閱模式(Topic Subscription)。與Future模式的流程類似。

    圖3 Disruptor消息模型的詳細(xì)結(jié)構(gòu)和處理過程

    Takia管理RingBuffer的策略是為每一個Topic創(chuàng)建一個Input Disruptor實(shí)例,而為每一個DomainMessage對象創(chuàng)建一個獨(dú)立的Output Disruptor實(shí)例,所以一個Input Disruptor會對應(yīng)多個Output Disruptors,他們之間完全獨(dú)立互不影響。為了在性能和資源占用上取得平衡,Takia默認(rèn)使用Disruptor的Blocking等待策略。

    3 基于消息的領(lǐng)域模型實(shí)現(xiàn)

    與傳統(tǒng)的分層式構(gòu)架體系不同,Takia采用以領(lǐng)域?yàn)楹诵牡妮椛湫徒Y(jié)構(gòu)??蛻舳说恼埱蟮竭_(dá)服務(wù)器以后,MVC控制器作為DDD的Facade使用,用于從緩存中獲取領(lǐng)域?qū)嶓w對象或者構(gòu)建新的領(lǐng)域?qū)ο蟮?;業(yè)務(wù)邏輯不再通過直接的服務(wù)調(diào)用,而是通過領(lǐng)域?qū)ο笾g以消息的方式相互作用來完成。一個領(lǐng)域通過領(lǐng)域服務(wù)對象來組織整體業(yè)務(wù),領(lǐng)域也有能力實(shí)現(xiàn)自身的領(lǐng)域服務(wù),這些交互均通過領(lǐng)域事件來觸發(fā),信息通過領(lǐng)域消息來傳遞。Takia對領(lǐng)域緩存和領(lǐng)域消息均采用Spring AOP和Auto?Proxy的透明機(jī)制實(shí)現(xiàn),對業(yè)務(wù)組件零入侵,基本對現(xiàn)有開發(fā)方式不造成影響。Takia DDD的編程模型設(shè)計[5]如圖4所示。

    圖4 Takia DDD的編程模型設(shè)計

    由圖4可知,Takia DDD替換了Spring原有的業(yè)務(wù)層和持久層,采用以領(lǐng)域容器為核心的輻射結(jié)構(gòu)。在該模型中,SpringUI和MVC組件充當(dāng)Facade使用,當(dāng)截獲用戶請求以后,會對請求進(jìn)行解析和封裝,形成DDD的語義形式[7],傳遞給Takia DDD。Takia首先從領(lǐng)域模型容器(ModelContainer)中提取該請求所對應(yīng)聚合根(Aggregation Root)對象,通過對象圖遍歷(Object Graph Iteration)找到請求所需業(yè)務(wù)實(shí)體(Entity)對象,模型容器中的實(shí)體對象均為富對象模型(RichModel)。在業(yè)務(wù)處理過程中,實(shí)體可直接調(diào)用自己的相關(guān)方法完成業(yè)務(wù)處理,將結(jié)果返回表現(xiàn)層組件,然后返回給客戶端,整個處理過程結(jié)束。該過程存在的問題與解決方案:

    (1) 領(lǐng)域?qū)ο笈cORM對象的生命周期(LifeCycle?LC)不匹配問題。在ORM框架體系下,對象的生命周期與會話同步,一個會話只會在一次請求的過程中提供服務(wù)。會話關(guān)閉后,ORM對象將會被終結(jié),隨著事務(wù)提交,將對象數(shù)據(jù)從內(nèi)存更新到數(shù)據(jù)庫,這種模型也是造成系統(tǒng)對數(shù)據(jù)庫產(chǎn)生依賴的主要原因;與此相反,DDD的對象模型是內(nèi)存駐留(In Memory)模型,理論上只要該領(lǐng)域沒有被銷毀,都應(yīng)該在內(nèi)存中存在。當(dāng)然在實(shí)際項(xiàng)目開發(fā)過程中,由于內(nèi)存始終是有限的,所以在實(shí)際項(xiàng)目開發(fā)過程中一般采用內(nèi)存領(lǐng)域緩存配合模型加載器(ModelLoader)或者AOP緩存攔截器(CacheInterceptor)的方式來實(shí)現(xiàn)面向內(nèi)存的領(lǐng)域體系。

    (2) 領(lǐng)域?qū)嶓w對象與服務(wù),倉儲等組件的交互問題。在JavaEE的框架體系中,基本采用直接耦合方式,即直接通過IoC容器配合Interceptor實(shí)現(xiàn)對領(lǐng)域?qū)ο蟮囊蕾嚱M件進(jìn)行注入,讓領(lǐng)域支持業(yè)務(wù)功能。該方式比較直觀,理解也比較容易,但是缺點(diǎn)是會對領(lǐng)域模型造成污染。隨著業(yè)務(wù)增大,使得領(lǐng)域?qū)ο笞兊玫挠纺[、領(lǐng)域維護(hù)難度迅速增加;在目前的一些基于動態(tài)語言(Ror,Grails)的構(gòu)架中,通過語言的動態(tài)特性讓領(lǐng)域?qū)ο髣討B(tài)地支持業(yè)務(wù)功能,甚至Java現(xiàn)在也有框架利用Aspectj實(shí)現(xiàn)了類似的效果(如Spring Roo)。

    該方法雖然降低了領(lǐng)域?qū)ο蟮奈廴境潭龋瞧渚幊棠P团c直接組件注入完全相同,沒有從本質(zhì)上改變業(yè)務(wù)的處理方式,對業(yè)務(wù)系統(tǒng)的性能提升沒有任何作用。而本文采用的是事件驅(qū)動的思想來構(gòu)建Takia,組件之間的信息傳遞通過消息總線來完成。其中同步消息跟目前的編程模型一致,而異步消息通過多線程和并發(fā)隊(duì)列框架,消除了請求處理的阻塞,請求和處理分別在不同的模塊中進(jìn)行處理,只有在必要的時候進(jìn)行同步,大大提高了業(yè)務(wù)系統(tǒng)的處理性能。從圖4可以看出,在Takia中領(lǐng)域組件和業(yè)務(wù)組件之間通過本地DomainMessage消息傳遞信息,沒有任何其他耦合關(guān)系;同時Takia通過消息翻譯器(MessageTranslator)支持本地消息同分布式JMS消息系統(tǒng)的無縫切換。

    4 結(jié) 語

    針對目前JavaEE的分層構(gòu)架出現(xiàn)的領(lǐng)域失配、性能低下和DDD理論與實(shí)踐之間的不兼容等問題,本文在Evans DDD理論和Spring框架的基礎(chǔ)上,實(shí)現(xiàn)了一個基于領(lǐng)域消息驅(qū)動和內(nèi)存建模的DDD插件Takia。在不影響目前系統(tǒng)架構(gòu)的基礎(chǔ)上,使項(xiàng)目實(shí)施完全兼容DDD設(shè)計,同時基于消息的通信機(jī)制也能更有效地解耦系統(tǒng)模塊,并大大提高了系統(tǒng)并發(fā)性能,為JavaEE的企業(yè)信息系統(tǒng)建模提供了一種全新的思維方式。在項(xiàng)目實(shí)踐中證明,Takia比傳統(tǒng)的分層模型更加合理高效。

    參考文獻(xiàn)

    [1] 杜佳.對象/關(guān)系映射技術(shù)在信息系統(tǒng)開發(fā)中的應(yīng)用研究[D].西安:西安電子科技大學(xué),2011.

    [2] Eric Evans.領(lǐng)域驅(qū)動設(shè)計[M].北京:清華大學(xué)出版社,2006.

    [3] 秦秀磊,張文博,魏峻,等.云計算環(huán)境下分布式緩存技術(shù)的現(xiàn)狀與挑戰(zhàn)[J].軟件學(xué)報,2013(1):50?66.

    [4] 陳濤,黃強(qiáng),倪少權(quán).鐵水聯(lián)運(yùn)信息整合的框架研究方案[M].北京:鐵道部,2011.

    [5] 黃強(qiáng),錢文輝.Takia?DDD構(gòu)架及詳細(xì)設(shè)計說明書[M].上海:上海瑞瀚科技有限公司,2012.

    [6] 黃強(qiáng),王薇,倪少權(quán).基于SOA和DDD的鐵水聯(lián)運(yùn)信息平臺構(gòu)架設(shè)計[J].計算機(jī)應(yīng)用與軟件,2013(6):124?126.

    [7] Bluishglc.領(lǐng)域驅(qū)動設(shè)計(Domain Driven Design)參考架構(gòu)詳解[EB/OL].[2011?08?12].http://blog.csdn.net/bluishglc/article/de

    tails/6681253.

    [8] 丁濤.基于領(lǐng)域驅(qū)動設(shè)計的物流平臺系統(tǒng)實(shí)現(xiàn)[D].成都:電子科技大學(xué),2010.

    欧美日韩亚洲国产一区二区在线观看| 精品久久久久久,| 国产精品亚洲美女久久久| 一卡2卡三卡四卡精品乱码亚洲| 99在线视频只有这里精品首页| 俄罗斯特黄特色一大片| 99热只有精品国产| 欧美av亚洲av综合av国产av| 老司机靠b影院| 精品国产超薄肉色丝袜足j| 真人做人爱边吃奶动态| 亚洲一区高清亚洲精品| 日韩大码丰满熟妇| 黄色片一级片一级黄色片| 99在线视频只有这里精品首页| 少妇裸体淫交视频免费看高清 | 国产片内射在线| 在线观看日韩欧美| 后天国语完整版免费观看| 啦啦啦 在线观看视频| 美女免费视频网站| 美女国产高潮福利片在线看| 日日爽夜夜爽网站| √禁漫天堂资源中文www| 狂野欧美激情性xxxx| 真人一进一出gif抽搐免费| 国产精品av久久久久免费| 深夜精品福利| 国产私拍福利视频在线观看| 国产精品香港三级国产av潘金莲| 嫩草影视91久久| 侵犯人妻中文字幕一二三四区| 久久久久久久久中文| 欧美中文综合在线视频| 国产精品亚洲av一区麻豆| 国产日本99.免费观看| 99riav亚洲国产免费| 午夜福利免费观看在线| 国产精品久久久人人做人人爽| 欧美又色又爽又黄视频| 亚洲专区国产一区二区| 啦啦啦韩国在线观看视频| 欧美大码av| 精品久久蜜臀av无| 在线看三级毛片| 俺也久久电影网| 91麻豆精品激情在线观看国产| 日韩欧美 国产精品| 久久香蕉精品热| 一二三四在线观看免费中文在| 超碰成人久久| 女人爽到高潮嗷嗷叫在线视频| 久久久久免费精品人妻一区二区 | 精品久久久久久成人av| 99精品久久久久人妻精品| 免费女性裸体啪啪无遮挡网站| 在线天堂中文资源库| 免费在线观看完整版高清| 国产av一区二区精品久久| 97人妻精品一区二区三区麻豆 | 亚洲全国av大片| 老司机靠b影院| 国产精品综合久久久久久久免费| 999精品在线视频| 欧美亚洲日本最大视频资源| 久久精品国产综合久久久| 精品高清国产在线一区| 麻豆一二三区av精品| 美女扒开内裤让男人捅视频| 亚洲人成伊人成综合网2020| 可以在线观看的亚洲视频| www.www免费av| 欧美黑人精品巨大| av中文乱码字幕在线| 欧美+亚洲+日韩+国产| 亚洲午夜精品一区,二区,三区| 国产激情欧美一区二区| 级片在线观看| 国产aⅴ精品一区二区三区波| 丰满人妻熟妇乱又伦精品不卡| 久久草成人影院| 别揉我奶头~嗯~啊~动态视频| 91国产中文字幕| 男女视频在线观看网站免费 | 午夜视频精品福利| 50天的宝宝边吃奶边哭怎么回事| 亚洲五月婷婷丁香| 黄片小视频在线播放| 中文字幕最新亚洲高清| av超薄肉色丝袜交足视频| 日韩免费av在线播放| 99久久精品国产亚洲精品| 成人免费观看视频高清| 好男人电影高清在线观看| 国内精品久久久久精免费| 国产av又大| 国产精品香港三级国产av潘金莲| 精品国产国语对白av| 高清毛片免费观看视频网站| 精华霜和精华液先用哪个| 少妇熟女aⅴ在线视频| 制服诱惑二区| 19禁男女啪啪无遮挡网站| 亚洲久久久国产精品| 亚洲熟妇中文字幕五十中出| 久久久水蜜桃国产精品网| 国产欧美日韩一区二区三| 欧美av亚洲av综合av国产av| 亚洲国产精品999在线| 亚洲国产看品久久| 欧美一区二区精品小视频在线| 色哟哟哟哟哟哟| 午夜福利高清视频| 国产精品影院久久| 国产三级在线视频| 18禁黄网站禁片免费观看直播| 老汉色∧v一级毛片| 91字幕亚洲| 一进一出抽搐gif免费好疼| 精品一区二区三区视频在线观看免费| 精品少妇一区二区三区视频日本电影| 欧美绝顶高潮抽搐喷水| 日韩精品中文字幕看吧| av免费在线观看网站| 亚洲精品国产区一区二| 久久国产精品影院| 国产精品乱码一区二三区的特点| 99国产精品99久久久久| 男女那种视频在线观看| 91老司机精品| 国产精品野战在线观看| 91在线观看av| 热re99久久国产66热| 老司机深夜福利视频在线观看| 一级毛片精品| 免费一级毛片在线播放高清视频| 成人18禁高潮啪啪吃奶动态图| 亚洲欧美精品综合久久99| 午夜老司机福利片| xxxwww97欧美| 成年女人毛片免费观看观看9| 欧洲精品卡2卡3卡4卡5卡区| 国产精品一区二区免费欧美| 制服人妻中文乱码| 日韩欧美在线二视频| 日韩大尺度精品在线看网址| 正在播放国产对白刺激| 国产精品 欧美亚洲| svipshipincom国产片| 日韩欧美国产在线观看| 中文字幕av电影在线播放| netflix在线观看网站| 欧美精品亚洲一区二区| 婷婷亚洲欧美| 久久国产精品影院| 精品国产超薄肉色丝袜足j| 亚洲国产精品合色在线| 在线观看66精品国产| 国内少妇人妻偷人精品xxx网站 | 日韩三级视频一区二区三区| 亚洲人成77777在线视频| 国产蜜桃级精品一区二区三区| 欧美+亚洲+日韩+国产| 一进一出好大好爽视频| 久久精品国产清高在天天线| 亚洲久久久国产精品| 国产精品日韩av在线免费观看| 色综合站精品国产| 欧美黑人巨大hd| 久99久视频精品免费| 欧美另类亚洲清纯唯美| 精品国产乱子伦一区二区三区| 精品久久久久久久人妻蜜臀av| 精品久久久久久久人妻蜜臀av| 国产精品亚洲美女久久久| 婷婷亚洲欧美| 亚洲成人久久性| 午夜福利18| 亚洲激情在线av| 90打野战视频偷拍视频| 久久久久久久精品吃奶| www.www免费av| 国产欧美日韩一区二区精品| 国产麻豆成人av免费视频| 十分钟在线观看高清视频www| 国产精品一区二区免费欧美| 欧美乱码精品一区二区三区| 亚洲专区国产一区二区| 亚洲av成人不卡在线观看播放网| 97人妻精品一区二区三区麻豆 | 嫩草影院精品99| 国产精品自产拍在线观看55亚洲| 51午夜福利影视在线观看| 嫁个100分男人电影在线观看| 久久久精品国产亚洲av高清涩受| 高清在线国产一区| 天天一区二区日本电影三级| 国产高清视频在线播放一区| 亚洲专区中文字幕在线| 97人妻精品一区二区三区麻豆 | АⅤ资源中文在线天堂| 91成年电影在线观看| 国产精华一区二区三区| 国产单亲对白刺激| 欧美久久黑人一区二区| 搡老熟女国产l中国老女人| 色哟哟哟哟哟哟| av欧美777| 久久久久久国产a免费观看| 国内毛片毛片毛片毛片毛片| a级毛片在线看网站| 可以在线观看的亚洲视频| 国产激情久久老熟女| 亚洲 欧美一区二区三区| 成年版毛片免费区| 国产午夜福利久久久久久| 午夜免费成人在线视频| 99re在线观看精品视频| 亚洲成人国产一区在线观看| 91成年电影在线观看| 这个男人来自地球电影免费观看| 欧美中文日本在线观看视频| 国内精品久久久久精免费| 亚洲欧美精品综合一区二区三区| 91成人精品电影| 亚洲精品粉嫩美女一区| 午夜福利免费观看在线| 国产私拍福利视频在线观看| 男女午夜视频在线观看| 悠悠久久av| 手机成人av网站| 男男h啪啪无遮挡| 欧美久久黑人一区二区| 亚洲国产中文字幕在线视频| 国产成人欧美在线观看| 后天国语完整版免费观看| 欧美日韩乱码在线| 亚洲精品美女久久av网站| 日韩欧美一区二区三区在线观看| www日本黄色视频网| 老司机靠b影院| 欧美不卡视频在线免费观看 | 99国产精品一区二区蜜桃av| 精品久久久久久久末码| 国产v大片淫在线免费观看| 国产精品野战在线观看| 日韩精品中文字幕看吧| 大型黄色视频在线免费观看| 亚洲第一av免费看| 美女高潮喷水抽搐中文字幕| 国产精品av久久久久免费| 青草久久国产| 精品久久久久久久久久久久久 | 亚洲中文字幕日韩| avwww免费| 久久精品国产亚洲av高清一级| 99精品久久久久人妻精品| 91大片在线观看| 色老头精品视频在线观看| 久久久久亚洲av毛片大全| 亚洲av成人av| 麻豆av在线久日| 国产亚洲欧美精品永久| 韩国av一区二区三区四区| 亚洲全国av大片| 久久草成人影院| 精品日产1卡2卡| 最近最新中文字幕大全电影3 | 成人国产综合亚洲| 欧美一区二区精品小视频在线| 天堂动漫精品| 一区二区三区精品91| 国产精品一区二区免费欧美| 中文亚洲av片在线观看爽| 香蕉av资源在线| 国产黄色小视频在线观看| 亚洲成国产人片在线观看| 欧美日本视频| 男人舔奶头视频| 亚洲精品色激情综合| 日日干狠狠操夜夜爽| 狂野欧美激情性xxxx| 亚洲欧美日韩高清在线视频| 日本熟妇午夜| 日本免费一区二区三区高清不卡| 亚洲男人天堂网一区| 又大又爽又粗| 成人三级做爰电影| 757午夜福利合集在线观看| av中文乱码字幕在线| 国产蜜桃级精品一区二区三区| 久久99热这里只有精品18| 午夜福利免费观看在线| 精品欧美国产一区二区三| 最近在线观看免费完整版| 欧美黄色淫秽网站| 成人国语在线视频| 日本一本二区三区精品| 精品少妇一区二区三区视频日本电影| 美女免费视频网站| 少妇裸体淫交视频免费看高清 | 亚洲国产精品999在线| 黄频高清免费视频| 国产亚洲欧美精品永久| 老司机在亚洲福利影院| 国产又爽黄色视频| av在线天堂中文字幕| 美女 人体艺术 gogo| 人妻丰满熟妇av一区二区三区| 亚洲电影在线观看av| 国产一卡二卡三卡精品| 精品久久久久久久末码| 国产久久久一区二区三区| 国产精品98久久久久久宅男小说| 亚洲国产毛片av蜜桃av| 国产精品二区激情视频| a在线观看视频网站| 精品日产1卡2卡| 亚洲av成人一区二区三| 欧美亚洲日本最大视频资源| 国产高清激情床上av| 久久中文字幕一级| 桃色一区二区三区在线观看| 国产亚洲精品av在线| ponron亚洲| 国产成年人精品一区二区| 成人午夜高清在线视频 | 侵犯人妻中文字幕一二三四区| 男人舔女人下体高潮全视频| 搡老妇女老女人老熟妇| 国产区一区二久久| 久久久久免费精品人妻一区二区 | 99精品欧美一区二区三区四区| 久久精品成人免费网站| 日韩大尺度精品在线看网址| 亚洲电影在线观看av| 午夜免费观看网址| 欧美成人一区二区免费高清观看 | 日韩中文字幕欧美一区二区| 在线观看一区二区三区| 老鸭窝网址在线观看| svipshipincom国产片| 欧美日韩精品网址| 亚洲国产看品久久| 麻豆av在线久日| 国产精品永久免费网站| av免费在线观看网站| 一进一出好大好爽视频| 色精品久久人妻99蜜桃| 国产成人啪精品午夜网站| 欧美成人午夜精品| 久久久久久久久久黄片| 亚洲精品久久国产高清桃花| 亚洲欧洲精品一区二区精品久久久| 久久久久久免费高清国产稀缺| 国产一卡二卡三卡精品| www.www免费av| √禁漫天堂资源中文www| 亚洲熟女毛片儿| 久久精品影院6| 国产日本99.免费观看| 成年版毛片免费区| 黄片小视频在线播放| 国产成人av教育| 欧美成人午夜精品| 女性生殖器流出的白浆| 欧美成人免费av一区二区三区| 国产精品98久久久久久宅男小说| avwww免费| 一个人观看的视频www高清免费观看 | 亚洲国产精品999在线| 日本a在线网址| 精品国产乱子伦一区二区三区| 一进一出抽搐gif免费好疼| 哪里可以看免费的av片| 无人区码免费观看不卡| 久久精品亚洲精品国产色婷小说| 欧美日本亚洲视频在线播放| 露出奶头的视频| 成人亚洲精品av一区二区| 老司机深夜福利视频在线观看| 男人舔女人下体高潮全视频| 色精品久久人妻99蜜桃| 最近最新中文字幕大全电影3 | 亚洲三区欧美一区| 欧美激情极品国产一区二区三区| 久久香蕉激情| 免费在线观看视频国产中文字幕亚洲| 日韩 欧美 亚洲 中文字幕| 一个人观看的视频www高清免费观看 | 国产久久久一区二区三区| 国产一级毛片七仙女欲春2 | 精品一区二区三区av网在线观看| 精品电影一区二区在线| 69av精品久久久久久| 黄片播放在线免费| 午夜福利高清视频| 久久精品国产亚洲av高清一级| 国产精品永久免费网站| 妹子高潮喷水视频| 亚洲狠狠婷婷综合久久图片| 人妻久久中文字幕网| 国产亚洲av高清不卡| 亚洲熟妇熟女久久| 首页视频小说图片口味搜索| 一二三四在线观看免费中文在| www.999成人在线观看| 久久这里只有精品19| 色婷婷久久久亚洲欧美| 午夜a级毛片| 黄片大片在线免费观看| 国内精品久久久久精免费| 久久久久久九九精品二区国产 | 久久精品aⅴ一区二区三区四区| 后天国语完整版免费观看| 不卡av一区二区三区| 国产精品久久久人人做人人爽| 操出白浆在线播放| 女人爽到高潮嗷嗷叫在线视频| 啦啦啦免费观看视频1| 成年人黄色毛片网站| 国产精品电影一区二区三区| 久久国产乱子伦精品免费另类| 在线观看午夜福利视频| 丁香六月欧美| 免费电影在线观看免费观看| 久久久久久亚洲精品国产蜜桃av| 亚洲 欧美 日韩 在线 免费| 成人亚洲精品一区在线观看| 国产成人欧美在线观看| 亚洲人成网站在线播放欧美日韩| 国产黄a三级三级三级人| 久久精品国产99精品国产亚洲性色| 日本黄色视频三级网站网址| 国产亚洲欧美在线一区二区| 国产单亲对白刺激| 黄色 视频免费看| 国产一区二区三区在线臀色熟女| 在线播放国产精品三级| 欧美又色又爽又黄视频| 男人的好看免费观看在线视频 | 曰老女人黄片| 久久精品国产亚洲av高清一级| 欧美一级毛片孕妇| 午夜日韩欧美国产| 日本 av在线| 亚洲成a人片在线一区二区| 久久香蕉精品热| 俄罗斯特黄特色一大片| 在线播放国产精品三级| 亚洲精品一区av在线观看| 香蕉国产在线看| 欧美日韩精品网址| 亚洲九九香蕉| 男男h啪啪无遮挡| 99热只有精品国产| 国产高清videossex| 久久人人精品亚洲av| 男人的好看免费观看在线视频 | 免费在线观看视频国产中文字幕亚洲| 色综合站精品国产| 国产成人啪精品午夜网站| 国产成人系列免费观看| 操出白浆在线播放| 一级黄色大片毛片| videosex国产| 欧美久久黑人一区二区| 两个人免费观看高清视频| 可以免费在线观看a视频的电影网站| 亚洲真实伦在线观看| 人人妻人人澡人人看| 女性被躁到高潮视频| 国产精品,欧美在线| 亚洲欧美精品综合久久99| 一级a爱片免费观看的视频| 老司机午夜十八禁免费视频| 好男人电影高清在线观看| 国产极品粉嫩免费观看在线| 国产99白浆流出| 国产亚洲av嫩草精品影院| 免费无遮挡裸体视频| 18禁美女被吸乳视频| 99国产精品99久久久久| 久久久久久久午夜电影| 亚洲精品av麻豆狂野| 亚洲成av片中文字幕在线观看| 久久草成人影院| 午夜视频精品福利| 色播亚洲综合网| 国产亚洲精品综合一区在线观看 | 国产精品精品国产色婷婷| 久久久久久久久中文| 欧美激情极品国产一区二区三区| 欧美大码av| 国产私拍福利视频在线观看| 亚洲第一电影网av| 久热这里只有精品99| 欧美另类亚洲清纯唯美| 一a级毛片在线观看| 性欧美人与动物交配| 久久久国产欧美日韩av| 女人被狂操c到高潮| 国产三级在线视频| 老司机午夜十八禁免费视频| 亚洲成人久久性| 麻豆国产av国片精品| 久久久久久免费高清国产稀缺| 夜夜爽天天搞| 欧美精品啪啪一区二区三区| 制服丝袜大香蕉在线| 亚洲av片天天在线观看| 国产欧美日韩精品亚洲av| 国内精品久久久久精免费| 天堂动漫精品| 日韩大尺度精品在线看网址| 亚洲久久久国产精品| 日日夜夜操网爽| 亚洲中文av在线| 免费一级毛片在线播放高清视频| 99精品欧美一区二区三区四区| 丰满人妻熟妇乱又伦精品不卡| av在线播放免费不卡| 国产又色又爽无遮挡免费看| 日本一区二区免费在线视频| 亚洲中文字幕一区二区三区有码在线看 | 日本三级黄在线观看| 国产不卡一卡二| www.精华液| 男人舔女人下体高潮全视频| 欧美中文日本在线观看视频| 一区福利在线观看| 国产久久久一区二区三区| 巨乳人妻的诱惑在线观看| 夜夜夜夜夜久久久久| 午夜影院日韩av| 亚洲成a人片在线一区二区| 嫩草影视91久久| 国产成人av教育| 97碰自拍视频| 老司机午夜十八禁免费视频| av中文乱码字幕在线| 精品欧美一区二区三区在线| 草草在线视频免费看| 九色国产91popny在线| 午夜免费观看网址| 中出人妻视频一区二区| 亚洲国产毛片av蜜桃av| 成人三级做爰电影| 久久精品国产亚洲av香蕉五月| 最近最新中文字幕大全电影3 | 男人操女人黄网站| 精品一区二区三区视频在线观看免费| 99在线视频只有这里精品首页| 欧美一区二区精品小视频在线| 精品无人区乱码1区二区| 成人三级黄色视频| 非洲黑人性xxxx精品又粗又长| 搡老熟女国产l中国老女人| 老汉色av国产亚洲站长工具| 我的亚洲天堂| 岛国视频午夜一区免费看| 久久热在线av| 国产av一区二区精品久久| bbb黄色大片| 国产成人欧美| 热99re8久久精品国产| 丝袜在线中文字幕| 久久精品91无色码中文字幕| 午夜激情av网站| 久久天躁狠狠躁夜夜2o2o| 日韩中文字幕欧美一区二区| 欧美人与性动交α欧美精品济南到| 97碰自拍视频| 久久草成人影院| 午夜福利一区二区在线看| 最近最新中文字幕大全电影3 | 禁无遮挡网站| 999精品在线视频| 在线观看日韩欧美| 久久欧美精品欧美久久欧美| av片东京热男人的天堂| 精品久久久久久,| 一卡2卡三卡四卡精品乱码亚洲| 国产主播在线观看一区二区| 熟女少妇亚洲综合色aaa.| 国产野战对白在线观看| 午夜老司机福利片| 久久久久久人人人人人| 欧美乱妇无乱码| 亚洲电影在线观看av| 久久精品91无色码中文字幕| 国产视频一区二区在线看| 99在线视频只有这里精品首页| ponron亚洲| 18禁黄网站禁片午夜丰满| 国产精品久久久久久亚洲av鲁大| 国产国语露脸激情在线看| 亚洲一码二码三码区别大吗| 久久精品亚洲精品国产色婷小说| 亚洲av第一区精品v没综合| 成年版毛片免费区| 国产熟女午夜一区二区三区| 亚洲欧美日韩无卡精品| 欧美一级毛片孕妇| 免费av毛片视频| 看片在线看免费视频| 午夜福利免费观看在线| 色综合婷婷激情| 欧美激情高清一区二区三区| 女性被躁到高潮视频| 国产精华一区二区三区| www.自偷自拍.com| 精品久久久久久久人妻蜜臀av| 国产亚洲欧美在线一区二区| 美国免费a级毛片|