• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 181, 文章 - 2, 評論 - 85, 引用 - 0
            數(shù)據(jù)加載中……

            基于 SOA 構(gòu)建網(wǎng)格應(yīng)用程序-----SOA 幕后的概念,以及如何將網(wǎng)格應(yīng)用程序遷移到 SOA 模型

            網(wǎng)格和面向服務(wù)架構(gòu)(SOA)是兩個(gè)似乎相互沖突的系統(tǒng)。SOA 是構(gòu)建離散服務(wù)的標(biāo)準(zhǔn),它可能要跨越多臺(tái)機(jī)器,這些機(jī)器可以進(jìn)行合并以構(gòu)建一個(gè)應(yīng)用程序,從而降低集成成本。大部分現(xiàn)代網(wǎng)格都采用了類似于 SOA 的 Web 服務(wù),但是在這兩個(gè)系統(tǒng)之間實(shí)際上有更多東西可以進(jìn)行合并,而不僅僅是采用幾個(gè) Web 服務(wù)。您還必須調(diào)整網(wǎng)格解決方案的體系結(jié)構(gòu)。本文將簡要介紹 SOA 幕后的一些概念,以及在將網(wǎng)格應(yīng)用程序遷移到 SOA 模型時(shí)應(yīng)該考慮的問題。

            遷移到 SOA 和網(wǎng)格

            網(wǎng)格應(yīng)用程序的一個(gè)永恒的問題是,使其足夠靈活,以在各種平臺(tái)和環(huán)境中使用。盡管早期的網(wǎng)格使用了專用的解決方案,其中采用的是嚴(yán)格受控的硬件和環(huán)境,但是最近的發(fā)展已經(jīng)清楚地表明,將網(wǎng)格應(yīng)用程序放到更為廣泛的平臺(tái)上運(yùn)行,這樣您只需要添加一些機(jī)器就可以很容易地?cái)U(kuò)展網(wǎng)格的范圍和處理能力。

            然而,平臺(tái)之間微小的差異可能會(huì)導(dǎo)致非常令人頭疼的事情。例如,Windows? 不同版本之間的改變,甚至是 Windows NT 和 Windows 2000 之間的差異,也都會(huì)導(dǎo)致那些網(wǎng)格環(huán)境中通常經(jīng)過嚴(yán)格設(shè)計(jì)和優(yōu)化了的應(yīng)用程序出現(xiàn)問題。一個(gè)顯然的解決方案是去掉那些高度與平臺(tái)相關(guān)的元素,并切換到一個(gè)更加通用的環(huán)境中。

            SOA 幕后的準(zhǔn)則遵守一些基本的規(guī)則。SOA 是一個(gè)用來構(gòu)建應(yīng)用程序的基于組件的模型,可以將應(yīng)用程序劃分為很多離散的服務(wù),這些服務(wù)各自執(zhí)行某個(gè)特定的功能,但是可以將它們組合在一起構(gòu)成更大的應(yīng)用程序。

            SOA 的基本原理現(xiàn)在已經(jīng)并不新鮮了。面向?qū)ο蟮母拍钜呀?jīng)出現(xiàn)了很多年,分布式對象也已經(jīng)在很多技術(shù)中存在很多年了,例如 CORBA。主要的區(qū)別在于,SOA 是基于面向?qū)ο蠛?Web 服務(wù)兩個(gè)概念的組合,并在一個(gè)用來描述可用接口的開放系統(tǒng)中采用了這種結(jié)構(gòu)。通過使得 Web 服務(wù)可以更容易發(fā)現(xiàn)和識(shí)別,SOA 可以極大地簡化基于 SOA 應(yīng)用程序的部署和分布。由于 Web 服務(wù)都是基于開放標(biāo)準(zhǔn)的,在其定義中就保證了體系結(jié)構(gòu)和平臺(tái)的無關(guān)性,因此基于 SOA 的應(yīng)用程序可以部署到各種平臺(tái)上。

            簡而言之,SOA 是一種對外提供服務(wù)的方法,讓計(jì)算機(jī)可以彼此進(jìn)行交談,并共享自己的處理能力和功能。網(wǎng)格正在慢慢地朝 Web 服務(wù)架構(gòu)發(fā)展,首先是 Globus 采用開放網(wǎng)格標(biāo)準(zhǔn)基礎(chǔ)設(shè)施(OGSI),然后是發(fā)布 Globus Toolkit 4.0(GT4)。SOA 和網(wǎng)格技術(shù)正基于諸如 Web Services Resource Framework(WSRF)以及其他的一些解決方案,朝 Web Standards Interoperability 技術(shù)方向發(fā)展。

            您還可以看到 SOA 和網(wǎng)格都可以為對方提供很多東西。這并不是網(wǎng)格技術(shù)利用 SOA 準(zhǔn)則的情況,或者反之。從 SOA 的觀點(diǎn)來說,網(wǎng)格為信息和資源的分布提供了一個(gè)異常模型,這是 SOA 模型的一個(gè)關(guān)鍵特性。從網(wǎng)格的觀點(diǎn)來看,SOA 為調(diào)整網(wǎng)格解決方案的架構(gòu)以及促進(jìn)其透明性和更好地支持廣泛的平臺(tái)和環(huán)境,提供了一些可選的而又非常靈活的方法。

            下面讓我們來了解一下傳統(tǒng)的網(wǎng)格模型,然后介紹一下基于 SOA 的網(wǎng)格模型,從而比較二者之間的區(qū)別,以及如何開始將網(wǎng)格和 SOA 應(yīng)用程序作為一個(gè)單一的資源進(jìn)行考慮。







            傳統(tǒng)的網(wǎng)格模型

            為了全面地理解 SOA 如何才能改進(jìn)網(wǎng)格服務(wù),以及需要如何修改應(yīng)用程序,下面讓我們來看一個(gè)基于傳統(tǒng)的網(wǎng)格技術(shù)的典型網(wǎng)格服務(wù),包括基本的 Web 服務(wù)。這個(gè)服務(wù)的基本結(jié)構(gòu)非常簡單。

            在圖 1 中您可以看到一個(gè)典型的網(wǎng)格環(huán)境的結(jié)構(gòu)圖。其中我故意沒有說明網(wǎng)格軟件的類型,因?yàn)榇蟛糠志W(wǎng)格軟件都可以根據(jù)相同的原理進(jìn)行工作。


            圖 1. 網(wǎng)格模型結(jié)構(gòu)圖
            網(wǎng)格模型結(jié)構(gòu)圖

            總體上來看,這個(gè)結(jié)構(gòu)相當(dāng)簡單。我們有一個(gè)網(wǎng)格協(xié)調(diào)者負(fù)責(zé)分發(fā)信息并與各個(gè)節(jié)點(diǎn)進(jìn)行工作。這個(gè)協(xié)調(diào)者(它還有很多別的名字,包括分發(fā)和管理節(jié)點(diǎn))的職責(zé)就是運(yùn)行網(wǎng)格。協(xié)調(diào)者與工作節(jié)點(diǎn)之間的通信可能在很多解決方案中都存在,不過大部分系統(tǒng)(包括 Globus)都是依賴于 Web 服務(wù)的。此處使用的模型通常都稱為級聯(lián)服務(wù),因?yàn)樾畔⒑凸ぷ髡埱蠖际峭ㄟ^服務(wù)進(jìn)行級聯(lián),從而將其從某個(gè)地方分發(fā)到各個(gè)節(jié)點(diǎn)上。

            然而,不管采用哪種通信系統(tǒng),其方法大體上是相同的:

            • 嚴(yán)格結(jié)構(gòu)的意思是說,節(jié)點(diǎn)都是使用一個(gè)特定的 Web 服務(wù)或 Web 服務(wù)接口與某個(gè)軟件的特定部分進(jìn)行聯(lián)系的,從而處理來自節(jié)點(diǎn)協(xié)調(diào)者的請求。
            • 任務(wù)提交是通過協(xié)調(diào)者進(jìn)行處理的,它分布在各個(gè)節(jié)點(diǎn)上,通常使用一個(gè) Web 服務(wù)來提交任務(wù)。在工作節(jié)點(diǎn)上,有一個(gè)類似的客戶機(jī)將完成的任務(wù)發(fā)回給網(wǎng)格協(xié)調(diào)者。
            • 網(wǎng)格節(jié)點(diǎn)所需要的其他信息(例如大型的數(shù)據(jù)結(jié)構(gòu)或引用材料)可以在網(wǎng)絡(luò)上通過另外一個(gè)服務(wù)進(jìn)行訪問,Web 服務(wù)可能支持,也可能不支持。例如,有些網(wǎng)格使用一個(gè)集中的 SQL 數(shù)據(jù)庫來存儲(chǔ)節(jié)點(diǎn)不通過 Web 服務(wù)接口而是直接訪問的信息。

            總體來說,大部分網(wǎng)格服務(wù)(直到最近)都是基于大型的單一代碼基礎(chǔ)的,它使用了一些私有的方法來進(jìn)行通信和共享信息。這使得 Web 服務(wù)模型也正在發(fā)生改變,但是即使采用了 Web 服務(wù)標(biāo)準(zhǔn)之后,很多解決方案也都可以對原有的單一應(yīng)用程序使用一個(gè) Web 服務(wù)接口。例如,從上面這個(gè)傳統(tǒng)的模型中我們可以看出,將任務(wù)提交到一個(gè)節(jié)點(diǎn)是通過一個(gè) Web 服務(wù)接口提交給網(wǎng)格節(jié)點(diǎn)的,這實(shí)際上會(huì)將面向 Web 服務(wù)的接口暴露給原來的應(yīng)用程序。

            這種單塊方法存在一個(gè)問題,即使使用 Web 服務(wù),它也會(huì)限制擴(kuò)展和增長的能力。采用這種單塊風(fēng)格,將應(yīng)用程序移植到其他平臺(tái)和環(huán)境就會(huì)變得更加復(fù)雜。如果您的系統(tǒng)不是基于 Web 服務(wù)的,那么問題可能就更加嚴(yán)重。增長之所以會(huì)受到限制是因?yàn)樗蕾囉趩蝹€(gè)協(xié)調(diào)系統(tǒng)來負(fù)責(zé)在網(wǎng)絡(luò)間分發(fā)信息。如果您的客戶機(jī)也是一個(gè)單塊接口(即使它同時(shí)還使用 Web 服務(wù)來提供接口),那么將網(wǎng)格應(yīng)用程序部署到很多機(jī)器上也會(huì)變得更加困難。







            SOA 應(yīng)用程序模型

            SOA 并不是使用 Web 服務(wù)來集成應(yīng)用程序不同部分并在其間進(jìn)行通信的另外一個(gè)簡單術(shù)語。SOA 要走得更遠(yuǎn),它定義了一種方法來部署應(yīng)用程序,這樣可以將注意力從由多個(gè)函數(shù)和對象組成的單個(gè)應(yīng)用程序轉(zhuǎn)移到一種將整個(gè)應(yīng)用程序劃分為多個(gè)單一服務(wù)的結(jié)構(gòu)上來。例如,考慮一個(gè)記帳程序,它有一些組件負(fù)責(zé)開具發(fā)票并提供一種方法進(jìn)行支付。除了傳統(tǒng)的組件應(yīng)用程序模型之外,您還可能會(huì)希望為這兩個(gè)任務(wù)定義一些對象和相關(guān)方法。

            在一個(gè)簡單的 Web 服務(wù)環(huán)境中,您要為對象和方法構(gòu)建一個(gè)接口來允許訪問需要遠(yuǎn)程訪問的內(nèi)容。例如,開具發(fā)票這個(gè)任務(wù)可能需要您通過網(wǎng)絡(luò)連接進(jìn)行訪問。在所有的可能性中,Web 服務(wù)都會(huì)在一臺(tái)專用的機(jī)器上有一個(gè)專用的接口,為其構(gòu)建一個(gè)接口需要了解這臺(tái)服務(wù)器上都在運(yùn)行什么服務(wù),以及為其提供接口需要的詳細(xì)信息。

            在一個(gè) SOA 中,這個(gè)記帳應(yīng)用程序中的每個(gè)功能從技術(shù)上來說都可以作為一個(gè) Web 服務(wù)。每個(gè)服務(wù)都會(huì)在網(wǎng)絡(luò)上廣播自己的存在,您可以在任何經(jīng)過適當(dāng)授權(quán)的機(jī)器上執(zhí)行任何操作。而且,由于每個(gè)服務(wù)都是自己可以控制的一個(gè)組件,因此它們可以存在于網(wǎng)絡(luò)上的任何地方。我們不再需要一臺(tái)專用的服務(wù)器來處理請求。例如,我們可以使用一個(gè)服務(wù)器農(nóng)場,由于服務(wù)會(huì)廣播自己的存在,因此我們不必?fù)?dān)心如何發(fā)現(xiàn)這些服務(wù)。

            從上面的介紹中,我們可以確定 SOA 的主要元素是:

            • 可以作為一個(gè)單獨(dú)的服務(wù)使用 —— 所提供的服務(wù)質(zhì)量的級別還需要作為一項(xiàng)標(biāo)準(zhǔn)確定。例如,我們還不知道是否要提供一個(gè)可以處理多個(gè)操作和多個(gè)服務(wù)的單一發(fā)票服務(wù),每個(gè)都支持不同的操作,例如開具發(fā)票、支付發(fā)票或修改發(fā)票。
            • 獨(dú)立性 —— 我們并不關(guān)心它們是如何來實(shí)現(xiàn)我們請求的任務(wù)的。它們只要實(shí)現(xiàn)這個(gè)功能就好了。類似地,服務(wù)也并不關(guān)心如何來達(dá)到這個(gè)結(jié)果。
            • 服務(wù)會(huì)廣播自己的存在。

            因此從理論上來說,應(yīng)該可以將一個(gè)應(yīng)用程序劃分為更小的組件,然后可以將其連接在一起(通過相互調(diào)用),從而構(gòu)成最終的應(yīng)用程序。由于這些單元也可能會(huì)擴(kuò)展到多臺(tái)機(jī)器上,因此我們需要從這種單塊、級聯(lián)結(jié)構(gòu)切換到一種更加靈活的分布式、自由通信的結(jié)構(gòu)。在圖 2 中您可以看到一個(gè) SOA 結(jié)構(gòu)的例子。


            圖 2. SOA 網(wǎng)格模型的一個(gè)例子
            SOA 網(wǎng)格模型的一個(gè)例子






            SOA 網(wǎng)格模型

            從上面對于 SOA 模型的介紹以及目前網(wǎng)格技術(shù)朝著 Web 服務(wù)結(jié)構(gòu)發(fā)展的趨勢可以清楚地看出,二者正在不斷融合。使用簡單的術(shù)語來說,網(wǎng)格是一個(gè)共享資源的分布式系統(tǒng),而 SOA 則是一個(gè)分布式體系結(jié)構(gòu),后者最關(guān)注的是服務(wù)的相互操作能力、易于集成、簡單性、可擴(kuò)展性以及安全訪問的特性。這兩個(gè)系統(tǒng)有一些共同的問題,包括延時(shí)、并發(fā)和局部故障等問題。

            二者都使用了 Web 服務(wù),圖 3 給出了一個(gè)可以在 SOA 和網(wǎng)格環(huán)境中使用的簡單布局。二者都大量地采用了 SOAP、XML Web 服務(wù)標(biāo)準(zhǔn)以及相關(guān)的安全性、管理和其他系統(tǒng)。


            圖 3. SOA 操作模型
             SOA 操作模型

            不管現(xiàn)有的應(yīng)用程序是否使用 Web 服務(wù),您都可以看到在圖 3 中詳細(xì)介紹的開放標(biāo)準(zhǔn)構(gòu)成了 SOA 標(biāo)準(zhǔn)的主體。總之,SOA 利用了以下的技術(shù):

            • 使用 XML 來構(gòu)成所有標(biāo)準(zhǔn)的核心部分,從用來交換信息的 SOAP 協(xié)議到用來共享描述信息的方法。例如, WSDL(一種基于 XML 的描述語言)就用來描述潛在的客戶機(jī)可以使用的服務(wù)。
            • SOAP 為交換對象和調(diào)用方法提供了一些基本的方法。底層的傳輸協(xié)議是高度不相關(guān)的,不過很可能會(huì)使用 HTTP。
            • 很多擴(kuò)展用來為服務(wù)之間的交互操作提供關(guān)鍵的服務(wù)。例如,WS-Reliability 和 WS-Resource 就用來幫助提高通信的可靠性。
            • 后臺(tái)標(biāo)準(zhǔn),例如 WS-Security 和新的 WS-Distributed Management 標(biāo)準(zhǔn),用來幫助提供安全的通信和管理遠(yuǎn)程服務(wù)。

            這些準(zhǔn)則和技術(shù)早已在 Globus Toolkit 中得到了采用,并深入網(wǎng)格標(biāo)準(zhǔn)和應(yīng)用程序之中。

            要在自己的應(yīng)用程序中采用這些技術(shù),需要改變一下開發(fā)應(yīng)用程序的方法。例如,要在網(wǎng)格應(yīng)用程序中采用 SOA 的準(zhǔn)則,您需要:

            • 將應(yīng)用程序遷移到服務(wù)模型。如果您還沒有這樣做,就必須考慮一下應(yīng)用程序中的每個(gè)操作。稍后我們會(huì)更詳細(xì)地介紹這個(gè)問題。
            • 將應(yīng)用程序劃分成更小的、離散的組件。例如,不采用一個(gè)帶有 Web 服務(wù)接口的單塊程序,而是將應(yīng)用程序劃分成單個(gè)基于 Web 服務(wù)的組件。您可以將為網(wǎng)格節(jié)點(diǎn)提供服務(wù)的應(yīng)用程序劃分成單個(gè)服務(wù)來接受任務(wù)、返回任務(wù)和匯報(bào)統(tǒng)計(jì)信息。
            • 確保節(jié)點(diǎn)和控制器可以獨(dú)立工作。不要依賴于對數(shù)據(jù)庫服務(wù)器或其他資源的持久連接。

            反之,要在 SOA 應(yīng)用程序中采用網(wǎng)格的概念,您需要:

            • 從應(yīng)用程序中刪除那些依賴于單一主機(jī)或環(huán)境進(jìn)行操作的部分。
            • 將統(tǒng)計(jì)信息和監(jiān)視信息集成到 SOA 服務(wù)中,從而確定典型的網(wǎng)格負(fù)載信息,例如 CPU 和存儲(chǔ)資源。

            這兩種情況中的結(jié)果應(yīng)該是可以構(gòu)建一個(gè)更加靈活而且實(shí)際可用的應(yīng)用程序。







            遷移應(yīng)用程序

            修改現(xiàn)有的應(yīng)用程序是修改網(wǎng)格或 SOA 應(yīng)用程序最困難的方法,因?yàn)槟枰业揭环N方法來修改應(yīng)用程序,卻不要極大地改變應(yīng)用程序工作的方法和現(xiàn)有的服務(wù)。

            主要的問題是要確定應(yīng)用程序的組織。建立要執(zhí)行的操作列表,網(wǎng)格中的組件和節(jié)點(diǎn)之間通信是如何操作的,以及各個(gè)步驟的編譯次序。例如,您可能會(huì)希望制作一個(gè)提交次序的模型:當(dāng)提交作業(yè)時(shí)會(huì)發(fā)生什么,當(dāng)發(fā)回響應(yīng)時(shí)會(huì)發(fā)生什么,當(dāng)需要有關(guān)某個(gè)給定資源的狀態(tài)信息時(shí)又會(huì)發(fā)生什么。有了這些信息,就可以構(gòu)建一個(gè)支持這些操作所需要的服務(wù)清單了。

            現(xiàn)在您需要考慮如何實(shí)現(xiàn)這些服務(wù)。SOA 和基于網(wǎng)格的服務(wù)方法之間有一點(diǎn)區(qū)別:SOA 組件被認(rèn)為是無狀態(tài)的,而網(wǎng)格則是有狀態(tài)的。二者并不需要是互斥的。您可以開發(fā)一個(gè)無狀態(tài)的應(yīng)用程序來提供有狀態(tài)的信息,這樣就可以包含一個(gè)方法來記錄可以匯報(bào)的服務(wù)的狀態(tài)。

            記住,即使是在遷移到新的 SOA 模型時(shí),應(yīng)用程序中的關(guān)鍵部分也是相同的。例如在 CPU 敏感的網(wǎng)格中,網(wǎng)格中執(zhí)行實(shí)際工作的核心的計(jì)算函數(shù)都是相同的,訪問數(shù)據(jù)結(jié)構(gòu)和信息的代碼也都是相同的。例如,如果您考慮一個(gè)圖像呈現(xiàn)網(wǎng)格,構(gòu)成原始圖像描述的數(shù)據(jù)以及將這些向量數(shù)據(jù)轉(zhuǎn)換成最終圖像的代碼(函數(shù)或應(yīng)用程序)都是相同的。只有各個(gè)節(jié)點(diǎn)之間進(jìn)行通信和發(fā)送請求的方式會(huì)發(fā)生變化。

            最后,具備這些信息之后,就可以開始將應(yīng)用程序遷移到新的基于組件的模型了。不幸的是,并沒有什么簡單的方法可以產(chǎn)生這些信息,現(xiàn)在也沒有什么工具可以對此進(jìn)行簡化。您需要確定的很多信息都依賴于應(yīng)用程序和轉(zhuǎn)換應(yīng)用程序時(shí)的源環(huán)境。







            結(jié)束語

            即使對于一個(gè)偶然的觀察者來說,SOA 和網(wǎng)格都具有類似的目標(biāo):簡化應(yīng)用程序,擴(kuò)充其功能和所支持的平臺(tái),可以將任務(wù)更容易地分發(fā)到多臺(tái)機(jī)器上。它們當(dāng)然會(huì)采用很多相同的基本組件 —— Web 服務(wù)和 XML —— 但是這些方法稍有不同。您還可以看到每種解決方案可以給另外一種解決方案提供很多優(yōu)點(diǎn),足以值得考慮利用這種技術(shù)。例如,網(wǎng)格技術(shù)的獨(dú)立特性對于部署基于 SOA 的應(yīng)用程序就非常有益。SOA 的靈活特性和異構(gòu)特性對于網(wǎng)格擴(kuò)充自己的平臺(tái)基礎(chǔ)來說則十分理想。

            采用基于 SOA 的網(wǎng)格,我們可以獲得很多優(yōu)點(diǎn)。單塊模型消失了?,F(xiàn)在不再采用一個(gè)單一的網(wǎng)格協(xié)調(diào)者來控制各個(gè)任務(wù)單元在網(wǎng)格上的執(zhí)行,任務(wù)可以提交到任意的節(jié)點(diǎn)上。當(dāng)任務(wù)進(jìn)行分發(fā)時(shí),如果節(jié)點(diǎn)不能及時(shí)處理這些任務(wù),各個(gè)節(jié)點(diǎn)應(yīng)該可以將任務(wù)直接發(fā)送到其他節(jié)點(diǎn)上。這種自治體系結(jié)構(gòu)是可能的,因?yàn)楦鱾€(gè)組件可以彼此進(jìn)行交互。

            posted on 2006-04-17 03:54 wsdfsdf 閱讀(203) 評論(0)  編輯 收藏 引用 所屬分類: 技術(shù)文章

            亚洲va久久久噜噜噜久久狠狠| 久久亚洲精品无码VA大香大香| 超级97碰碰碰碰久久久久最新| 久久久久亚洲?V成人无码| 国产精品久久久久久久久| 精品久久久噜噜噜久久久| 99久久夜色精品国产网站| 国产精品99久久久精品无码| 久久久国产打桩机| 狠狠色婷婷久久一区二区| 久久精品人人做人人爽电影| 婷婷伊人久久大香线蕉AV| 久久精品国产第一区二区三区| 国产成人精品白浆久久69| 免费国产99久久久香蕉| 国产精品成人99久久久久91gav| 久久99亚洲综合精品首页| 久久国产成人午夜AV影院| 亚洲精品国精品久久99热| 精品伊人久久大线蕉色首页| 久久这里只有精品18| 国产日韩久久免费影院| 久久99这里只有精品国产| 亚洲AV乱码久久精品蜜桃| 久久免费视频网站| 色妞色综合久久夜夜| 99久久国产热无码精品免费 | 久久精品一区二区三区AV| 亚洲精品无码成人片久久| 人人狠狠综合久久亚洲88| 久久只这里是精品66| 91久久精一区二区三区大全| 色婷婷噜噜久久国产精品12p | 久久九九兔免费精品6| 精品久久久久久久无码| 人妻丰满?V无码久久不卡| 国产精品岛国久久久久| 热久久最新网站获取| 91精品国产91久久久久久青草| 久久婷婷五月综合国产尤物app | 久久免费的精品国产V∧|