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

前端開發者也可以懂的基礎 System Design

開發 前端
今天帶來 Kyle Mo 大佬的一篇關于 System Design 好文,希望對大家有所幫助,早期成為大神。


大家好,我是小智,今天帶來 Kyle Mo 大佬的一篇關于 System Design 好文,希望對大家有所幫助,早期成為大神。PS:文文已經過授權。

前陣子在與朋友一起籌劃的后端開發線上分享會 BESG 有成員分享了 TinyURL 的系統設計 (System Design),剛好也看到了知名 YouTuber Terry 關于 Google 系統設計面試的影片,了解到在美國的資訊業,不論你是前端、后端、資料工程師還是 DevOps,System Design 系統設計幾乎都是面試時的必考題。

有人可能會覺得,反正那是國外的狀況,我在國內找前端的工作,不需要會系統設計也可以錄取吧?是沒錯,以目前國內的前端業界來看,面試大多是不會考系統設計的,但是其實學習系統設計并不僅是為了應付面試,更是學習如何應付復雜系統的能力,也是從 Junior 開發者過渡到 Senior 開發者的關鍵。就算身為前端開發者,也會需要面對越來越復雜的系統,學會基本的系統設計思維除了能讓你更了解系統的整體架構外,同時也加強在開發時和其他角色溝通與協作的能力。

我是一個剛要進入社會,準備開始自己第一份正職的菜鳥工程師,主要 focus 在 Web 前端技術,但也熱衷于學習后端開發與云端技術。我想透過這篇文章,以自己是前端開發者的角度出發,去介紹我認為前端開發者也該擁有的基本系統設計思維,也就是說主要會介紹系統設計最表層的元素,而不會去深入探討每一個技術的深入實作,目標在廣而不在深。

要知道系統設計是一門非常非常非常複雜的技術(說了三次,應該了解到底多複雜了??),絕對不是我這樣的菜雞可以精通的,因此這篇文應該會蠻入門也蠻淺的,主要目的是希望和我一樣剛入行的前端開發者在看完文章后,也能擁有最基本的系統設計思維,除了處理 UI 畫面與瀏覽器相關的眉眉角角外,應該也要理解一個合格的系統在背后是怎麼運作的。

本篇文章的流程會是這樣的,首先我會把我認為系統設計的重要元素列出來,并對每個元素進行更近一步的介紹,等讀者有了大概的認知后,再分享我認為在面對系統設計時可以採用的思維走向,最后再以一個實際的系統設計范例按照先前介紹的思維走向來解決問題。

以分散式系統為設計目標

雖然我們知道分散式相對于單機來說復雜許多,在單機都處理不好的狀況下去碰分散式系統幾乎是死路一條,不過單機的 Vertical Scaling 是有侷限性的,并且 Single Point Of Failure 的問題也讓系統充滿風險,要建立一個“可靠的大型系統”,採用分散式架構似乎是無法避免了。況且在遇到系統設計面試問題時,通常都會預設要設計的系統是高流量的,畢竟設計一個只能承受低流量的系統是毫無意義的,因此本篇文章討論的系統設計都會以分散式系統為出發點。

我們希望設計出來的系統能擁有哪些特性?

Scalability 可擴展性

當系統遇到的流量漸漸變大時,我們會希望系統的服務器或儲存空間也能夠跟著擴展,來避免無法負荷的狀況。

用白話一點的方式來比喻的話,想像今天你跟 4 個朋友約好要出去玩,你們租了 Toyota 的四人座 Vios,不過另外 2 個人看到你們要出去玩,就堅持要你們帶上他們,當然現在 6 個人是塞不下小小的 Vios 的,你們只好換租可以載 6 人的 Luxgen U6。

這就很像是系統設計垂直擴展(Vertical Scaling) 的概念,藉由提升單機 CPU 或內存來提升效能。然而這樣的提升是有限制的,想像越來越多朋友想跟你們一起出去玩,你說到了 30 個人,你還可以換包游覽車,那 300 個呢?(別跟我說包火車)這時可能就得放棄全部人都擠一臺車的方式,改為租用多臺游覽車來載運所有人。這在系統設計上稱作水平擴展(Horizontal Scaling),用多臺機器來分流處理單機可能無法負荷的流量,達到系統的可擴展性。

Reliability 可靠性

可靠性代表一個系統在它開始執行之后到某個時間點,系統正常執行的機率,也就是系統無故障執行的概率。

Availability 可用性

可用性是一個容易跟可靠性搞混的指標,它的定義為系統在面對各種異常時可以正確提供服務的能力,更嚴謹的定義為“系統服務不中斷運行時間占實際運行時間的比例。””如果以公式來看:

