国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當前位置:首頁 > 科技  > 軟件

gRPC?vs?REST:創建API的方法比較

來源: 責編: 時間:2023-08-14 22:00:57 383觀看
導讀譯者 | 李睿審校 | 重樓本文對gRPC和REST的特征和區別進行了介紹,這可能是當今創建API最常用的兩種方法。以下將從這兩種工具的特征開始,也就是它們是什么以及提供什么功能。然后,將根據七個方面對它們進行比較,這對現代

譯者 | 李睿YXF28資訊網——每日最新資訊28at.com

審校 | 重樓YXF28資訊網——每日最新資訊28at.com

本文對gRPC和REST的特征和區別進行介紹,這可能是當今創建API最常用的兩種方法。YXF28資訊網——每日最新資訊28at.com

以下將從這兩種工具的特征開始,也就是它們是什么以及提供什么功能。然后,將根據七個方面對它們進行比較,這對現代系統來說是最重要的7個類別。YXF28資訊網——每日最新資訊28at.com

其類別如下:YXF28資訊網——每日最新資訊28at.com

(1)底層HTTP協議YXF28資訊網——每日最新資訊28at.com

(2)支持的數據格式YXF28資訊網——每日最新資訊28at.com

(3)數據大小YXF28資訊網——每日最新資訊28at.com

(4)吞吐量YXF28資訊網——每日最新資訊28at.com

(5)定義YXF28資訊網——每日最新資訊28at.com

(6)易于采用YXF28資訊網——每日最新資訊28at.com

(7)工具支持YXF28資訊網——每日最新資訊28at.com

gRPC的介紹

當人們聽到API時,可能馬上想到REST API。然而,REST是構建API的眾多方法之一。它并不是適用于所有用例的靈丹妙藥。還有其他方法,遠程過程調用 (RPC)只是其中之一,而gRPC可能是使用RPC最成功的框架。YXF28資訊網——每日最新資訊28at.com

盡管gRPC是一種相當成熟和高效的技術,但它仍然被視為一種新技術。因此,盡管在某些用例中非常方便,但它沒有REST被廣泛采用。YXF28資訊網——每日最新資訊28at.com

本文主要介紹gRPC,并指出它可以發揮作用的用例。YXF28資訊網——每日最新資訊28at.com

什么是REST

表述性狀態轉移(REST)可能是創建公開任何類型API的應用程序的最常用方法。它使用HTTP作為底層通信媒介。正因為如此,它可以從HTTP的所有優點中獲益,例如緩存。YXF28資訊網——每日最新資訊28at.com

  • 客戶端-服務器通信
  • 無狀態通信
  • 緩存
  • 統一接口
  • 分層系統
  • 按需編碼

REST的兩個關鍵概念是:YXF28資訊網——每日最新資訊28at.com

(1)端點:表示特定資源的唯一統一資源定位符(URL);可以看作是通過互聯網訪問特定操作或數據元素的一種方式。YXF28資訊網——每日最新資訊28at.com

(2)資源:在特定URL下可用的特定數據塊。YXF28資訊網——每日最新資訊28at.com

此外,還有一個叫做Richardson成熟模型的描述——這是一個描述REST API中“專業性”程度的模型。它根據特定API具有的特征集將REST API劃分為3個級別(或4個級別,取決于是否將級別0計算在內)。YXF28資訊網——每日最新資訊28at.com

其中一個特征是REST端點應該在URL中使用名詞,并使用正確的HTTP請求方法來管理其資源。YXF28資訊網——每日最新資訊28at.com

  • 示例:用DELETE user/1代替GET user/deleteById/1

至于HTTP方法及其相關操作,如下所示:YXF28資訊網——每日最新資訊28at.com

  • GET—檢索特定的資源或資源集合。
  • POST—創建一個新的資源。
  • PUT—修改整個資源。
  • PATCH -特定資源的部分更新。
  • DELETE—刪除指定id的資源。

成熟度模型規定的遠不止這些。例如稱為HyperMedi的概念。HyperMedia將數據的呈現和對客戶端可以執行的操作的控制結合在一起。YXF28資訊網——每日最新資訊28at.com

對成熟度模型的完整描述超出了本文的范圍。YXF28資訊網——每日最新資訊28at.com

什么是gRPC?

