日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Distributed Systems笔记-Web Service Design Patterns

發(fā)布時間:2025/3/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Distributed Systems笔记-Web Service Design Patterns 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

CMU 95702 Distributed Systems 筆記。簡單介紹 XML-RPC、SOAP、REST 三種 web 服務(wù)實(shí)現(xiàn)方案以及 RPC、Message、Resource 三種 patterns。

Web 服務(wù)實(shí)現(xiàn)方案

主流的 Web 服務(wù)實(shí)現(xiàn)方案有以下三種,因?yàn)?XML-RPC 逐漸被 SOAP 取代,所以也可以說,主流的 Web 服務(wù)實(shí)現(xiàn)方案只有 REST 和 SOAP 兩種。

  • REST:表征狀態(tài)轉(zhuǎn)移(Representational State Transfer
  • SOAP:簡單對象訪問協(xié)議(Simple Object Access Protocol)
  • XML-RPC:遠(yuǎn)程過程調(diào)用(Remote procedure call,RPC)

XML-RPC

XML-RPC 是一個遠(yuǎn)程過程調(diào)用(remote procedure call,RPC)的分布式計(jì)算協(xié)議,通過XML將調(diào)用函數(shù)封裝,并使用 HTTP 協(xié)議作為傳送機(jī)制。后來在新的功能不斷被引入下,這個標(biāo)準(zhǔn)慢慢演變成為今日的 SOAP 協(xié)定。XML-RPC 協(xié)定是已登記的專利項(xiàng)目。XML-RPC 透過向裝置了這個協(xié)定的服務(wù)器發(fā)出HTTP請求。發(fā)出請求的用戶端一般都是需要向遠(yuǎn)端系統(tǒng)要求呼叫的軟件。

eg. Long-lived image
如果需要經(jīng)常把大的圖片傳到前端,那么可以把圖片的 cache-control 設(shè)置的大一些,如 30 天,如果需要更新圖片,那么上傳一張新的圖片到新的 URI,然后再改變 HTML,指向新的 URI。

HTML

1 <img src='/image/big-image.jpg'\>

Server

12345 HTTP/1.1 200 OkDate: Thu, 15 Aug 2008 23:26:31 GMTServer: ApacheContent-Length: 50753Cache-Control: max-age=259200

HTML

1 <img src='/image/big-image2.jpg'></pre>

SOAP

SOAP(Simple Object Access Protocol) 是一套完整的實(shí)現(xiàn) Web 服務(wù)的解決方案。

SOAP 方式的 Web 服務(wù)中的 Web 服務(wù)描述語言(WSDL)和簡單對象訪問協(xié)議(SOAP)一起構(gòu)成了 SOAP 方式下的 Web 服務(wù)的結(jié)構(gòu)單元。客戶端通過 WSDL 可以了解 Web 服務(wù)公開了那些可以被執(zhí)行的方法以及 Web 服務(wù)可以發(fā)送或接收的消息格式(解決了公布訪問資源方法的問題)。客戶端按照 SOAP 將調(diào)用位于遠(yuǎn)程系統(tǒng)上的服務(wù)所需信息序列化為消息(解決了如何調(diào)用遠(yuǎn)程方法的問題)。注意 WSDL 描述的服務(wù)以及SOAP消息都是符合統(tǒng)一標(biāo)準(zhǔn)的,都是機(jī)器可讀的.

WSDL 基于 XML 格式,用來描述 Web 服務(wù)。WSDL 文檔可以看成是客戶端和服務(wù)器之間的一個協(xié)約。使用 WSDL 工具,你可以自動處理這個過程,幾乎不用手工編寫代碼就能夠讓應(yīng)用程序整合新的服務(wù)。因此 WSDL 是 Web 服務(wù)體系結(jié)構(gòu)的基礎(chǔ),因?yàn)樗峁┝艘粋€通用語言,用來描述服務(wù)和整合這些服務(wù)的平臺。