Availability % = (available time / total time) *100

因此可用性跟容錯性是相關聯的,在單機架構下,機器炸了,使用者也 access 不到服務了,而分散式的狀況下即使有機器 shutdown,也會由其他機器馬上遞補上,對用戶來說服務一直是可用的,這也是為什麼說分散式系統可以提升可用性的原因。

Reliability 與 Availability 這兩個指標常常讓人搞混,一個 reliable 的系統通常也會是一個 available 的系統,Availability 雖然可以透過分散式系統的冗馀電腦 (redundant) 來達成,但卻不能保證這個系統是 reliable 的。

Efficiency 高效率

代表這個系統的效率如何,一般常見的指標有系統的延遲(Latency)與吞吐量(Throughput).

Latency 延遲:執行一個操作要花費的“時間長度”。以我自己較熟悉的 web 領域來說,Latency 指的是使用者發出請求后,等待 server 接收請求,進行處理后回傳給使用者的總花費時間。

Throughput 吞吐量:以一個時間區間作為單位,單位時間內可以執行“幾次”操作,或運算的“次數”。同樣以 web 來舉例,Throughput 指的是單位時間內服務器可以接收的請求量。

要建構一個高效率的系統,我們會希望系統可以達到 **Low Latency **與 High Throughput。

Manageability 可管理性

故名思義,代表一個系統是不是方便管理,是不是能快速迭代新功能?是不是能夠快速追蹤 bug?或是能不能把 infrastructure 抽象化,讓應用工程師可以專注在程式邏輯的開發。

System Design Common Components & Topics

無論是面對系統設計的題目或是自己在思考系統的架構,有些技術是建構分散式系統時非常重要的元素,了解這些元素將會使我們對于分散式系統更加了解,在系統設計時也更得心應手,這些常見的元素有:

Load Balancer Web Server Database (SQL vs NoSQL) Schema Design Caching Replication Partitions Sharding Read/Write Splitting Algorithm Queue Consistent Hashing Proxy CAP Theorem

如果要每個技術或概念都介紹的話應該得花不少篇幅,因此這邊如果讀者對某些概念不熟悉,就麻煩自行研究囉!

面對系統設計時的思維走向

系統設計是一個開放式的問題,沒有所謂一定正確且標準的解法,不管哪種方法幾乎都會帶來 trade off,所以我接下來提供的思維走向也許不是最好最標準的,也不一定適用于所有的情形,但我認為它可以幫助我們快速建構出系統的基本雛形與軟硬體需求,如果你對系統設計毫無想法,不妨試試看參考這個思維走向,再根據自己的需求去做細部的調整。

Step.1 弄清系統需求

這是最基本卻也是最重要的一步,弄清系統的需求后,你才知道自己到底要設計什麼,如果是在系統設計的面試,這也是應該要盡早跟面試官確定的事。系統需求一般來說可以分為兩種類型:

  • Functional Requirements
  • Non-Functional Requirements

Functional Requirements 代表系統該要有的功能,以 YouTube 系統舉例,使用者可以創建自己的頻道,也可以去訂閱別人的頻道,在訂閱頻道發布新影片時會收到通知…等等你想得到的各種功能,都算在 Functional Requirements 的范疇裡。

Non-Functional Requirements 顧名思義是一些跟系統功能較無直接關連的需求,例如系統需要有高可用性、系統延遲需要非常低、需要嚴格的資料一致性…等等。

Step.2 關于系統流量、容量、網絡帶寬等指標的粗略計算

對系統的流量、儲存空間、網絡做初步的估算,對于后面要考慮 scaling、caching、load balancing 時是有幫助的,再者對這些指標進行評估,也讓我們可以更好的掌握系統的資源成本。

同樣以設計 YouTube 來舉例, 我們可以先估算系統大約會有多少使用者,其中又有多少 DAU (Daily Activated User),估算一天大約會有幾部影片上傳,影片建立跟讀取的比例是多少…等等,這是比較偏向系統流量的考量。

下一步可以估算系統的儲存容量,例如每年儲存影片的總容量大約是多少?儲存的資料會存活多久?如果系統有實作 Caching,Memory 的用量又大概是多少?

而最后網絡貸款也是我們可以事先預估的指標。

如果讀者不知道怎麼計算這些指標也不要擔心,在下一個章節會以設計 Instagram 為范例跑一次系統設計流程,到時候會示范估算這些指標的方式。

Step.3 定義 System Interface

