精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Otto.de:我為什么選擇分布式垂直架構

云計算 分布式
在我們開始開發otto.de網上商店時,我們選擇了分布式垂直架構。之前的工作經驗告訴我們,一體化架構(monolithic architecture)不能夠滿足不斷增長的需求。爆發式增長的數據,持續提高的負載和對系統的擴展,所有的這些強迫我們去重新思考網站的架構。

 【譯者的話】otto.de是德國的一家網上購物網站,本篇前半部分主要介紹了幾個系統架構以及它們的優缺點,后半部分主要講解otto.de的微服務架構。

在我們開始開發otto.de網上商店時,我們選擇了分布式垂直架構。之前的工作經驗告訴我們,一體化架構(monolithic architecture)不能夠滿足不斷增長的需求。爆發式增長的數據,持續提高的負載和對系統的擴展,所有的這些強迫我們去重新思考網站的架構。

這篇文章將會描述我們的解決辦法,還有我們這么做的原因。

一體化(Monoliths)

在項目剛開始的時候,團隊通常會考慮使用什么編程語言和合適的架構。當談到服務端應用時,Java和Spring框架,Ruby on rails或者類似的框架通常會成為團隊的選擇。

選擇了語言和框架后,經過一段時間的開發,一個簡單的應用誕生了。與此同時,一體式架構(macro-architecture)毫無爭議的成為了團隊的選擇。但是,這種架構的缺點也漸漸地浮出了水面:

  • 它導致了重量級微架構(a heavyweight Micro Architecture)
  • 負載均衡限制了應用的可擴展性
  • 系統的可維護性受到影響,尤其是那些大型應用
  • 零停機部署(Zero downtime deployment)變得非常的困難,尤其是那些有狀態的應用(stateful application)
  • 多個團隊開發效率低,并且需要額外的協調

一體化架構和微服務架構

當然,這并不是說一個新的應用一開始就變得巨大而混亂。在最開始的時候,新應用結構清晰,簡單易懂,可擴展性也高,它能夠很輕松的解決需求問題。在接下來的一段時間中,越來越多的代碼被編寫。為了應對日益增長的復雜度,系統被分層,抽象,模塊,服務和框架被引入到系統中,最終變成了我們看到的樣子。

即便是中型的應用(比如說一個50000的Java應用),一體化架構也會漸漸地變得令人討厭,更不用說那些對擴展性要求較高的應用了。

最終,曾經輕量簡潔的應用將會變成下一代開發者的噩夢。

分而治之

問題的關鍵在于,如何避免這種類型的開發,并且將輕量應用好的那部分保留下來。換句話說,我們如何能夠獲得一個可持續發展的架構,這個架構在多年之后依舊能夠讓開發者保持高效開發。

在軟件的開發過程中,有許多關于結構化代碼的概念:函數,方法,類,庫,框架等等。這些概念并不是程序運行所必須的,發明他們的原因是為了幫助開發者更好的理解他們的應用。

目前軟件開發者已經理解了這些概念,一個問題接踵而來:為什么這些概念僅僅被應用于一個軟件?是什么阻礙我們將應用拆分成多個低耦合的部分?

有三件事情我們需要牢記在心:

康威定律:軟件開發最開始時僅有一個團隊,根據康威定律,因此會產生一個應用。(譯者注:可以參考圖片理解)

初始消耗:部署應用,并讓它運行起來似乎是一個非常簡單的任務。實際上,你需要建立并管理VCS代碼庫,編譯文件,構建管道,用于部署的程序,硬件,虛擬機,日志文件,監控軟件等等。所有的這些都需要花費一定的時間去處理。

操作的復雜性:大型分布式系統比一個小型的負載均衡集群更難操作。

如果我們放手不管,由多個小型模塊組成的系統并不會出現,一個巨大而混亂的系統將會取而代之。這時候,致命的問題已然出現,然而悔之晚矣。

正常情況下,一個系統是否需要被擴展,是否需要處理巨大的代碼庫在初期是非常清楚的。然后當你遇到以上提到的障礙,你要么沒嘗試解決他們,要么只能沉淪在無盡的苦果中。