SOAP 本身提供了與 Web 服務(wù)交換信息的方法。SOAP 是序列化調(diào)用位于遠(yuǎn)程系統(tǒng)上的服務(wù)所需信息的標(biāo)準(zhǔn)方法,這些信息可以使用一種遠(yuǎn)程系統(tǒng)能夠讀懂的格式通過網(wǎng)絡(luò)發(fā)送到遠(yuǎn)程系統(tǒng),而不必關(guān)心遠(yuǎn)程系統(tǒng)運(yùn)行于何種平臺或者使用何種語言編寫。SOAP 以 XML 格式提供了一個簡單、輕量的用于在分散或分布環(huán)境中交換結(jié)構(gòu)化和類型信息的機(jī)制。實(shí)際上它通過提供一個有標(biāo)準(zhǔn)組件的包模型和在模塊中編碼數(shù)據(jù)的機(jī)制,定義了一個簡單的表示應(yīng)用程序語義的機(jī)制。

用一個簡單的例子來說明 SOAP 使用過程,一個 SOAP 消息可以發(fā)送到一個具有 Web Service 功能的 Web 站點(diǎn),例如,一個含有房價(jià)信息的數(shù)據(jù)庫,消息的參數(shù)中標(biāo)明這是一個查詢消息,此站點(diǎn)將返回一個 XML 格式的信息,其中包含了查詢結(jié)果(價(jià)格,位置,特點(diǎn),或者其他信息)。由于數(shù)據(jù)是用一種標(biāo)準(zhǔn)化的可分析的結(jié)構(gòu)來傳遞的,所以可以直接被第三方站點(diǎn)所利用。

REST

表征狀態(tài)轉(zhuǎn)移(Representional State Transfer),是 Roy Fielding( HTTP規(guī)范的主要編寫者之一)博士在2000年他的博士論文中提出來的一種軟件架構(gòu)風(fēng)格。它并不是一個標(biāo)準(zhǔn),而是通過表征(Representional)來描述傳輸狀態(tài)的一種原則。其宗旨是從資源的角度來觀察整個網(wǎng)絡(luò),分布在各處的資源由URI確定,而客戶端的應(yīng)用通過 URI 來獲取資源的表征。獲得這些表征致使這些應(yīng)用程序轉(zhuǎn)變了其狀態(tài)。隨著不斷獲取資源的表征,客戶端應(yīng)用不斷地在轉(zhuǎn)變著其狀態(tài)。

REST 中沒有用于描述資源(服務(wù))列表,資源元數(shù)據(jù)的類似于WSDL的東西。所以我們需要其他策略去代替 WSDL 實(shí)現(xiàn)“公布訪問資源方法的問題”。

由于沒有類似于 SOAP 的權(quán)威性協(xié)議作為規(guī)范,因此各個網(wǎng)站的REST實(shí)現(xiàn)都自有一套,也正是因?yàn)檫@種各自實(shí)現(xiàn)的情況,在性能和可用性上會大大高于 SOAP 發(fā)布的 web service,但細(xì)節(jié)方面有太多沒有約束的地方,其統(tǒng)一通用方面遠(yuǎn)遠(yuǎn)不及 SOAP。

舉個例子:假設(shè)A組織,B組織都實(shí)現(xiàn)了Restful API來通過工號查詢?nèi)藛T信息,因?yàn)闆]有統(tǒng)一的規(guī)范。

A的API 可能是這樣:

1 http://A/api/person/001

B的API 可能是這樣:

1 http://A/api/person/id=001

第三方客戶端在實(shí)現(xiàn)遠(yuǎn)程調(diào)用的時候就必須考慮這些API的差異,分別查看A,B的API文檔。

如果有個權(quán)威性協(xié)議作為規(guī)范做指導(dǎo),規(guī)定這個API應(yīng)該實(shí)現(xiàn)成下面這樣,那么第三方客戶端也只需按照這個標(biāo)準(zhǔn)去調(diào)用遠(yuǎn)程API,而不用查看A,B的API文檔:

1 http://A/api/person/{001}

而 OData 就是這樣的一個設(shè)計(jì)和使用 Restful API 的權(quán)威性協(xié)議. OData 定義了一些標(biāo)準(zhǔn)規(guī)則(像一個接口定義一堆方法一樣),實(shí)現(xiàn) Restful API 時候,必須實(shí)現(xiàn)這些標(biāo)準(zhǔn)規(guī)則(就像實(shí)現(xiàn)一個接口必須實(shí)現(xiàn)其所有方法一樣)。第三方就可以根據(jù) Odata 協(xié)議定義的規(guī)則去訪問 Restful API。

特性

Resources

  • URI
    REST 的一個重要原則是 Addressability,每一個資源都有一個 URI。格式為 scheme://host:port/path?queryString#fragment。scheme 可以是 http、ftp、https 等。
  • Uniform Interface
    methods,用 http 的若干方法來操作資源。
    representation,提供了多種 formats 來表述網(wǎng)頁,如 xml, json 等。http 用 content-type header 來定義格式。