gRPC是遠程過程調用(RPC)這個相對古老的概念的另一種實現。谷歌的開發人員創建了它,這就是為什么它的名稱里有“g”的原因。它可能是處理RPC最現代和最有效的工具,也是CNCF孵化項目。YXF28資訊網——每日最新資訊28at.com

gRRC使用谷歌公司的協議緩沖區作為序列化格式,同時利用HTTP/2作為傳輸介質數據,盡管gRPC也可以使用JSON作為數據層。YXF28資訊網——每日最新資訊28at.com

  • 方法:gRPC的基本構建塊,每個方法都是一個遠程過程調用,它接受一些輸入并返回輸出。它執行用所選編程語言進一步實現的單個操作。目前,gRPC支持4種方法:

Unary:經典的請求-響應模型,方法接受輸入并返回輸出。YXF28資訊網——每日最新資訊28at.com

②服務器流:方法接受消息作為輸入,同時返回消息流作為輸出。gRPC保證了單個RPC調用中的消息排序。YXF28資訊網——每日最新資訊28at.com

③客戶端流:該方法將消息流作為輸入,處理它們直到沒有消息為止,然后返回一條消息作為輸出。與上面類似,gRPC保證在單個RPC調用中進行消息排序。YXF28資訊網——每日最新資訊28at.com

④雙向流:該方法將消息流作為輸入,并將消息流作為輸出返回,有效地使用了讀和寫兩個消息流。兩個流都獨立運行,并且消息順序保留在流級別上。YXF28資訊網——每日最新資訊28at.com

  • 服務:表示一組方法,每個方法在服務中必須有其唯一的名稱。服務還描述了安全性、超時或重試等特性。
  • 消息:表示方法的輸入或輸出的對象。

gRPC API定義以.proto文件的形式編寫,其中包含上述所有三個基本構建塊。此外,gRPC提供了一個協議緩沖區編譯器,它從.proto文件生成客戶端和服務代碼。YXF28資訊網——每日最新資訊28at.com

用戶可以隨心所欲地實現服務器端方法,必須堅持使用API的輸入輸出契約。YXF28資訊網——每日最新資訊28at.com

在客戶端,有一個叫做客戶端(或stub)的對象——類似于HTTP客戶端。它知道來自服務器的所有方法,只處理調用遠程過程并返回它們的響應。YXF28資訊網——每日最新資訊28at.com

gRPC和REST的比較

(1)底層HTTP協議YXF28資訊網——每日最新資訊28at.com

這是第一類,可能也是最重要的一類,因為它的影響也可以在其他方面看到。YXF28資訊網——每日最新資訊28at.com

一般來說,REST是基于請求-響應的,并使用HTTP/1.1作為傳輸媒介。這里必須使用不同的協議,例如WebSocket或任何類型的流或更持久的連接。YXF28資訊網——每日最新資訊28at.com

還可以實現一些簡單的代碼,使REST看起來像消息流。更重要的是,使用HTTP/1.1 REST需要每個請求-響應交換一個連接。對于長時間運行的請求,或者當網絡容量有限時,這種方法可能會有問題。YXF28資訊網——每日最新資訊28at.com

當然,可以使用HTTP/2來構建類似REST的API;然而,并不是所有的服務器和庫都支持HTTP/2。因此,其他地方可能會出現問題。YXF28資訊網——每日最新資訊28at.com

另一方面,gRPC只使用HTTP/2。它允許通過單個TCP連接發送多個請求-響應對。這種方法可以顯著地提高應用程序的性能。YXF28資訊網——每日最新資訊28at.com

  • 結果:gRPC略有獲勝

(2)支持的數據格式YXF28資訊網——每日最新資訊28at.com

假設REST API使用HTTP/1.1的默認情況,那么它可以支持多種格式。YXF28資訊網——每日最新資訊28at.com

REST通常不對消息格式和樣式施加任何限制。基本上,任何一種可以序列化為普通舊文本的格式都是有效的。用戶可以在特定場景中使用最適合自己的任何格式。YXF28資訊網——每日最新資訊28at.com

在REST應用程序中發送數據的最流行格式無疑是JSON。XML排在第二位,因為有大量的較舊/遺留應用程序。YXF28資訊網——每日最新資訊28at.com