在OTTO,在最開始的時候就花費了大量時間去建立4個跨職能的團隊,根據前面提到的康威定律,一個項目屬于4個團隊,最終就能產生一個由4模塊組成的應用,這樣就避免了一體化應用的誕生。

因為我們之前操作過大型的一體化應用,操作的復雜性對于我們似乎是一個可以被解決的問題---操作200個一體化應用和操作200個更小型的系統沒有太大的區別。

初始消耗可以通過標準化和自動化來克服。因為我們沒有提到云服務,你還需要做相關的基礎操作來啟動自動化服務。雖然有些麻煩,但做過一次后,一切將自動化,你會獲得巨大的便利。

可擴展性

如何將一體化應用轉變為由多個小模塊組成的應用?首先,讓我們仔細想想一個應用能夠從哪些維度進行擴展。

縱向分解(Vertical Decomposition)

縱向分解是一個非常自然而通用的方法,以至于常常被開發者所忽略。相比于把所有的功能集中到單一的應用中,我們將應用分解成了多個小模塊,它們相互獨立,互不影響。

一體化架構和微服務架構

我們可以根據業務域來分解系統。舉個例子來說,在otto.de我們就講網上商城分解成了11個不同的垂直模塊:后勤辦公室,產品,訂單等等。

每一個垂直模塊屬于一個單一團隊,它們有獨立的前端,后端和數據存儲。在模塊之間共享代碼是嚴令禁止的。當然,在特殊的情況下,如果我們需要分享代碼,我們會建立一個開源的項目來解決該問題。

因此,每個垂直模塊是一個獨立自主的系統,就像Stefan Tikov在Substainable Architecture中提到的那樣。

#p#

分布式計算

一個垂直模塊依舊可能成為一個相對大型的一體化應用,因此我們需要繼續對垂直模塊進行拆分。一種方法是將一個垂直模塊分解成更多的垂直模塊,另外一種方法是通過分布式計算將系統分解成多個模塊,不同的是這些模塊運行在他們自己的進程中,并且通過REST來傳遞信息。

一體化架構和微服務架構

在這種情況下,應用不僅僅被垂直分解,同時還會被水平分解。這種架構中,請求到達應用后,對請求的處理會被分布于多個模塊中,然后每一模塊產生的結果匯總成一個響應,發送回請求者。

這些模塊并不會共享一個數據庫架構,因為這樣做會導致模塊間的緊密耦合:數據結構的改變會使得一個模塊不能夠被獨立的部署。

分片

當系統需要處理大量的數據,或者當一個分布式的應用被操作時,分片是很恰當的選擇。比如說,分片非常適合向全球范圍提供服務的應用。

一體化架構和微服務架構

因為我們暫時沒有利用到分片這個概念,在這篇文章就不再詳細描述了。

負載均衡

每當服務器承受不了巨大的負載壓力時,負載均衡就會容重登場。通過對一個應用拷貝多次,同時利用負載均衡器將負載分解來緩解壓力。

一體化架構和微服務架構

在負載均衡中,不同實例的應用通常會分時使用同一個數據庫,數據庫因此成為了系統的瓶頸,但是我們可以通過制定良好的擴展策略來避免這個問題。相比于關系數據庫,NoSQL能夠很好的處理擴展性的問題,這也就是NoSQL能夠在軟件世界中占據一畝三分地的原因之一。

最大的可擴展性

所有以上提到的辦法能夠組合在一起,能夠達到任何級別的可擴展性。

一體化架構和微服務架構

當你沒有相應的需求時,組合的結果會變得有點太復雜。幸運地是,開發者并不需要在一開始的時候就制定龐大的計劃,相反,他們可以循序漸進,一步步朝著目標架構前進。

舉個例子來說,在otto.de,架構一開始是4個垂直模塊加上負載均衡,在過去的三年里,產生了更多的垂直模塊。在此期間,某些模塊變得非常的巨大笨重。因此,我們引入了微服務架構,同時通過擴展垂直模塊來建立分布式計算。

#p#

微服務(Microservices)

微服務最近變得非常的流行。微服務是一種架構風格,它能夠根據業務域將系統分解成多個細粒度,獨立的模塊。