Protocol

  • client-server
    客戶和服務(wù)器之間通過一個統(tǒng)一的接口來互相通訊。
  • stateless
    每一個 request 都是獨(dú)立的,每次發(fā)送請求時客戶端都需要提供足夠的信息,服務(wù)端并不會保存有關(guān)客戶的任何狀態(tài)。
  • cacheable
    REST 的系統(tǒng)能恰當(dāng)對請求進(jìn)行緩存,盡量減少服務(wù)器和客戶端之間的信息傳輸來提高性能
  • layered(intermediaries)
    客戶端并不會固定和一個服務(wù)器打交道

HTTP method 的補(bǔ)充:

  • GET - safe, idempotent, cacheable
  • PUT - idempotent
  • DELETE - idempotent
  • HEAD - safe, idempotent
  • POST

cacheable:response 可以被緩存
idempotent:該操作可以被執(zhí)行多次
safe:該操作并沒有副作用(不會影響別的操作)

HATEOAS

REST 另一個主要內(nèi)容是 HATEOAS。HATEOS 用中文解釋就是?超文本作為狀態(tài)轉(zhuǎn)移的引擎,這是一個 late binding 的例子。用戶在瀏覽器輸入 URL 向該資源發(fā)起一個 HTTP GET 請求,服務(wù)器會返回 response,在這個 response 中包含了下一步你該去哪里的信息,你可以在這個 response 中找到對其它資源的引用:鏈接、圖片、腳本等。也就是說,一個典型的REST服務(wù)不需要額外的文檔標(biāo)示通過哪些URL訪問特定類型的資源,而是通過服務(wù)端返回的響應(yīng)來標(biāo)示到底能在該資源上執(zhí)行什么樣的操作。一個REST服務(wù)的客戶端也不需要知道任何有關(guān)哪里有什么樣的資源這種信息。

舉例來說,一個客戶端可能會接收一個我們上面所描述的用于報(bào)表服務(wù)的主RESTful服務(wù)的引用:

http://company1.com/report/

如果是通過瀏覽器發(fā)出的請求,可能會返回一個包含如下引用的HTML文檔:

http://company1.com/report/sales

用戶可以點(diǎn)擊進(jìn)入并找到可瀏覽的年份列表。要說明的是瀏覽器對于URL的結(jié)構(gòu)并沒有特別的認(rèn)知,但它知道如何分析結(jié)果并以用戶可以瀏覽的結(jié)果返回內(nèi)容。

對于其它的MIME類型道理也是一樣,比如以XML的格式請求2009年的季度報(bào)表:

http://company1.com/reports/sales/2009/qtr

可能得到:

123456 <reports><description>2009 Quarterly Reports</description><report name="First Quarter" src="http://company1.com/reports/sales/2009/qtr/1"/><report name="Second Quarter" src="http://company1.com/reports/sales/2009/qtr/2"/><report name="Third Quarter" src="http://company1.com/reports/sales/2009/qtr/3"/> </reports>

可以將 URL 想成是貫穿信息空間的向量。每一個層次都進(jìn)一步的將你指向最終的資源。不同的路徑可能產(chǎn)生同樣的結(jié)果。客戶端需要知道如何分析這些結(jié)果,但通過對響應(yīng)給出可識別的類型,我們可以觸發(fā)合適的分析器。這一結(jié)構(gòu)可通過爬蟲降序的從引用來抓取,或者以某種接口展現(xiàn)給用戶瀏覽。一個 RESTful 接口成為了客戶端通過基于已知來請求信息的方式。它們以一個已知或者已發(fā)現(xiàn)的點(diǎn)作為開始,就像你瀏覽web一樣來瀏覽信息。

這就是 HATEOS 所指代的。應(yīng)用的狀態(tài)在超文本響應(yīng)中被轉(zhuǎn)移和發(fā)現(xiàn)。就像瀏覽器需要知道HTML、圖片、聲音文件等等一樣,一個RESTful客戶端也需要知道如何分析解析資源引用的結(jié)果。然而,整個過程是簡單、受約束、可伸縮并且靈活的——這正是我們所期望的網(wǎng)絡(luò)軟件系統(tǒng)的屬性。