然而,當使用REST和HTTP/2時,只支持二進制交換格式。在這種情況下,可以使用Protobuf或Avro。當然,這種方法也有它的缺點,但在以下幾點中會詳細說明這一點。YXF28資訊網——每日最新資訊28at.com

同時,gRPC只支持兩種數據交換格式:YXF28資訊網——每日最新資訊28at.com

Protobuf 默認情況下。YXF28資訊網——每日最新資訊28at.com

JSON—當需要與原有API集成時。YXF28資訊網——每日最新資訊28at.com

如果用戶嘗試使用JSON,那么gRPC將使用JSON作為消息的編碼格式,而使用GSON作為消息格式。此外,使用JSON需要做更多的配置。YXF28資訊網——每日最新資訊28at.com

  • 結果:REST獲勝,因為它支持更多格式。

(3)數據大小YXF28資訊網——每日最新資訊28at.com

默認情況下,gRPC使用二進制數據交換格式,這顯著地減少了通過網絡發送的消息的大小:研究表明,以字節計算,大約減少了40%~50%,而從以前的一個項目中獲得的經驗表明,甚至減少了50%~70%。YXF28資訊網——每日最新資訊28at.com

以上提供了JSON和Protobuff之間相對深入的大小比較。本文作者還提供了一個生成JSON和二進制文件的工具。這樣就可以重新運行他的實驗并比較結果。YXF28資訊網——每日最新資訊28at.com

本文中的對象相當簡單。不過,一般的規則是——嵌入的對象越多,JSON的結構越復雜,它就會比Protobuf更重。50%的大小差異有利于Protobuf 是一個很好的基線。YXF28資訊網——每日最新資訊28at.com

在使用REST的二進制交換格式時,可以最大限度地減少或消除這種差異。然而,這不是最常見的,也不是最受支持的RESTful API方式,因此可能會出現其他問題。YXF28資訊網——每日最新資訊28at.com

  • 結果:默認情況下,gRPC獲勝;在兩者都使用二進制數據格式的情況下,雙方為平局。

(4)吞吐量YXF28資訊網——每日最新資訊28at.com

同樣,在REST的情況下,一切都取決于底層HTTP協議和服務器。YXF28資訊網——每日最新資訊28at.com

在默認情況下,基于HTTP/1.1的REST,即使是最高性能的服務器也無法擊敗gRPC的性能,特別是當使用JSON時添加序列化和反序列化開銷時。雖然當切換到HTTP/2時,差異似乎有所減少。YXF28資訊網——每日最新資訊28at.com

至于最大吞吐量,在這兩種情況下,HTTP都是一種傳輸媒介,因此它具有無限擴展的潛力。因此,一切都取決于正在使用的工具以及對應用程序的精確操作,因為設計沒有限制。YXF28資訊網——每日最新資訊28at.com

  • 結果:默認情況下為gRPC在同時使用二進制數據和HTTP/2的情況下,gRPC略勝一籌。

(5)定義YXF28資訊網——每日最新資訊28at.com

在這一部分中,將描述如何在這兩種方法中定義消息和服務。YXF28資訊網——每日最新資訊28at.com

在大多數REST應用程序中,只是將請求和響應聲明為類、對象或特定語言支持的任何結構。然后,依靠提供的庫來序列化和反序列化JSON/XML/YAML或任何需要的格式。YXF28資訊網——每日最新資訊28at.com

此外,目前正在努力創建能夠根據Swagger的REST API定義用所選編程語言生成代碼的工具。然而,它們似乎是在alpha版本中,所以仍然可能會出現一些錯誤和小問題,這將使它們難以使用。YXF28資訊網——每日最新資訊28at.com

REST應用程序的二進制格式和非二進制格式之間幾乎沒有區別,因為這兩種情況下的規則大致相同。對于二進制格式,只是以特定格式所需的方式定義所有內容。YXF28資訊網——每日最新資訊28at.com

此外,可以通過來自底層庫或框架的方法或注釋來定義REST服務。該工具還負責將其與其他配置一起向外部世界公開。YXF28資訊網——每日最新資訊28at.com

在gRPC的情況下,將Protobuf作為默認的并且事實上是編寫定義的唯一方式。必須在.proto文件中聲明所有內容消息、服務和方法,所以事情非常簡單。YXF28資訊網——每日最新資訊28at.com