當我們釐清系統的需求后,就可以按照需求來粗略規劃系統的 API,這也可以讓我們確認先前訂出的系統需求并沒有定義錯誤。這時可以先思考系統要採用哪種 API 架構,例如 REST APIs、SOAP、GraphQL,再來可以簡單定義出有哪些 API endpoints,以 YouTube 來舉例:

uploadVideo(user_id, video_content, video_location, user_location, ……) addVideoToFavorite(user_id, video_id, timestamp, …….)

Step.4 定義 Data Model | DB Schema

在 System Design 的前段及早定義出 DB Schema 將幫助我們更清楚系統的資料流,我們應該清楚不同 Entities 之間是怎麼互動與溝通的,以 YouTube 為例,Data Model 可能是這樣子:

User: UserID, Name, Email, DoB, CreationDate, LastLogin, …. Video: VideoID,VideoLink, VideoLocation, NumberOfLikes, TimeStamp, … .….

在這個階段也可以先思考究竟系統適合哪種資料庫?RDBMS 還是 NoSQL ? 還有使用者上傳的影片與圖片,又適合儲存在哪呢?

Step.5 High-level design

這步驟是系統的 High-level 設計,可以在一張圖表畫出系統大概由哪些 Components 組成,因為先前步驟已經確定了系統需求,也對流量做了初步估算,所以在這個步驟我們可以設計系統需不需要做分流、讀寫分離,以 YouTube 的例子來說,我們可能還需要一個分散式的檔案儲存系統來存放影片。

Step.6 System Detailed design

先完成 high-level 的系統設計,接下來才進入系統的 detailed design,如果是面對系統面試,在時間有限的狀況下,可以針對前面 high-level design 畫出的架構圖裡挑出兩三個 components 來說明就好,而這邊建議可以跟著面試官的引導走。(如果不是在面試,當然你就有大把時間可以好好對每個環節做 detailed 的設計了)

針對特定的 component 或 topic,我們可以提供兩三種可行的方法,并思考它們各自的優缺點,這也是個開放性的問題,重要的是你要能清楚每種方式的 trade off,并找出最“適合”自己系統的做法。

  • 在需要存取大量資料的情況下,我們該怎麼把資料做 partition 并且存到不同資料庫伺服器裡 ?
  • 我們應該在系統的哪些 layer 加入快取服務 ?
  • 系統中哪些部分比較需要做 load balancing ?

Step.7 找到系統可能瓶頸或 trade off 并嘗試給出解決方案

如果是在系統設計的面試中,在做完系統架構設計之后,可以針對自己設計的系統提出一些可能的瓶頸,畢竟沒有所謂完美的系統架構,能夠講出自己所設計的系統有哪些缺陷或瓶頸,代表你對系統整體的掌握度是高的,也許在面試官的眼中是加分的行為(不過這邊可能得注意挖坑給自己跳的狀況)。

嘗試設計一個 Instagram 吧!

雖然知道了面對系統設計可以採取的思路,但我相信各位讀者看到這裡還是覺得十分抽象吧?那不如我們就按照前面的思考步驟實際設計一個 IG 系統體會看看吧!(下面代稱這個系統為“Fake IG”好了??)

(大家應該都知道 IG 是什麼吧!???)

Step.1 理清系統需求

前面有提到可以針對“Functional Requirements”與 “Non-Functional Requirements”來區分系統需求

Functional Requirements:

  • 使用者可以上傳照片、影片,另外也可以讀取與下載
  • 使用者可以追蹤其他使用者以觀看最新貼文
  • 使用者可以根據 tags 來搜尋文章
  • 當使用者刷新頁面后,系統會根據使用者追蹤的人顯示該些用戶的最新貼文

Non-Functional Requirements:

  • Fake IG 系統需要具有高可用性(high availability)
  • 刷新頁面看最新貼文時可以允許短暫的延遲
  • 在某些狀況下,系統的一致性可以犧牲,例如使用者貼文的愛心數量(每個使用者看到的數量即使不一樣,也不會造成什麼影響)
  • 系統希望可以擁有高可靠性(high reliability),使用者上傳的照片、影片不能夠遺失

我們都知道實際上 IG 的功能絕對比上面列出來的還要多,例如在照片上標記其他使用者、限時動態…等等,這些較進階的功能可以自己思考要不要列出。(設計出基本功能比較重要)

Step.2 關于系統流量、容量、網絡帶寬等指標的粗略計算

關于系統的流量,我們可以先假設高一點,畢竟設計能面對高流量的系統才有意思。假設我們的 Fake IG 系統的使用者總人數有 5000 萬人,當然裡面不乏許多早就沒在使用的幽靈用戶,所以這邊假設每天仍然活躍的用戶(daily active users, DAU)有 100 萬人。