許多人搭建的”RESTful”系統(tǒng)都要求客戶端事先知道URL的每一層次的意義。如果服務(wù)端將信息重組了,這些系統(tǒng)的客戶端就會崩潰。真正體現(xiàn)了HATEOS的客戶端與它們所通訊的服務(wù)器之間才更加能做到松耦合。

更多見面向資源的架構(gòu):REST的另一面

Linked Services Pattern

是 HATEOAS 的核心。只發(fā)布一部分 root web services 的地址,在每個 response 中返回相關(guān)服務(wù)的地址,讓客戶端通過這種 response 來發(fā)現(xiàn)之后的 URI。

Only publish the addresses of a few root web services. Include the addresses of related services in each response. Let clients parse responses to discover subsequent service URIs.

Network performance

客戶端 -> 服務(wù)端。

client - proxy - gateways - origin server

REST 的優(yōu)勢。

  • Efficiency
    緩存可以提高效率,并不需要到達(dá) gateways 和 origin server;data control 意味著我們可以壓縮數(shù)據(jù)來提高效率。
  • Scalability
    緩存:理由同上。
    無狀態(tài):如果服務(wù)器記錄用戶相關(guān)的狀態(tài),那么集群擴(kuò)展時用戶相關(guān)的狀態(tài)就要及時地在集群中的各個服務(wù)器之間同步,對用戶狀態(tài)的同步將會是一個非常棘手的問題,當(dāng)一個用戶的相關(guān)狀態(tài)在一個服務(wù)器上發(fā)生了更改,那么在什么時候,什么情況下對這些狀態(tài)進(jìn)行同步?如果該狀態(tài)同步是同步進(jìn)行的,那么同時刷新多個服務(wù)器上的用戶狀態(tài)將導(dǎo)致對用戶請求的處理變得異常緩慢。如果該同步是異步的,那么用戶在發(fā)送下一個請求時,其它服務(wù)器將可能由于用戶狀態(tài)不同步的原因無法正確地處理用戶的請求。除此之外,如果集群進(jìn)行了不停機(jī)的橫向擴(kuò)展,那么用戶狀態(tài)的同步需要如何完成?
    不同的 gateways,增加 intermediaries 非常方便。
  • User Perceived Performance
    通過 reduce media types,緩存等方式實(shí)現(xiàn)。
  • simplicity/evolvability/extensibility/customizability/configuration/reusability/visibility/portability/reliability

三種方案簡單比較

XML-RPC已慢慢的被SOAP所取代,現(xiàn)在很少采用了,但它還是有版權(quán)的。

  • 成熟度上:SOAP在成熟度上優(yōu)于REST
  • 效率和易用性上:REST更勝一籌
  • 安全性上:SOAP安全性高于REST,因?yàn)?REST 更關(guān)注的是效率和性能問題

總體上,因?yàn)?REST 模式的 Web 服務(wù)與復(fù)雜的 SOAP 和 XML-RPC 對比來講明顯的更加簡潔,越來越多的 web 服務(wù)開始采用 REST 風(fēng)格設(shè)計(jì)和實(shí)現(xiàn)。例如,Amazon.com 提供接近 REST 風(fēng)格的 Web 服務(wù)進(jìn)行圖書查找;雅虎提供的 Web 服務(wù)也是REST風(fēng)格的。REST 對于資源型服務(wù)接口來說很合適,同時特別適合對于效率要求很高,但是對于安全要求不高的場景。而 SOAP 的成熟性可以給需要提供給多開發(fā)語言的,對于安全性要求較高的接口設(shè)計(jì)帶來便利。所以我覺得純粹說什么設(shè)計(jì)模式將會占據(jù)主導(dǎo)地位沒有什么意義,關(guān)鍵還是看應(yīng)用場景,正是那句老話:適合的才是最好的

同時很重要一點(diǎn)就是不要扭曲了REST現(xiàn)在很多網(wǎng)站都跟風(fēng)去開發(fā) REST 風(fēng)格的接口,其實(shí)都是在學(xué)其形,不知其心,最后弄得不倫不類,性能上不去,安全又保證不了,徒有一個看似象摸象樣的皮囊。

三種主流的Web服務(wù)實(shí)現(xiàn)方案(REST+SOAP+XML-RPC)簡述及比較

API styles

RPC