然后使用gRPC提供的工具生成代碼,只需要實現自己的方法。在那之后,一切都應該按預期工作。YXF28資訊網——每日最新資訊28at.com

此外,Protobuf支持導入,因此能夠以一種相當簡單的方式將設置擴展到多個文件。YXF28資訊網——每日最新資訊28at.com

  • 結果:在這里沒有贏家,給出的描述和建議是,選擇最適合自己的方法。

(6)易于采用YXF28資訊網——每日最新資訊28at.com

在這一部分中,將比較現代編程語言中對每種方法的庫/框架支持。YXF28資訊網——每日最新資訊28at.com

本文作者表示,在他作為軟件工程師的職業生涯中,遇到的每種編程語言(Java、Scala、Python)都至少有3個主要的庫/框架用于創建類REST應用程序,更不用說將JSON解析為對象/類的庫了。YXF28資訊網——每日最新資訊28at.com

此外,由于REST默認使用人類可讀的格式,因此對于新手來說,它更容易調試和使用。這也會影響交付新特性的速度,并幫助用戶應對代碼中出現的錯誤。YXF28資訊網——每日最新資訊28at.com

長話短說,對REST風格應用程序的支持至少非常好。YXF28資訊網——每日最新資訊28at.com

在Scala中,甚至有一個叫做Tapir的工具。Tapir允許用戶抽象HTTP服務器,并編寫可用于多個服務器的端點。YXF28資訊網——每日最新資訊28at.com

gRPC本身為超過8種流行的編程語言提供了客戶端庫。這通常就足夠了,因為這些庫包含了制作gRPC API所需的所有內容。此外,一些庫為Java(通過Spring Boot Starter)和Scala提供了更高的抽象。YXF28資訊網——每日最新資訊28at.com

另一件事是,REST如今被認為是一個世界性的標準和構建服務的切入點,而RPC和gRPC,特別是,盡管在這一點上有點過時,但仍然被視為一種新奇事物。YXF28資訊網——每日最新資訊28at.com

  • 結果:REST被更廣泛地采用,并且有更多的庫和框架。

(7)工具支持YXF28資訊網——每日最新資訊28at.com

以上已經介紹了庫、框架和一般市場份額,所以在這一部分中介紹圍繞這兩種風格的工具。它意味著用于測試、性能/壓力測試和文檔的工具。YXF28資訊網——每日最新資訊28at.com

自動化測試YXF28資訊網——每日最新資訊28at.com

首先,在REST的情況下,用于構建自動化測試的工具被構建到不同的庫和框架中,或者是為了這個唯一目的而構建的獨立工具,比如REST-assured。YXF28資訊網——每日最新資訊28at.com

在gRPC的情況下,可以生成一個stub并將其用于測試。如果想要更嚴格,可以將生成的客戶端作為一個單獨的應用程序使用,并將其用作對實際服務進行測試的基礎。YXF28資訊網——每日最新資訊28at.com

關于gRPC的外部工具支持,需要知道:YXF28資訊網——每日最新資訊28at.com

  • Postman程序對gRPC的支持。
  • 在IDE中使用的JetBrains HTTP客戶端也可以通過一些最低配置來支持gRPC。
  • 結果一:REST獲得勝利。然而,gRPC的情況似乎有所改善。

性能測試YXF28資訊網——每日最新資訊28at.com

在這里,REST具有顯著的優勢,因為像JMeter或Gatling這樣的工具使REST API的壓力測試變得相當容易。YXF28資訊網——每日最新資訊28at.com

不幸的是,gRPC沒有這樣的支持。在當前的Gatling版本中包含了gRPC插件,所以情況似乎正在好轉。YXF28資訊網——每日最新資訊28at.com

然而到目前為止,只有一個名為ghz的非官方插件和庫。這些都很好;它只是與REST的支持級別不同。YXF28資訊網——每日最新資訊28at.com

  • 結果二:REST的勝利然而,gRPC的情況似乎有所改善。

文檔YXF28資訊網——每日最新資訊28at.com

在API文檔方面,隨著OpenAPI和Swagger在整個行業被廣泛采用并成為事實上的標準,REST再次取得了勝利。幾乎所有用于REST的庫都能夠以最小的努力或開箱即用的方式公開Swagger文檔。YXF28資訊網——每日最新資訊28at.com