接下來我們先忽略使用者可以上傳影片這個行為,先限定使用者只能夠上傳照片,不然要考慮的因素實在太多了。假設一天大約有 150 萬張照片會被上傳,平均一張照片的檔案大小為 250 KB,那麼儲存一天中新上傳的照片總共需要的容量為

1.5M * 250KB ~= 375GB

如果將時間拉遠來看,10 年下來存放照片需要的容量為

375GB * 365(days) * 10 ~= 1368.75TB

當你在后面的步驟定義好 DB Schema 后,也可以再回過頭來用同樣的方式估算資料庫要儲存的資料總大小,例如我們的系統一定會有儲存用戶資訊的 User Table ,而它的欄位與空間如下

UserID (4 bytes) + Name (20 bytes) + Email (32 bytes) + Birthday (4 bytes) + CreationDate (4 bytes) = 64 bytes

先前有假設 Fake IG 的使用者總人數有 5000 萬人,因此儲存用戶資訊的 total storage 約為:

50M 64 ~=3.2GB*

其他的 DB Schema 與上傳圖片使用的 Network Bandwidth 也可以採用類似的方法估算需要的容量。

Step.3 定義 System Interface

規劃系統 API 的步驟,因為是一個十分開放式的問題,答案也不太會影響接下來的步驟因此這邊就不多花篇幅說明。

Step.4 定義 Data Model | DB Schema

定義出 Data Model 可以讓我們清楚數據的關聯與數據的流動,在未來要做 data sharding 或 partitioning 時也會比較容易。在 Fake IG 系統中,我們先假設只需要先考慮使用者與用戶上傳的照片就好(不然我這邊會寫不完,還請高抬貴手),在學生時期十分認真修資料庫課程的你可能會馬上畫出以下的數據庫關聯圖

畫完圖后你可能會覺得這個 use case 還蠻適合使用如 MySQL 的 RDBMS 的,畢竟數據是有 join 的需求的。不過 RDBMS 在 Scaling 上是非常非常複雜且困難的,例如數據一致性的處理方式也與單機時大不相同。而使用 NoSQL 其實也是可行的,雖然可能需要一些額外的 table 來儲存數據的關聯 (例如 UserPhoto),不過在 Scaling 上卻較為簡單。我也沒辦法告訴你,使用 RDBMS 還是 NoSQL 好,它們各有各的優缺點也有各自適用的時機,因此這個問題也算是開放式的,應該在多深入了解后再做出選擇。

另外像照片影片這種資源,一般會需要像是 AWS S3 這樣的 Distributed File Storage,而在我們的數據庫中則只存圖片或影片在 file storage 的 link 還有其他的 meatdata。

Step.5 High-level design

當然我們也不一定要畫出整個系統的架構圖,尤其是在面試的話,我們得在有限的時間內盡量 focus 在系統的重點部分,以 Fake IG 來說我們先試著設計使用者上傳照片與讀取照片的功能。

以 high-level 的角度來看 Fake IG 的照片系統,大致上會有兩種情境,也就是用戶上傳照片與讀取照片,所以我們會需要一臺 application server 來處理使用者的讀寫 requests,另外會需要一個如 AWS S3 一樣的分散式 file Storage 來儲存照片,另外也會再開一個 database 來儲存照片相關的 metadata。

Step.6 System Detailed design

不過仔細思考就會知道上傳照片相比讀取照片所耗費的時間會多出更多,因為上傳照片可能涉及了硬盤的寫入,也不像讀取一樣可以加一層快照層。通常 web server 是有連線數量的限制的,如果上傳照片的過程太耗時,可能會占用 web server 的連線請求,導致要讀取照片的 request 被卡住,造成響應的延遲。要處理這個 bottleneck 的其中一種方式就是將讀取與上傳拆成兩個獨立的 server 來分別處理請求,而負責上傳照片的 server 還能搭配 message queue 來消化請求。這樣的做法還有一個好處就是兩個服務可以依照需求各自 Scale 與 Opimize。

對于 Availability 與 Reliability,也可以考慮為系統的各個 component 加入 replica service,這樣 horizontal scaling 的結果是可以避免 single point of failure,在其中一個服務節點掛掉時仍能保持系統可用性,搭配 Load Balancer 也可以做到流量的分流,降低系統的延遲。