RPC 是指遠(yuǎn)程過程調(diào)用,也就是說兩臺服務(wù)器A、B,一個應(yīng)用部署在A服務(wù)器上,想要調(diào)用 B 服務(wù)器上應(yīng)用提供的函數(shù)/方法,需要通過網(wǎng)絡(luò)來表達(dá)調(diào)用的語義和傳達(dá)調(diào)用的數(shù)據(jù)。

這時候的 message 包括 procedure name 和 parameter list,service descriptor 通常是 WSDL 和 XSDL 或者 non-XML approach(JSON-RPC),作用是生成一個在 client 上的 service connector(proxy)。

Framework: SOAP, JAX-WS(java), WCF(Microsoft)

RPC 模型是 tightly copuled system,如果 parameter list 改變了,那么 client 將會 break。如果 descriptor 改變了,那么必須重新生成 connector 來連接 client。

request/response 是 RPC 的默認(rèn)模式,request/acknowlege 會 less coupled(seperation of concerns),request 可以在隊(duì)列中等待,之后再進(jìn)行處理,這樣可以提高 scalability。如果 client 不想再等待的時候 block,那么可以用 asynchronous response handler。

Why

通過 http 調(diào)用別的機(jī)器上的進(jìn)程/方法
為什么 RPC 呢?就是無法在一個進(jìn)程內(nèi),甚至一個計(jì)算機(jī)內(nèi)通過本地調(diào)用的方式完成的需求,比如不同的系統(tǒng)間的通訊,甚至不同的組織間的通訊。由于計(jì)算能力需要橫向擴(kuò)展,需要在多臺機(jī)器組成的集群上部署應(yīng)用.

RPC 的協(xié)議有很多,比如最早的 CORBA,Java RMI,Web Service的 RPC 風(fēng)格,Hessian,Thrift,甚至 Rest API。