在這種情況下,微服務可以是一個小的垂直模塊,或者是分布式計算機構中的一個服務。與傳統方法的不同之處在于應用的大小:一個微服務僅僅實現了一個業務域中的幾個功能,它結構清晰,一個開發者能夠很輕松的掌握它。

一個微服務非常的小,因此多個微服務能夠運行在單一的服務器上。我們對“Fat JARs”有豐富的經驗,通常能通過執行java –jar 來執行它們。如果需要的話,也能開啟一個Jetty或者類似的服務器。

為了簡化不同微服務的部署和操作問題,每一個服務器運行在獨立的Docker容器中。

REST和微服務架構是一個很好的組合,它適合于構建大型的系統。一個微服務可以負責提供REST資源,超媒體(hypermedia)可以用來解決服務發現的問題,在涉及到接口的版本控制,服務部署獨立性的情況下,媒體類型(media type)有很大的幫助。

總而言之,微服務架構有許多的好處,比如說:

  • 在微服務架構下進行開發是非常有趣的:每幾周或者幾個月,你就可能開始一個新的開發項目。
  • 由于微服務非常小,微服務架構不需要重量級框架和過多的模板代碼。
  • 他們能夠被獨立的部署。因此持續交付或者持續部署變得非常的簡單。
  • 微服務架構能夠支持多個獨立的團體同時開發。
  • 開發者能夠為每一個服務選擇最恰當的開發語言。不用擔心對項目產生影響,開發者可以嘗試新的語言或者框架。但是需要注意,這并不意味這你能夠隨意行使這項權利。
  • 因為微服務足夠小,只需消耗較少的資源就能將他們替換成新的項目。
  • 這種架構的可擴展性相比于一體化架構顯得非常的好,每一個服務都能被獨立的擴展。

微服務架構遵守敏捷開發的原則。一個不能完全滿足用戶的新特性不僅可以被迅速的創建,而且還能夠被快速的銷毀。

宏架構和微架構(Macro- and Micro-Architecture)

在微服務架構中,哪一部分將難以改變?內部模塊的擴展已經不再是關鍵問題,最難以改變的事情是有關微服務架構的決定,比如說如何將微服務整合到系統的方法,或者模塊間傳輸信息協議的選擇。

因此,otto.de嚴格區分了微架構(micro-architecture)和宏架構(macro-architecture)。微架構都是關于垂直架構或者微服務架構的內部結構,并且全部交由各自的團隊全權處理。

但是,明確宏架構的大體方向是有價值的:

  • 垂直分解:系統被分割成多個垂直模塊,每一個模塊完全屬于一個特定的團隊。模塊與模塊之間的信息傳遞禁止在用戶請求的過程中進行,而必須在后臺執行。
  • RESTful架構:不同服務之間的信息傳遞和整合只通過REST來執行。
  • 零分享架構:服務間不會通過共享可變狀態(mutable state)來進行信息交換或者分享信息。沒有HTTP sessions,沒有中央數據存儲中心,沒有共享代碼。但是多個服務的實例之間有可能共享一個數據庫。
  • 數據管理:對于每一個數據節點,只有一個系統負責管理。其他的系統只能通過REST API讀取數據,然后將需要的數據拷貝回自己的數據庫。

我們的架構已經熬過了一輪軟件開發周期,與此同時,我們開始標準化微服務使用的方式。

集成

目前為止,我已經詳細說明了許多有關系統分解的內容。但是,用戶體驗是我們的系統的最終目標,我們希望我們的應用保持一致性,感覺就像是一個整體。

因此,問題來了:我們如何能夠集成一個分布式的系統,同時讓用戶意識不到我們架構的分布特性。

超鏈接

對于前端集成,最簡單的辦法就是使用超鏈接。

每一個服務負責不同的頁面,頁面的導航通過鏈接來實現。

 

一體化架構和微服務架構

AJAX

使用AJAX的目的也很明顯,它能夠通過Javascript重新加載頁面的不同內容,并且將他們整合在特定的頁面。

主要注意的是,服務之間涉及到的依賴非常的小,服務互相之間需要對使用的URL和媒體類型(media type)保持一致性。

一體化架構和微服務架構

資源服務器(Asset Server)

當然,圖片在不同頁面的顯示也需要保持一致性。除此之外,分布式的服務需要對他們各自的Javascript庫和版本保持一致。