提到 Load Balancer,它的目的是達成 horizontal scaling,不過它也可能會有 single point of failure 的風險,因此 replica 也可以應用在它上面。就算是只需要一個 instance 來運作的服務,也可以為其建立 redundant secondary copy,這個 copy 不會 serve 任何的流量,卻可以當作備胎,在主服務掛掉時立即取代它的工作成為 master node。

同樣的 Scaling 思維也適用于儲存服務例如 Fake IG 使用的 File Storage 與 Database,畢竟我們不希望系統出現檔案或資料遺失的狀況,因此可以為 Database 與 File Storage 加 backup server,讓數據也可以避免單點失效后遺失的問題。

不過還是得呼吁一下,加 replica services 未必能改善所有性能或其他的瓶頸,再來成本也是需要考量的一個元素,因此還是得依照需求謹慎評估是否需要 scaling,需要的話也要謹慎評估 scaling 的程度。

更進一步可以思考 database 數據是不是需要 Partitioning 或 Sharding,前者是在同一個數據庫中將 table 拆成數個小 table,后者則是將 table 放到數個數據庫中。

Partitioning 的 table 與 schema 可能會改變,Sharding 的 schema 則是相同,但分散在不同數據庫中,Partitioning 是為了分散單表的壓力,Sharding 則是分散單庫的壓力,實際上還是要依照需求找出適合當前系統的方式。

以 Fake IG 來說,如果真要選擇我可能會選擇比較容易擴展的 Sharding,不過 Sharding 也帶來相當多的問題例如橫跨不同 shards 的 transaction、rollback、schema change、join、每個 shard db 還要另外去做 backup……等等。

如果選擇了 Sharding 的方式,那麼 Shard 時依賴的 key 就很重要了,一般來說可以分為 Range-based 與 Hash 兩種方式(如果完全不知道 Sharding 的讀者可以參考我之前的筆記文章),假設我們以 userId 來作為 shard 的 key,那可能會出現 hot user 造成某一個數據庫 loading 過重的問題(想想那些在 IG 上追蹤人數破億的全球巨星,一天不知道會有多少使用者去瀏覽他們的文章呢,那麼存取這些明星數據的數據庫可能流量就會比其他 instance 還要大很多)。

總之我覺得 Sharding 的複雜度還有坑真的是挺多的,也許在一開始得先考慮清楚系統是不是真的需要 Sharding,如果在面試提出要做 Sharding 或 Partitioning,也要做好萬全準備,以免只是挖更多坑給自己跳。

當然 Caching 也是一個必定要考慮的機制,因為 Fake IG 會產生許多圖片,而這些資源非常適合暫存在離 end users 更接近的 CDN 裡。除了 CDN Cache,也可以在數據庫前加一個例如 Memcache 的快照服務器,用來暫存一些較常被抓取的資料。

關于到底要存哪些數據到快照這個問題,我們不可能把所數據都放到快照裡,根據“80–20 Rule”,80% 的流量可能都來自于 20% 的 hot data,因此我們可以找出較常被 user 存取的 20% photo 與 metadata 數據存到緩存中。

而快照是需要一些清除策略(cache eviction policy)的,不然無限增長的狀況下很容易就沒有快照空間了。在 Fake IG 系統中,我覺得 LRU Cache (Least Recently Used Cache)就還蠻適合的,當要清除快取空間時,可以先從近期最少被存取的數據開始移除。

總結

雖然說身為前端開發者,在求職過程甚至是整個職涯都有可能不會碰到系統設計相關的問題,不過因為我將自己定義為雜食性的軟體工程師,遇到有興趣、有挑戰性的技術我都想學,再加上自己一直有個不切實際的硅谷夢,所以依然深信自己未來某一天也會遇到系統設計的挑戰。而自己也的確在接觸這些內容后對整個系統應用架構有了更進一步的了解,所以我非常推薦前端開發者也可以嘗試了解最基礎的系統設計。

作者:HannahLin 來源:medium

原文:https://medium.com/starbugs/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC%E8%80%85%E4%B9%9F%E5%8F%AF%E4%BB%A5%E6%87%82%E7%9A%84%E5%9F%BA%E7%A4%8E-system-design-5468e0f43033

責任編輯:姜華 來源: 大遷世界
相關推薦

2019-03-12 10:38:18

前端開發Nginx

2018-10-29 10:08:01

2017-01-16 13:15:19

前端開發者清單

2015-11-24 09:17:01

產品設計UI

2021-04-08 10:40:24

前端工具代碼

2012-08-14 17:14:50

瀏覽器IE6

2014-08-07 10:13:43

谷歌Material De設計規范

2012-06-13 01:23:30

開發者程序員

2013-03-11 14:54:03