通信細(xì)節(jié)

  • 服務(wù)消費(fèi)方(client)調(diào)用以本地調(diào)用方式調(diào)用服務(wù);
  • client stub 接收到調(diào)用后負(fù)責(zé)將方法、參數(shù)等組裝成能夠進(jìn)行網(wǎng)絡(luò)傳輸?shù)南Ⅲw;
  • server stub 收到消息后進(jìn)行解碼;
  • server stub 根據(jù)解碼結(jié)果調(diào)用本地的服務(wù);
  • 本地服務(wù)執(zhí)行并將結(jié)果返回給 server stub;
  • server stub 將返回結(jié)果打包成消息并發(fā)送至消費(fèi)方;
  • client stub 接收到消息,并進(jìn)行解碼;
  • 服務(wù)消費(fèi)方得到最終結(jié)果。
  • RPC的目標(biāo)就是要2~8這些步驟都封裝起來,讓用戶對這些細(xì)節(jié)透明。

    Message

    通過 http 給別的機(jī)器發(fā)送 command 命令、通知、其它信息,不用和別的進(jìn)程 direct coupling,也不用知道別的機(jī)器的方法的簽名。message 只包含一個參數(shù)。

    這時候的 message 不包括 procedure name 和 parameter list,service descriptor 通常是 WSDL 和 XSDL,作用是生成一個 service connector(proxy),service 的主要任務(wù)是分發(fā),要求 service 更加的聰明,能夠評估消息內(nèi)容并決定去執(zhí)行哪個進(jìn)程調(diào)用哪個方法。

    response 包括了相關(guān) service 的地址(url)。
    Framework: SOAP, WS-Policy, WS-Security

    默認(rèn)是 request/acknowledge 模式而不是 request/response。
    追加一條新的 message type 很簡單。

    Resource

    操作另一臺機(jī)器上的數(shù)據(jù),不用和別的進(jìn)程 direct coupling,最小化 the need for domain specific api’s。
    消息內(nèi)容是一個 http 方法,一個 uri,一個 media type。

    Resource API 可能是 Restful 的。
    request/acknowledge 或者 request/response。
    會產(chǎn)生 Security risk 因?yàn)?uri is hackable

    總結(jié)

    如果要建一個分布式系統(tǒng),high performance(speed) 是最主要的要求,那么以下選項(xiàng)選哪個?

    • REST sytle web service
    • JAVA RMI
    • SOAP based web service
    • Javascript using JSON
    • Plain old XML(POX) over HTTP

    選 JAVA RMI,因?yàn)?java RMI 把 message 都編碼成 binary 的形式,減少了在各終端的 conversion time。

    Postel’s Law

    最后加一條 Postel’s Law。簡單來說就是?對自己嚴(yán)格,對他人寬容。“發(fā)送時保守”是告誡 web 開發(fā)人員的,HTML代碼應(yīng)該寫的盡可能符合標(biāo)準(zhǔn),能夠方便別人(瀏覽器)去解析。“接收時開放”主要是說對一個不遵循固定標(biāo)準(zhǔn)(如不遵循HTML標(biāo)準(zhǔn))的網(wǎng)頁,或者說網(wǎng)站中出現(xiàn)的一個或多個錯誤,瀏覽器仍能夠盡可能的解析并呈現(xiàn)。另外,瀏覽器必須向后兼容也是“接收時開放”的一個典型例子,不能因?yàn)榇蠹叶加?HTML5 編寫網(wǎng)站瀏覽器就不再支持之前的 HTML 版本。

    參考鏈接:
    你應(yīng)該知道的RPC原理
    REST簡介
    WebService的兩種方式SOAP和REST比較 (轉(zhuǎn))
    三種主流的Web服務(wù)實(shí)現(xiàn)方案(REST+SOAP+XML-RPC)簡述及比較

    原文地址:http://www.shuang0420.com/2016/11/02/Web-Service-Design-Patterns/

    總結(jié)

    以上是生活随笔為你收集整理的Distributed Systems笔记-Web Service Design Patterns的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 色婷婷色综合 | а中文在线天堂 | 岛国精品资源网站 | 少妇xxxx| 日本aⅴ在线 | av色图片| 极品人妻一区二区三区 | 精品不卡一区二区 | 国产人妖av | 欧美精品99| 在线免费观看一区二区三区 | 精品久久久久久久久久久久久久久久久 | 热逼视频| 日本三区在线 | jizz国产在线观看 | 国产女人18毛片水真多 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产一级久久久久毛片精品 | 日本免费高清一区二区 | 宝贝乖h调教灌尿穿环 | 国产视频精品免费 | 国产日韩精品一区二区三区在线 | 国产亚洲精品成人 | 手机看片国产日韩 | 亚洲av午夜精品一区二区三区 | 日本xxx在线观看 | 午夜激情福利在线 | 男人的天堂va | 婷婷视频网 | аⅴ资源新版在线天堂 | 欧美高清精品一区二区 | 欧美野外猛男的大粗鳮 | 久久国产一级片 | 久久大 | 91麻豆国产视频 | 欧美亚日韩 | 国产日韩一区二区三区在线观看 | 久久国产激情视频 | 色婷婷av一区二区三区gif | 亚洲国产黄色 | 天天摸天天看 | 亚洲中文字幕久久无码 | 精品一区二区三区无码视频 | 蜜桃精品在线观看 | 人人艹在线 | 成人3d动漫一区二区三区91 | 黄色免费视频观看 | 嫩草视频一区二区三区 | 欧美视频一区二区三区四区 | 自拍亚洲综合 | 91 在线视频 | 91在线超碰 | 无码av天堂一区二区三区 | 91精品国产福利在线观看 | 操一操视频 | 在线国产欧美 | 免费爱爱视频 | 中文字幕第一页在线播放 | 美女福利视频网 | 麻豆精品国产 | 国产妇女馒头高清泬20p多 | 狠狠躁日日躁夜夜躁 | 加勒比视频在线观看 | 岛国av在线播放 | 国产又黄又猛又爽 | 亚洲品质自拍 | 亚洲福利电影 | 青青导航 | 日本精品一区 | 四虎一区二区 | 自拍偷拍三级 | 综合激情五月婷婷 | 九色亚洲 | 香蕉视频网页版 | 九草在线观看 | 欧美视频一区二区三区 | 免费的av片| 日韩人妻精品一区二区三区 | 亚洲成人黄色在线观看 | 在线免费三级 | 国产视频一区二区在线播放 | 亚洲啊啊 | 欧美精品一区二区免费 | 免费毛片大全 | 手机在线观看av网站 | 非洲黑人狂躁日本妞 | 麻豆黄色一级片 | 欧美成人秋霞久久aa片 | 国产免费久久精品国产传媒 | 黄色特级大片 | 久久久久久久影院 | 女女同性女同一区二区三区按摩 | 亚洲精选中文字幕 | 亚洲成肉网 | 久久亚洲综合色 | 在线观看国产精品一区 | 亚州综合 | 欧美一区二区三区粗大 | 国产婷婷色一区二区在线观看 |