不幸的是,gRPC沒有這樣的文檔。YXF28資訊網——每日最新資訊28at.com

然而,問題是gRPC是否需要這樣的工具。gRPC在設計上比REST更具描述性,因此可能需要其他文檔工具。YXF28資訊網——每日最新資訊28at.com

一般來說,帶有API描述的.proto文件比負責編寫REST API代碼的代碼更具聲明性和緊湊性,因此可能不需要gRPC提供更多文檔。YXF28資訊網——每日最新資訊28at.com

  • 結果三:REST的勝利。然而,關于gRPC文檔的問題是開放的。

總體結果YXF28資訊網——每日最新資訊28at.com

這是REST的一次重大勝利。YXF28資訊網——每日最新資訊28at.com

總結

以下是gRPC和REST比較的最終得分表。YXF28資訊網——每日最新資訊28at.com

YXF28資訊網——每日最新資訊28at.com

得出的結論是:gRPC和REST的比較結果平分秋色,各有三場勝利,沒有明顯的贏家。YXF28資訊網——每日最新資訊28at.com

因此沒有什么靈丹妙藥,用戶只需要考慮哪些類別可能對應用程序最重要,然后選擇在大多數類別中獲勝的方法。YXF28資訊網——每日最新資訊28at.com

本文作者表示,如果可以的話,他會嘗試使用gRPC,因為gRPC在他的上一個項目中運行得非常好。它可能是比原有的REST更好的選擇。YXF28資訊網——每日最新資訊28at.com

原文標題:gRPC vs REST:Comparing Approaches for Making APIs,作者:Bart?omiej ?ylińskiYXF28資訊網——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-5710-0.htmlgRPC?vs?REST:創建API的方法比較

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 三分鐘白話RocketMQ系列—— 如何存儲消息

下一篇: 用了Go匿名結構體,搬磚效率更高,產量更足了