為了保持一致性,在我們的系統中,靜態資源,比如說CSS,JS和圖片都是通過一個中央資源服務器來進行傳輸。

在垂直架構,共享資源的部署和版本控制是一個完全不同的話題,這需要一篇獨立的文章來詳細解釋。在這里我們不做過多解釋,我們只需要記住,共享資源的同時保持服務獨立是具有非常大的挑戰性。

Edge-Side Includes

有一種不太知名的方法,它能整合不同服務的資源到同一個站點。這種方法我們稱之為Server-Side Includes或者是Edge-Side Includes。大多數的Web服務器或者反向代理都只支持這個功能。

這項技術非常的簡單:一個服務插入插入一條帶有URL的包含語句(include statement)。然后這個URL會被web服務器或者反向代理解析,代理根據URL獲取到一個響應,然后用這個響應代替頁面中的包含語句。

在我們的商城中,每一個頁面都包含了來自搜索&導航服務(SAN)的導航信息:


...


...


反向代理(我們使用了Varnish)解析了頁面,然后將URL分解出來,SAN根據URL提供相應的HTML片段。

然后Varnish代理用這個HTML片段取代包含語句,并將重新生成的頁面發送回用戶。

在這種方式下,用戶根本意識不到頁面是由多個來自不同服務的片段組成的。

數據拷貝(Data Replication)

以上提到的技術僅僅解決了前端集成問題,現在我們來談談服務端集成。不同的服務之間需要共同的數據,但是他們又不能共享同一個數據庫,因此我們想了一些辦法來處理這個問題。

數據拷貝就是一個辦法。比如說,其他的服務需要關于產品的數據,它們就會定期的向負責產品數據的垂直模塊(Product)請求數據,這樣產品數據的更新能夠很迅速的被其他服務檢測到。

我們沒有使用任何的消息隊列來向客戶端推送(push)數據。相反的,每當服務需要更新數據時,它們會輪詢(poll)Atom Feed。

值得一提的是,某些不好的事情必須犧牲服務的可用性來避免,我們在開發過程中不得不面對這個矛盾。

沒有遠程服務調用(NO Remote Service Calls)

理論上來說,在某些情況下,我們可以避免數據的拷貝,這樣服務就能夠同步使用其他的服務了。一個購物籃并不需要保存額外的產品信息,相反它可以直接向產品模塊請求數據。

我們并沒有這么做,為什么呢?

當一個系統的主要功能依賴于其它系統時,系統的可測試性受到影響。

一個緩慢的服務會影響到其它系統的請求,當請求越多,雪球越滾越大,最終影響到了整個系統的可用性。

系統的可擴展性受到了限制。

獨立的服務部署變得非常的困難。

我們長期和垂直架構打交道,我們非常明確的知道,在早期的時候,嚴格的界限會使得微服務的開發,測試,遷移變得更加獨立,方便。

經驗教訓

按照以上羅列的辦法,經過三年的工作后,我們變得經驗豐富。

回顧往事,如果我早點做這些事情,我們的一體化系統會變得更加的精細。現在,otto.de的未來屬于微服務。

原文鏈接:

責任編輯:Ophira 來源: dockone
相關推薦

2024-05-17 13:48:19

2013-05-13 10:30:26

分布式架構架構設計網站架構

2023-05-29 14:07:00

Zuul網關系統

2021-06-08 12:46:27

分布式阿里TCC

2018-11-28 16:00:41

2018-12-12 15:20:27

2019-10-10 09:16:34

Zookeeper架構分布式

2012-02-28 09:11:51

語言Lua

2021-11-05 07:18:15

分布式事務業務

2021-05-12 15:46:02

道熵分布式存儲PACS存儲

2018-11-02 14:00:20

2022-04-21 08:00:00

分布式云原生依賴管理

2015-08-03 15:48:42

Hadoop大數據

2024-03-01 09:53:34

2020-12-14 14:24:07

CAP分布式數據一致性

2025-04-18 12:08:19

2013-10-22 15:18:19

2019-01-04 11:08:38

開源分布式流存儲Pravega

2012-11-14 20:55:07

容錯服務器選型CIO