硅谷移動開發者推廣

2021-04-01 07:52:57

前端開發技術熱點

2018-01-08 10:39:17

前端技術框架

2015-03-10 09:23:21

前端開發Sublime插件Sublime

2013-10-08 10:42:27

前端開發開發

2013-08-08 10:26:08

前端開發Web

2017-06-26 15:32:59

前端編譯原理語言知識

2015-07-29 09:53:57

前端開發總結

2021-12-15 20:06:48

ReactJSSentry開發者

2023-12-04 07:06:11

2020-04-03 09:00:00

微服務前端架構

2011-12-01 15:48:13

Web
點贊
收藏

51CTO技術棧公眾號

99久久婷婷国产综合精品| 国产香蕉久久| aa级大片欧美| 国产精品久久激情| 中国毛片直接看| 欧美韩一区二区| 在线观看成人免费视频| 无颜之月在线看| 飘雪影院手机免费高清版在线观看| 日本视频一区二区| 欧美精品成人91久久久久久久| free性中国hd国语露脸| 亚洲视频资源| 欧美日韩中文在线| 日本高清视频免费在线观看| 日本精品专区| 国产宾馆实践打屁股91| 国产精品久久久久久久久影视| 国产一级二级毛片| 青草国产精品| 亚洲欧美日韩直播| 国产精九九网站漫画| 91超碰碰碰碰久久久久久综合| 亚洲一区二区av在线| 欧美一区二区三区在线免费观看 | 韩国在线视频一区| 亚洲无亚洲人成网站77777| 麻豆网站免费观看| 欧美色网在线| 亚洲成av人综合在线观看| 国产亚洲精品超碰| 久久精品国产一区二区三区 | 久久综合狠狠综合| 99久久自偷自偷国产精品不卡| 亚洲av综合一区| 国产欧美短视频| 久久久久久久爱| 国产精品成人免费观看| 欧美gvvideo网站| 亚洲人成自拍网站| 菠萝菠萝蜜网站| 成人高潮a毛片免费观看网站| 欧美久久高跟鞋激| 日日噜噜噜噜久久久精品毛片| 黄色漫画在线免费看| 亚洲午夜在线电影| 欧美日韩激情四射| 成年人黄视频在线观看| 亚洲三级免费电影| 影音先锋成人资源网站| 精品视频在线一区二区| 国产精品国产三级国产| 亚洲国产日韩欧美| 成人午夜影视| 国产精品久久久久影院色老大| 日韩国产精品一区二区| 草碰在线视频| 国产精品美女久久久久久| 性欧美.com| 亚乱亚乱亚洲乱妇| 中文字幕一区二区三区不卡| 日韩欧美一区二区视频在线播放 | 中文字幕精品三区| 亚洲精品影院| 成人黄视频在线观看| 亚洲免费av高清| 欧美a级免费视频| tube8在线hd| 欧美日韩国产在线看| 亚洲自偷自拍熟女另类| 韩国主播福利视频一区二区三区| 欧美丝袜第一区| 热久久99这里有精品| 一区二区三区欧美成人| 91网在线播放| 亚洲精品国产精品乱码不99| 成年人网站国产| 午夜激情在线播放| 欧美日韩一区二区在线视频| 亚洲精品www.| 婷婷视频一区二区三区| 亚洲精品久久久久国产| 99久久人妻无码精品系列| 欧美日韩黑人| 欧美大片在线看免费观看| 日本中文字幕在线免费观看| 久久久久国产精品一区三寸| 国产精品亚洲欧美导航| 国产黄色一级大片| 99久久精品99国产精品| 视频一区国产精品| 污视频网站在线免费| 欧美色视频日本版| 天天影视色综合| 国产精品久久久久av蜜臀| 亚洲欧洲日产国码av系列天堂| 黄色裸体一级片| 欧美午夜久久| 国产精品成人一区二区三区吃奶| 国产精品人妻一区二区三区| 成人午夜av影视| 五月婷婷综合色| 免费在线国产视频| 欧美日韩综合在线免费观看| 亚洲少妇一区二区三区| 激情婷婷综合| 欧美精品九九久久| 中文字幕永久在线视频| av福利精品导航| 正在播放91九色| 福利影院在线看| 欧美精品免费视频| 天天躁日日躁aaaxxⅹ | 中文综合在线观看| 国产午夜视频在线播放| 麻豆一区二区三| 久久本道综合色狠狠五月| 国产在线高清视频| 91成人免费网站| 欧美肉大捧一进一出免费视频| 日本一级免费视频| 亚洲国产国产| 欧美精品久久久久久久久| 国产一区二区三区四区视频| 久久日韩粉嫩一区二区三区| 国产传媒久久久| 亚洲精品自拍| 日韩中文字幕精品| 91丨九色丨海角社区| 99re热这里只有精品免费视频| 欧美h视频在线观看| 福利精品一区| 一区二区三区视频免费| 亚洲av中文无码乱人伦在线视色| 国产高清成人在线| 青青视频免费在线观看| 亚洲爱爱视频| 亚洲欧美国产精品专区久久 | 国产精品hd| 亚洲qvod图片区电影| 亚洲视频tv| 欧美在线你懂的| 亚洲自拍偷拍图| 先锋a资源在线看亚洲| 精品一卡二卡三卡四卡日本乱码 | 日本精品一区二区三区在线播放视频| 亚洲国产精品国自产拍久久| 亚洲精选免费视频| 中文字幕第66页| 欧美激情综合色综合啪啪| 91精品婷婷国产综合久久蝌蚪| 蜜桃视频在线观看www社区 | 日韩av电影中文字幕| 青青草免费在线视频| 欧美视频精品一区| 国产 欧美 在线| 日韩专区一卡二卡| 色噜噜狠狠一区二区三区| 国产精品久久久久77777丨| 伊人久久大香线蕉av一区二区| 姑娘第5集在线观看免费好剧| 国产日韩精品一区二区三区 | 91农村精品一区二区在线| 人妻无码久久一区二区三区免费| 粉色视频免费看| 亚洲国产欧美日韩在线观看第一区| 午夜精品三级视频福利| 青青操在线视频| 欧美亚洲国产一卡| 999精品在线视频| 高清shemale亚洲人妖| 加勒比成人在线| 天天躁日日躁狠狠躁欧美巨大小说 | 成人一级片免费看| 精品一区二区三区免费毛片爱 | 在线观看午夜av| 亚洲高清一区二| 夜夜躁日日躁狠狠久久av| 日韩毛片在线免费观看| 在线观看成人动漫| 久久精品卡一| 国产精品波多野结衣| 动漫3d精品一区二区三区乱码| 青青草原成人在线视频| 日本在线观看www| 精品国产一区二区三区av性色| 国产成人综合欧美精品久久| 国产精品毛片高清在线完整版| 欧美性猛交乱大交| 亚洲中午字幕| 欧美一级黄色录像片| 精品亚洲自拍| 国产精品自产拍在线观看| 欧美videossex另类| 亚洲日本成人网| www.精品久久| 在线免费观看日韩欧美| 久草视频在线资源站| 久久久www免费人成精品| 久久久久久综合网| 国产一区二区你懂的| 亚洲一区二区三区精品动漫| 中文字幕av一区二区三区四区| 国产91色在线免费| 蜜臀av国内免费精品久久久夜夜| 亚洲深夜福利视频| 亚洲爱情岛论坛永久| 欧美自拍偷拍一区| 日本三级午夜理伦三级三| 最好看的中文字幕久久| 日本高清www| 国产成人亚洲综合a∨婷婷图片 | 希岛爱理一区二区三区av高清| 国产一区二区女| 久久96国产精品久久99软件| 伊人久久大香| 全球成人中文在线| 久久大胆人体| 久久精品2019中文字幕| 国产在线一在线二| 日韩激情第一页| 免费av网站观看| 欧美mv日韩mv国产网站| 国产一区二区在线播放视频| 色综合久久中文综合久久97| 国产精品成人久久| 亚洲精品国久久99热| 国产三级aaa| 国产欧美一区二区精品婷婷| 香蕉视频黄色在线观看| 国产1区2区3区精品美女| 91pony九色| 强制捆绑调教一区二区| 超碰影院在线观看| 久久国产精品久久久久久电车| 僵尸世界大战2 在线播放| 欧美午夜在线| 日本中文字幕在线视频观看 | 亚洲国产成人精品无码区99| 综合在线视频| 少妇高潮大叫好爽喷水| 羞羞色午夜精品一区二区三区| 一本色道久久综合亚洲精品婷婷| 免费观看久久av| 欧美一级二级三级| 精品国产一区二区三区久久久樱花 | 久久免费大视频| 亚洲国产成人不卡| 日韩电影免费网站| 国产精品免费视频网站| 久久久久亚洲av成人无码电影| 26uuu国产日韩综合| 欧美一区二区三区成人精品| 91蜜桃免费观看视频| 泷泽萝拉在线播放| 国产亚洲精品超碰| 又嫩又硬又黄又爽的视频| 国产精品天干天干在观线| 三级黄色免费观看| 一区二区三区四区亚洲| 久久99久久久| 欧美性猛交xxxx免费看久久久| 亚洲天堂视频网站| 欧美视频一区二区三区| 91一区二区视频| 日韩美女主播在线视频一区二区三区| 高清一区二区三区四区| 日韩成人中文电影| 成人免费视频| 欧美成人合集magnet| 欧美xxxx性xxxxx高清| 2023国产精品久久久精品双| 欧美一区2区三区4区公司二百 | 在线精品亚洲一区二区| 亚洲高清影视| av无码久久久久久不卡网站| 国产视频一区三区| 麻豆三级在线观看| 国产精品综合二区| 国产精品无码永久免费不卡| 亚洲国产成人午夜在线一区| 国产极品国产极品| 福利一区视频在线观看| 在线观看免费视频一区| 欧美r级在线观看| 黄色美女网站在线观看| 久久成人av网站| 成人福利视频| 亚洲最大成人网色| 亚洲人成网站77777在线观看| 亚洲国内在线| 日韩视频久久| 日本中文字幕精品—区二区| 成人午夜在线免费| 国产aaaaaaaaa| 婷婷六月综合亚洲| 在线免费观看日韩视频| 亚洲大胆美女视频| 免费大片黄在线观看视频网站| 97福利一区二区| 婷婷久久综合九色综合99蜜桃| 精品一区2区三区| 影音先锋日韩精品| 久久久精品麻豆| 99国产精品久久久久久久久久久| av黄色免费在线观看| 欧美日韩在线视频观看| 成人av无码一区二区三区| 亚洲午夜未满十八勿入免费观看全集 | 日韩网站免费观看高清| 综合毛片免费视频| 国产精品久久精品国产| 久久久久久免费视频| 亚洲五月天综合| av亚洲精华国产精华精华| 极品颜值美女露脸啪啪| 欧美日韩一级大片网址| 深夜影院在线观看| 久久久久久久久国产| 精品国产一区二区三区性色av| 色综合666| 久久影院亚洲| 最近中文字幕无免费| 亚洲一区二区在线播放相泽 | 激情六月婷婷综合| 久久久精品成人| 一区二区三区福利| 日本欧美在线视频| 亚洲天堂中文字幕在线观看| 亚洲一区二区三区免费看| 久久九九电影| 黄色aaa视频| 一本色道综合亚洲| 天堂成人在线| 91精品国产91久久| 精品国产乱子伦一区二区| 久草视频这里只有精品| 国产精品一区二区在线播放| 成年人二级毛片| 7777精品伊人久久久大香线蕉的 | 91成人网在线| 成年人视频在线观看免费| 国产999精品久久久影片官网| 亚洲免费成人av在线| 欧美 日韩精品| 久久久www成人免费毛片麻豆| 欧美男人亚洲天堂| 国产亚洲成精品久久| www成人在线视频| 亚洲aⅴ天堂av在线电影软件| 蜜臀久久99精品久久久久宅男| 国产精品国产三级国产专业不| 欧美亚日韩国产aⅴ精品中极品| 国产1区2区3区在线| 国产精品综合久久久| 99精品视频精品精品视频| 国产探花在线观看视频| 一区二区三区美女| 欧美亚洲精品在线观看| 69视频在线播放| 国产一区二区在线| 欧美午夜aaaaaa免费视频| 国产精品九色蝌蚪自拍| 国产精品综合在线| 久久青草福利网站| 天堂网av成人| 中文字幕第100页| 亚洲精品一二三| 深夜福利视频在线免费观看| 国产成人精品日本亚洲| 香蕉久久网站| 日韩av无码一区二区三区不卡| 色综合天天综合在线视频| 在线观看免费黄色| 中文字幕精品—区二区四季| 校园春色 亚洲| 亚洲高清久久网| 美女色狠狠久久| 欧美一级特黄aaaaaa在线看片| 成人动漫一区二区| 国产精品成人无码| 欧美激情国产精品| 天美av一区二区三区久久| 国产精品区在线| 亚洲一区二区欧美激情| 国产美女视频一区二区三区| 成人免费自拍视频| 午夜亚洲性色福利视频| 操她视频在线观看| 亚洲高清一区二| 99久久久国产| 日本wwww视频| 亚洲欧美日韩在线| 日本中文字幕一区二区有码在线 | 久久不见久久见国语| 超碰中文字幕在线观看| 色偷偷88欧美精品久久久| 97caopron在线视频| 日韩国产在线一区| 国产iv一区二区三区|