標簽:
  • 熱門焦點
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
在线精品亚洲| 亚洲一区二区四区蜜桃| 亚洲欧洲日韩一区二区三区| 亚洲人快播电影网| 久久电影网站中文字幕| 91亚洲国产成人精品一区二三| 国产激情偷乱视频一区二区三区| 99久久99久久精品国产片果冻| 国产精品一区二区三区乱码| 国产一区日韩二区欧美三区| 国产精品一线二线三线精华| 欧美日韩国产三区| 亚洲成av人片在线观看无码| 韩国av一区| 久久高清一区| 亚洲综合国产| 葵司免费一区二区三区四区五区| 欧美老肥妇做.爰bbww视频| 国产女主播一区| 亚洲国产高清不卡| 一区二区三区在线观看动漫| 亚洲r级在线视频| 国产成人精品综合在线观看| 亚洲图片欧洲图片日韩av| 中文字幕欧美国产| 中文字幕乱码一区二区免费| 国产欧美一区二区在线| 久久激情综合网| 亚洲欧洲一区二区在线观看| 欧美xxx久久| 日本欧美在线看| 亚洲高清在线观看一区| 日韩精品一区二区三区蜜臀| 天天色天天操综合| 91小视频在线| 91精品国产入口| 亚洲国产精品久久久久婷婷884 | 亚洲一区二区动漫| 久久伊人中文字幕| 国产伦精品一区二区三区免费迷 | 国产精品99久久久久| 久久免费99精品久久久久久| 亚洲天堂网中文字| 欧美暴力喷水在线| 欧美mv和日韩mv国产网站| 九九**精品视频免费播放| 久久国产精品一区二区三区四区| 亚洲欧美日韩人成在线播放| 欧美黄免费看| 久久精品亚洲精品国产欧美 | 国产欧美1区2区3区| av一本久道久久综合久久鬼色| 欧美精品99久久久**| 蜜臀va亚洲va欧美va天堂| 麻豆9191精品国产| 一区二区三区鲁丝不卡| 极品少妇一区二区三区| 中文一区一区三区高中清不卡| 97久久超碰精品国产| 日韩你懂的在线观看| 国产大陆精品国产| 91精品国产一区二区| 国产专区欧美精品| 欧美人伦禁忌dvd放荡欲情| 色综合久久综合网| 欧美不卡一区二区三区四区| 国产精品一二二区| 日韩美女在线视频 | 国产精品国产成人国产三级| 欧美日本亚洲| 中文字幕在线一区免费| 尤物网精品视频| 一区二区三区免费在线观看| 午夜在线a亚洲v天堂网2018| 午夜精彩视频在线观看不卡| 久久精品女人的天堂av| 日本在线观看不卡视频| 欧美日韩视频在线一区二区| 国产一区二区调教| 欧美成人乱码一区二区三区| 99在线精品视频| 国产日产亚洲精品系列| 国产综合视频| 亚洲一区二区三区中文字幕| 色综合久久九月婷婷色综合| 久久精品国产久精国产| 欧美一区二区视频在线观看2020| 成人黄色小视频| 国产女人aaa级久久久级| 国语自产精品视频在线看8查询8| 亚洲欧洲日韩一区二区三区| 亚洲欧美网站| 国产麻豆9l精品三级站| 久久久精品影视| 综合分类小说区另类春色亚洲小说欧美| 免费一区视频| 欧美精品麻豆| 高清不卡在线观看| 日韩综合在线视频| 亚洲第一狼人社区| 欧美一区午夜视频在线观看 | 亚洲尤物影院| 精品成人免费| 粉嫩嫩av羞羞动漫久久久| 亚洲二区在线观看| ww久久中文字幕| 欧美性受极品xxxx喷水| 香蕉久久夜色精品| 国产日韩一区欧美| 亚洲人体一区| 国产精品一区在线观看| 亚洲经典自拍| 亚洲三级影院| 久久久久欧美| 亚洲三级色网| 国产凹凸在线观看一区二区| 亚洲一区在线免费观看| 国产精品国产自产拍高清av王其| 亚洲午夜激情网站| 亚洲电影成人| 国产精品久久久久久久久晋中| 国产ts人妖一区二区| 一区二区三区四区乱视频| 777奇米成人网| 国产毛片一区| 欧美一区二区三区四区夜夜大片| 免费高清在线一区| 国产精品久99| 日韩一级高清毛片| 玖玖精品视频| 亚洲国产片色| 国产在线一区二区| 香蕉久久国产| 色94色欧美sute亚洲线路二| 在线不卡一区二区| 91精品国产一区二区三区香蕉| 国产精品网站在线| 国产无一区二区| 亚洲午夜激情av| 日韩av一区二区在线影视| 懂色一区二区三区免费观看| 91网站在线播放| 久久欧美中文字幕| 午夜在线精品偷拍| 狠狠色丁香久久婷婷综合_中| 欧美日韩日日夜夜| 久久精品盗摄| 在线综合视频| 红桃视频国产精品| 91热门视频在线观看| 国产乱码精品一区二区三| 日韩综合在线视频| 亚洲一区av在线| 国产精品卡一卡二| 国产亚洲一区二区三区在线观看| 4438成人网| 欧美日韩亚洲综合| 欧美无乱码久久久免费午夜一区| 国产久一道中文一区| 亚洲人成久久| 国产综合网站| 欧美日韩hd| 欧美少妇一区| 欧美日韩hd| 欧美视频官网| 国产精品a级| 国外精品视频| 亚洲三级视频| 国产日韩精品视频一区二区三区| 麻豆中文一区二区| 91福利国产精品| 亚洲影院理伦片| 久久久久天天天天| 亚洲婷婷综合久久一本伊一区| 不卡一区二区三区四区| 欧美精品久久天天躁| 波多野结衣在线一区| youjizz久久| 欧美一区亚洲二区| 理论电影国产精品| 久久综合九色综合欧美98| 成人午夜精品在线| 久久影音资源网| 日韩天天综合| 精品一区二区三区视频| 欧美mv和日韩mv的网站| 91色.com| 国产精品久久综合| 伊人久久婷婷| 午夜不卡av在线| 这里只有精品99re| 国产成人免费视频精品含羞草妖精| 欧美日韩大陆一区二区| 国产风韵犹存在线视精品| 蜜臀av性久久久久av蜜臀妖精 | 91在线无精精品入口| 97se狠狠狠综合亚洲狠狠| 欧美国产激情| aa亚洲婷婷| 色狠狠一区二区|