2020-02-12 15:02:39

KVM架構圖分布式
點贊
收藏

51CTO技術棧公眾號

日韩在线理论| 国内小视频在线看| 精品一区二区三区免费视频| 久久av红桃一区二区小说| 野战少妇38p| 三上悠亚国产精品一区二区三区| 国产精品卡一卡二卡三| 国产精品免费区二区三区观看 | 国产裸体视频网站| 一二三四视频在线中文| 中文字幕一区在线观看| 精品一区二区三区视频日产| 91无套直看片红桃| 国产精品尤物| 精品中文字幕视频| 免费人成又黄又爽又色| 一级日韩一区在线观看| 99r国产精品视频| 欧美亚洲天堂网| 日产精品一区二区| 精品日韩99亚洲| 天堂社区在线视频| 日本在线观看高清完整版| 久久久精品综合| 2022国产精品| 怡红院男人的天堂| 亚洲二区在线| 久久香蕉国产线看观看av| 中文字幕在线看高清电影| 天堂va在线高清一区| 欧美色综合久久| 久久精品免费一区二区| 欧美24videosex性欧美| 亚洲欧美综合在线精品| 青青草成人网| 亚洲aaaaaaa| 丁香一区二区三区| 91久久中文字幕| 亚洲专区在线播放| 久久人人超碰| 欧美在线观看网站| 日韩少妇裸体做爰视频| 国内揄拍国内精品久久| 美女av一区二区三区| 午夜激情福利电影| 欧美三级伦理在线| 亚洲欧洲高清在线| 9.1成人看片| 欧美自拍一区| 日韩成人高清在线| 性色av蜜臀av浪潮av老女人 | 国内精品视频久久| 妺妺窝人体色www聚色窝仙踪 | 澳门成人av| 日韩精品中文字幕在线不卡尤物| 欧美xxxxxbbbbb| 国产在线一区不卡| 日韩视频国产视频| 特黄特色免费视频| 成人另类视频| 日韩av在线网页| www.久久av| 精品免费在线| 久久精品国产亚洲精品2020| 欧美一级高清大全免费观看| 日韩精品专区在线影院观看| 手机看片国产精品| 国产精品色婷婷在线观看| 欧美日韩成人综合| av免费一区二区| 精品一区二区三区视频在线播放| 日韩一区二区免费电影| 国产香蕉精品视频| 欧美男男freegayvideosroom| 亚洲精品一区二区三区不| 在哪里可以看毛片| 91麻豆国产自产在线观看亚洲| 久久婷婷国产麻豆91天堂| 久久免费在线观看视频| 一区二区三区福利| 国产精品电影网站| 999久久久久久| hitomi一区二区三区精品| 日本一区二区免费看| 三区四区在线视频| 亚洲一区二区四区蜜桃| 免费男同深夜夜行网站| 97久久中文字幕| 亚洲国产一区二区三区在线观看| 日韩丰满少妇无码内射| 亚洲综合专区| 欧日韩在线观看| 一炮成瘾1v1高h| 99久久99精品久久久久久| 亚洲精品影院| www.九色在线| 88在线观看91蜜桃国自产| 精品人妻伦一二三区久| 日韩精品二区| 韩国三级电影久久久久久| 亚洲第一区av| 波多野结衣在线一区| 天堂资源在线亚洲资源| missav|免费高清av在线看| 欧美午夜免费电影| av不卡中文字幕| 日韩理论电影大全| 91国内在线视频| 精品欧美一区二区精品少妇| 日本一区二区久久| 加勒比成人在线| 91久久青草| 国产亚洲人成a一在线v站| 日本免费在线播放| 久久97超碰国产精品超碰| 久久riav二区三区| 亚洲国产精品精华素| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 国产精品视频999| 天天操天天干天天| 一区二区三区在线影院| 国产探花在线看| 精品久久成人| 日韩av电影手机在线| 男人天堂综合网| 亚洲激情图片一区| 肉色超薄丝袜脚交| 久久国产电影| 国产精品中文久久久久久久| 国产三级视频在线| 欧美日韩国产在线看| 亚洲av成人片无码| 你懂的国产精品永久在线| 成人日韩在线电影| 三区四区电影在线观看| 欧美吻胸吃奶大尺度电影| 免费看黄色的视频| 久久久蜜桃一区二区人| 久久精品一区二区三区不卡免费视频| 18video性欧美19sex高清| 欧美mv日韩mv国产网站app| 日韩成人毛片视频| 国产麻豆欧美日韩一区| 一区二区三区日韩视频| 精品国产三区在线| 欧美精品一区三区| 国内老熟妇对白hdxxxx| 国产日韩精品综合网站| 永久av免费在线观看| 欧美电影《轻佻寡妇》| 国产精品亚洲自拍| av在线日韩国产精品| 欧美中文字幕亚洲一区二区va在线| 法国伦理少妇愉情| 久久美女性网| 日本一区二区精品| 精品女同一区二区三区在线观看| 中文字幕av一区中文字幕天堂| 中文字幕制服诱惑| 中文字幕一区二区三区在线不卡| 五月花丁香婷婷| 一区二区三区在线| av一区和二区| 黄视频免费在线看| 亚洲欧美精品一区| 中文字幕永久在线观看| 亚洲图片你懂的| japan高清日本乱xxxxx| 影音先锋中文字幕一区| 久久久亚洲综合网站| 日本成人福利| 草民午夜欧美限制a级福利片| www天堂在线| 678在线观看视频| 五月激情丁香一区二区三区| 在线观看国产三级| 天堂久久久久va久久久久| 一本一道波多野结衣一区二区| 欧美做受xxxxxⅹ性视频| 蜜臀av亚洲一区中文字幕| 亚洲免费视频播放| 精品福利一区| 国产精品视频区1| 日韩av日韩在线观看| 久久米奇亚洲| 欧美精品精品一区| 国产成人三级视频| 国产一区二区三区精品在线观看| 国外成人在线直播| gogogo高清在线观看免费完整版| 欧美一级电影网站| 天堂网中文字幕| 亚洲欧美日韩综合aⅴ视频| 97人妻精品一区二区三区免| 蜜桃传媒麻豆第一区在线观看| 日本a在线天堂| 欧美日韩高清| 国产一区二区久久久| 欧美网站免费| 欧美亚洲另类视频| а√资源新版在线天堂| 亚洲欧美日本另类| 中文字幕日韩第一页| 玉足女爽爽91| 91成人精品一区二区| 国产成人av影院| 91国产精品视频在线观看| 精品av久久久久电影| 亚洲精品一区二区三区樱花 | 成人9ⅰ免费影视网站| 91伊人久久| 2019中文字幕免费视频| 性欧美1819sex性高清大胸| 国产亚洲欧美aaaa| 亚洲 欧美 自拍偷拍| 欧美精选在线播放| 亚洲AV无码成人精品区东京热| 亚洲一区二区三区在线播放| 亚洲精品卡一卡二| 久久精品一区二区三区av| 国产精品久久久久久亚洲色 | 亚洲欧美日本日韩| 国产美女作爱全过程免费视频| 99久久99热这里只有精品| 日韩国产在线一区| 欧美女优在线视频| 久久人人九九| 久久精品色综合| 99一区二区三区| 国产精品久久免费视频| 成人高h视频在线| 国产原创一区| 国产欧美日韩视频| 欧美色片在线观看| 国产精品国产三级国产专播精品人| 自拍在线观看| 日本精品久久中文字幕佐佐木| 九九精品调教| 国模吧一区二区三区| 国产丝袜精品丝袜| 欧美激情免费看| heyzo一区| 午夜欧美大片免费观看| mm视频在线视频| 国内精品在线一区| 日本在线啊啊| 5252色成人免费视频| 色屁屁www国产馆在线观看| 欧美猛交免费看| av中文字幕在线观看第一页 | 九一免费在线观看| 国内一区二区三区| aa在线观看视频| 久久aⅴ乱码一区二区三区| 欧美伦理视频在线观看| 美腿丝袜亚洲色图| 免费黄频在线观看| 国产精品18久久久久久vr| 性活交片大全免费看| 91丨九色丨国产丨porny| 熟女俱乐部一区二区| 国产精品女主播在线观看| 97成人资源站| 亚洲成a人片在线观看中文| a v视频在线观看| 色婷婷综合五月| 国产一区二区在线播放视频| 日韩欧美国产一二三区| 亚洲 美腿 欧美 偷拍| 在线观看久久av| 色图在线观看| 庆余年2免费日韩剧观看大牛| 成人1区2区| 99久久综合狠狠综合久久止| 亚洲最好看的视频| 一区二区三区三区在线| 亚洲视频一区| 日韩一级片播放| 国产伦精品一区二区三区视频青涩| 成人啪啪18免费游戏链接| 久久亚洲一区二区三区明星换脸| 亚洲毛片亚洲毛片亚洲毛片| 亚洲一二三四在线| 国产一区二区视频免费| 91精品免费在线观看| 午夜视频福利在线观看| 少妇高潮 亚洲精品| 18video性欧美19sex高清| 国产精选久久久久久| 97久久超碰| 一区二区视频在线观看| 99日韩精品| 午夜激情视频网| 久久无码av三级| 久久久久无码国产精品| 欧美三级视频在线| 香港三日本三级少妇66| 久久久精品久久久| 玛雅亚洲电影| www.成人av.com| 日韩在线不卡| 精品一卡二卡三卡| 国产91丝袜在线18| 黄色激情小视频| 一本到不卡精品视频在线观看| www日本视频| 久久精品亚洲精品| 日韩不卡免费高清视频| 国产一区二区在线网站| 亚洲91视频| 一区二区成人网| 久久免费午夜影院| 日本中文字幕免费| 91精品久久久久久久久99蜜臂| 国产小视频免费在线观看| 久久久久久欧美| 国产区一区二| 中文字幕一区二区三区四区五区六区| 一区二区国产在线观看| 中文字幕视频观看| 亚洲视频网在线直播| 中文字幕av无码一区二区三区| 亚洲欧美在线播放| 国产在线88av| 国产在线精品一区二区中文| 国内视频精品| 中文字幕制服丝袜| 亚洲欧美成人一区二区三区| 亚洲一级片免费看| 一区二区三区 在线观看视| 天堂网在线最新版www中文网| 国产日韩久久| 亚洲成人资源| 男女性杂交内射妇女bbwxz| 一区二区三区在线观看动漫| 国产浮力第一页| 久色乳综合思思在线视频| 高清一区二区三区av| 中文一区一区三区免费| 久久99热国产| 国产精品99久久久久久成人| 91精品蜜臀在线一区尤物| av电影免费在线观看| av激情久久| 在线播放亚洲| 亚洲一区二区三区四区五区六区| 香港成人在线视频| 亚洲av片在线观看| 91国自产精品中文字幕亚洲| 免费观看成人www动漫视频| 日本wwww视频| 国产欧美一区二区精品秋霞影院 | 日韩视频永久免费| 免费污视频在线| 好看的日韩精品| 久久久久久夜| 99成人在线观看| 欧美本精品男人aⅴ天堂| 精品三级久久| 神马影院一区二区| 激情综合五月天| 久久这里只有精品国产| 亚洲国产小视频在线观看| 欧美日韩五码| 免费在线观看污污视频| 成人免费毛片高清视频| 狠狠人妻久久久久久综合| www.久久撸.com| aaa国产精品视频| 成人一级片网站| 1024亚洲合集| 男人天堂手机在线观看| 国产精品99一区| 欧美日韩一区二区高清| 国产交换配乱淫视频免费| 欧美裸体一区二区三区| xxx.xxx欧美| 日韩三级在线播放| 国产精品资源在线| wwwxxx亚洲| 久久久91精品国产| 欧美人与动xxxxz0oz| 中日韩av在线播放| 亚洲成人av福利| 中文字幕日本在线观看| 成人欧美一区二区三区在线观看 | 国产精品青青在线观看爽香蕉 | 亚洲四区在线观看| 手机在线观看免费av| 国产欧美一区二区三区久久| 99精品视频免费全部在线| 91免费公开视频| 亚洲区一区二区| 99精品国产一区二区三区2021| 男人舔女人下面高潮视频| 亚洲综合久久av| 成年网站在线| 国产私拍一区| 国产呦精品一区二区三区网站| 久久中文字幕免费|