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

Mesos 架構以及源碼淺析

開發 開發工具
Mesos 按照官方的介紹,是分布式操作系統的內核。目標是 ”Program against your datacenter like it’s a single pool of resources”,即可以將整個數據中心當做一臺電腦一樣使用。

Mesos 按照官方的介紹,是分布式操作系統的內核。目標是 ”Program against your datacenter like it’s a single pool of resources”,即可以將整個數據中心當做一臺電腦一樣使用。可以說這個目標是所有宣稱自己是DCOS的系統的共同目標,本文從架構和源碼層面分析Mesos以及周邊框架,看看Mesos是如何實現這個目標的,當前距這個目標還有多大差距。最后比較了一下Mesos和Kubernetes這兩個都受Google的Borg影響的系統的異同。

閱讀對象:對Mesos或者分布式系統感興趣的技術人

設計理念以及架構

引用Mesos paper里的一句話,來說明Mesos的設計理念:

define a minimal interface that enables efficient resource sharing across frameworks, and otherwise push control of task scheduling and execution to the frameworks

定義一個最小化的接口來支持跨框架的資源共享,其他的調度以及執行工作都委托給框架自己來控制。

這句話標志Mesos不試圖作為一個一棧式解決問題的系統,而是以最小的成本來實現資源共享。先來看看官方提供的架構圖:

主要組件以及概念:

  • Zookeeper 主要用來實現Master的選舉,支持Master的高可用。
  • Master Mesos的主節點,接受Slave和Framework scheduler的注冊,分配資源。
  • Slave 從節點,接受master發來的task,調度executor去執行。
  • Framework 比如上圖中的Hadoop,MPI就是Framework,包括scheduler,executor兩部分。scheduler獨立運行,啟動后注冊到master,接受master發送的Resource Offer消息,來決定是否接受。Executor是給slave調用的,執行framework的task。Mesos內置了CommandExecutor(直接調用shell)和DockerExecutor兩種executor,其他的自定義Executor需要提供uri,供slave下載。
  • Task Mesos最主要的工作其實就是分配資源,然后詢問scheduler是否可以利用該資源執行Task,scheduler將資源和Task綁定后交由Master發送給指定的Slave執行。Task可以是長生命周期的,也可以使用批量的短生命周期的。

官方提供的另外一個資源分配的例子:

  1. Slave1 向 Master 報告,有4個CPU和4 GB內存可用
  2. Master 發送一個 Resource Offer 給 Framework1 來描述 Slave1 有多少可用資源
  3. FrameWork1 中的 FW Scheduler會答復 Master,我有兩個 Task 需要運行在 Slave1,一個 Task 需要<2個CPU,1 GB內存=””>,另外一個Task需要<1個CPU,2 GB內存=””>
  4. 最后,Master 發送這些 Tasks 給 Slave1。然后,Slave1還有1個CPU和1 GB內存沒有使用,所以分配模塊可以把這些資源提供給 Framework2

這個例子可以看出來,Mesos的核心工作其實很少,資源管理和分配以及task轉發。調度由Framework實現,task的定義以及具體執行也由Framework實現,Mesos的資源分配粒度是按task的,但由于executor執行task可能在同一個進程中實現,所以資源限制只是一種流控的機制,并不能實際的控制到task這個粒度。

看了上面官方的架構說明,大約應該明白了Mesos的大致架構,但具體Mesos為什么要做成這樣,下面我們具體分析下。

歷史演進

我們把時間回退到Mesos發明的2009年,那時候Hadoop逐漸成熟,并廣泛應用,正在吞噬著大家的服務器。Spark當時也在醞釀中。而服務器配置管理領域Puppet還沒發布1.0,Chef才剛出現,"Configuration management Infrastructure as Code" 的思想才慢慢被接受,Ansible/Salt還沒出現。大家管理服務器還是靜態劃分的方式,購買服務器的時候就安排好了,這幾臺服務器上運行什么服務,應該配置多少CPU/內存/磁盤,安裝維護還多用的是shell腳本。

靜態管理服務器,無論是用shell還是Puppet這種工具,一方面是比較浪費資源,另外一方面服務故障恢復,服務遷移都需要人工介入,因為這種工具都只在部署時進行管理,服務進程運行后就不歸部署工具管理了。而Mesos則看到了這種方式的弊端,試圖實現一個資源共享的平臺,提高資源利用率,實現動態運維。

按照這種方式就比較容易理解Mesos的做法,Mesos的master相當于Puppet/Salt的master,Mesos的slave相當于Puppet/Salt的agent,二者干的事情都是把指令通過master發送給slave/agent執行,區別是Puppet/Salt成功執行后就不關心了,而Mesos執行后會在Master維護task的狀態,task掛掉后可以重啟或者遷移。

同時Mesos看到Hadoop等分布式系統都自己實現了scheduler以及executor,所以將scheduler以及executor的具體實現讓出來,通過制定Framework標準,由第三方分布式框架自己實現,自己只負責轉發task到slave,由slave調用Framework的executor去執行task。

也就是說由于歷史時機的問題,Mesos采用了一種保守的策略來進行演進。

資源沖突以及隔離機制

資源共享導致的首要問題就是如何解決資源沖突問題:

  1. cpu/mem 這個Mesos默認內置了一個Mesos Containerizer,可以通過cgroups和namespaces進行限制。
  2. 網絡端口 Mesos默認會給每個task分配一個(可以分配多個端口)隨機的未使用的端口,需要應用從環境變量中獲取到這個端口進行使用,是一種約定的規則,并不強制限制。
  3. 文件系統 默認情況下Mesos的文件系統是多應用共享的,默認給每個task分配一個sandbox目錄作為工作目錄,sandbox在主機上的目錄是和taskid相關的,不會沖突,生命周期和task綁定。另外也支持Persistent Volume,用于應用保存持久數據,也是通過目錄映射的方式實現的。Persistent Volume的生命周期獨立于task,由scheduler決定是否復用,也就是說Mesos將持久化數據和動態遷移之間的沖突問題交給了scheduler自己處理。另外可以選擇使用Docker Containerizer,通過Docker的方式隔離文件系統。
  4. 服務發現以及負載均衡 Mesos默認不支持服務發現和負載均衡,需要用戶自己實現。Mesos之上的Marathon Framework提供了一個marathon-lb,通過監聽Marathon的event修改HAProxy,實現動態的負載均衡,不過只支持通過Marathon部署的應用。
  5. 容器的改進 Mesos內置的容器不是基于Image的,但Docker是基于Image的,帶來的問題就是有些功能要通過兩種方式實現(比如磁盤隔離等)。另外Docker本身的daemon機制讓Mesos不好直接管理容器進程,所以Mesos也在計劃改進內置的容器支持Image,兼容Docker/Appc的Image,不會把Docker作為默認的容器。具體參看:https://github.com/apache/mesos/blob/master/docs/container-image.md,MESOS-2840

源碼架構分析

Mesos的核心是用c++寫的,主要使用了一個libprocess的庫,這是一個c++的actor模型的庫(不太了解actor模型的可以參看我的前一篇文章:并發之痛 Thread,Goroutine,Actor,這個庫順帶把Option,Nothing,Try, Future,Lambda,Defer這些都實現了,讓我充分體會了c++的魔法)。libprocess基本是參考erlang的模式實現的,其中的actor都叫做process,每個process有一個獨立的ID,我們這里為了方便理解,把其中的抽象都叫做actor,具體actor協作模式見下圖:

在Mesos的master節點中,每個Framework以及Slave都是一個遠程的actor。而slave節點上,每個executor是一個actor,只不過內置的executor是在同一個進程中的,而其他自定義的executor是獨立的進程,executor和slave之間通過進程間通信方式(網絡端口)交互。

Mesos通過actor模型,簡化了分布式系統的調用以及并發編程的復雜度,actor之間都通過消息異步通信,只需要知道對方的ID即可,無需了解對方和自己是否在同一個節點上。libprocess封裝的actor manager知道接收方是本地的actor還是遠程的actor,如果是遠程的則通過請求接口轉發消息。libprocess也封裝了網絡層,傳輸層使用的是http協議,使用方對不同的消息注冊不同的handler即可,也支持http的長輪詢模式訂閱事件。mesos為了提高消息傳遞解析效率,消息傳遞支持json和protobuf兩種格式。

這種架構的好處是Mesos省去了對消息隊列的依賴。一般情況下這種分布式消息分發系統都需要消息隊列或者中心存儲的支持,比如Salt使用的是ZeroMQ,Kubenetes使用的是Etcd,而Mesos則不依賴外部的資源支持,只通過actor模型的容錯機制來實現。而缺點也是actor本身的缺點,因為消息都是異步的,需要actor處理消息的丟失以及超時邏輯,Mesos不保證消息的可靠投遞,提供的投遞策略是 “at-most-once”,actor需要通過超時重試機制解決消息丟失的問題。不過任何需要遠程調用的分布式系統需要處理的類似的問題吧。

Framework的實現解析

從上面的分析可以了解到,Framework在Mesos中扮演著重要的角色。如果你自己要開發一個分布式系統,打算運行在Mesos中,就需要考慮自己實現一個Framework。

Mesos提供了一個Framework的基礎庫,第三方只需要實現scheduler,和executor兩個接口即可。基礎庫是用c++實現了,通過jni提供了java版本,通過python的native方式提供了python版本。而golang的版本是獨立開發的,沒有依賴c++庫,代碼架構比較優雅,想用go實現actor的可以參考。這個Framework基礎庫(SchedulerDriver以及ExecutorDriver的實現)主要做的事情就是實現前面我們提到的actor模型,和master以及slave交互,收到消息后回調用戶自定義的scheduler和executor。

下面是java的Scheduler接口:

  1. public interface Scheduler { 
  2.  
  3.   void registered(SchedulerDriver driver, 
  4.   FrameworkID frameworkId, 
  5.   MasterInfo masterInfo); 
  6.  
  7.   void reregistered(SchedulerDriver driver, MasterInfo masterInfo); 
  8.  
  9.   //這個是最主要的一個方法,當系統有空閑資源的時候,會詢問Scheduler, 
  10.   //是否接受或者拒絕該Offer。如果接受,則同時需要封裝使用該Offer的task信息,調用driver去執行。 
  11.   void resourceOffers(SchedulerDriver driver, List<Offer> offers); 
  12.   //如果Offer被取消或者被別的Framework使用,則回調本方法 
  13.   void offerRescinded(SchedulerDriver driver, OfferID offerId); 
  14.   //該Framework啟動的task狀態變化時回調。 
  15.   void statusUpdate(SchedulerDriver driver, TaskStatus status); 
  16.   //自定義的框架消息 
  17.   void frameworkMessage(SchedulerDriver driver,ExecutorID executorId,SlaveID slaveId,byte[]() data); 
  18.  
  19.   void disconnected(SchedulerDriver driver); 
  20.  
  21.   void slaveLost(SchedulerDriver driver, SlaveID slaveId); 
  22.  
  23.   void executorLost(SchedulerDriver driver,ExecutorID executorId,SlaveID slaveId,int status); 
  24.  
  25.   void error(SchedulerDriver driver, String message); 

Mesos的Framework是獨立于Mesos系統的,具體的部署方式,以及高可用都需要Framework自己解決,所以要實現一個完備的,高可用的Framework,復雜度還是挺高的。另外Framwork的機制比較適合需要任務分發以及調度的分布式系統,比如Hadoop,Jenkins等。其他的分布式數據庫比如Cassandra,Mesos做的事情是通過Scheduler調度CassandraExecutor部署和管理(包括節點上的維護操作,比如備份)Cassandra節點,詳細可參看 https://github.com/mesosphere/cassandra-mesos 。

另外Mesos Master本身沒有持久化存儲,所有數據都在內存,重啟后數據會丟失。但活躍的Framework和Slave注冊時會把自己當前的狀態發送給Master,Master通過這種方式恢復數據。所以如果Framework需要持久化Task的執行記錄,需要自己實現持久化存儲。

Mesos Slave提供了recovery的機制,用于實現Slave進程重啟后的恢復。默認情況下,Slave進程重啟后,和該進程相關的executor/task都會被殺掉,但如果Framework配置開啟了checkpoint設置,則該Framework相關的executor/task信息會被持久化到磁盤上,用于重啟后的recovery。

Marathon

Marathon按照官方的說法是個基于Mesos的私有PaaS。它實現了Mesos的Framework,支持通過shell命令和Docker部署應用,提供Web界面,支持cpu/mem,實例數等參數設置,支持單應用的scale,但不支持復雜的集群定義。

Marathon本身是通過Scala實現的,也使用了actor模型。它提供了event bus接口,允許其他應用通過監聽event bus來實現動態配置,比如前面提到的marathon-lb。

Aurora

Aurora試圖用一種自定義的配置語言去定義Mesos之上的task以及順序關系,解決各種環境的異構問題,降低用shell腳本的復雜度。可以理解為Mesos之上的一種粘合劑語言,地位類似于Salt/Ansible的yaml,只不過Mesos本身沒支持類似的配置語言,于是Aurora通過Framework的方式來支持。

Mesos和Kubernetes比較

Mesos和Kubernetes雖然都借鑒了Borg的思想,終極目標類似,但解決方案是不同的。Mesos有點像聯邦制,承認各邦(Framework)的主權,但各邦讓渡一部分公用的機制出來由Mesos來實現,最大化的共享資源,提高資源利用率,Framework和Mesos是相對獨立的關系。而Kubernetes有點像單一制,搭建一個通用的平臺,盡量提供全面的能力(網絡,磁盤,內存,cpu),制定一個集群應用的定義標準,任何復雜的應用都可以按照該標準定義并以最小的變更成本在上面部署運行,主要的變更需求也是因為想享受Kubernetes的動態伸縮能力帶來的。所以Mesos盡量做的比較少,而Kubernetes盡量做的比較多。Mesos定義是DCOS的kernel,但OS的kernel具體應該承擔哪些職責,相關爭論也從來沒停止過。

相對來說Kubernetes使用要比較容易些,而Mesos更靈活些,需要做的定制開發工作也比較多。拿前面提到的cassandra來比較,cassandra-mesos的實現很復雜,而Kubernetes的cassandra例子則只有一個類,就是實現了KubernetesSeedProvider,通過Kubernetes的服務發現機制尋找cassandra的seed節點。當然Mesos上的cassandra可以通過Mesos發送備份等管理任務,而Kubernetes不提供任務轉發的功能,這類需求用戶可以通過kubectl的exec方法實現。從這個例子也大致能明白二者的差異點。

Kubernetes下的Kubernetes on Mesos項目的目的就是利用Mesos的這個特性,實現Kubernetes和Mesos上的其他Framework共享資源。如果想了解Kubernetes的更多資料可以看這次一并推送的文章:"Kubernetes 架構淺析"。

【本文為51CTO專欄作者“王淵命”的原創稿件,轉載請通過作者微信公眾號jolestar-blog獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2014-01-06 17:30:50

ApacheMesos架構

2021-10-26 10:22:27

ArrayList阿里云

2014-01-06 17:13:59

ApacheMesos

2017-07-17 11:52:54

jQuery源碼分析前端框架類庫

2014-01-06 11:23:54

Mesos設計架構

2017-02-27 09:21:23

Kubernetes架構service

2014-02-14 15:12:41

ApacheMesos架構

2022-06-07 10:33:29

Camera組件鴻蒙

2017-11-28 09:32:57

KubernetesDockerMesos Compa

2016-11-04 21:46:46

UnderscoreJavascript

2009-09-21 12:50:34

Hibernate架構

2011-04-19 15:38:16

MongodbCursor

2009-07-08 14:06:22

ClassLoaderJDK源碼

2009-09-09 10:47:29

C# CheckBox

2009-09-07 05:24:22

C#窗體繼承

2009-09-01 18:19:39

C#工作流

2019-09-25 09:28:54

Linux系統架構

2011-12-02 13:04:06

Java

2015-04-27 14:42:24

技術架構服務器性能

2020-03-16 08:55:34

云架構SLA云服務
點贊
收藏

51CTO技術棧公眾號

国产在线精品一区在线观看麻豆| 西野翔中文久久精品国产| 中文字幕中文字幕一区二区| 91色视频在线导航| 欧美精品成人久久| 中日韩免视频上线全都免费| 欧美日韩一区二区三区免费看| 国产精品一区在线免费观看| 手机看片1024国产| 蜜臀av性久久久久蜜臀av麻豆| 欧美精品制服第一页| 国产在线观看无码免费视频| 九七电影院97理论片久久tvb| 一区二区在线电影| 日韩福利二区| 黄色av网站免费在线观看| 久久久噜噜噜久久狠狠50岁| 久久伊人精品天天| 成人免费网站黄| 日韩综合一区二区三区| 在线欧美日韩国产| 成人av在线播放观看| 国产精品一二三区视频| 国产二区国产一区在线观看| 全球成人中文在线| 久久久久人妻一区精品色欧美| 精品产国自在拍| 亚洲电影av在线| 日本中文字幕二区| 日韩大尺度黄色| 亚洲成人资源网| 国产一级黄色录像片| 岛国最新视频免费在线观看| 91香蕉视频mp4| 岛国视频一区| 国产黄色大片网站| 麻豆国产精品官网| 国产精品2018| 无码人妻一区二区三区免费| 狠狠爱成人网| 久久99精品国产99久久6尤物| 久久久久人妻一区精品色| 人人网欧美视频| 亚洲国产精品电影在线观看| 久久国产免费视频| 精品一区二区三区免费看| 欧美日韩成人综合在线一区二区| 波多野结衣天堂| 性欧美18一19sex性欧美| 欧美日韩免费区域视频在线观看| 国产九九九九九| 7777kkk亚洲综合欧美网站| 一区二区三区四区亚洲| 欧美日韩午夜爽爽| 日韩成人伦理| 亚洲国产欧美日韩另类综合| 亚洲熟妇无码av在线播放| 午夜成年人在线免费视频| 一区二区三区在线视频免费 | 国产婷婷精品av在线| 久久九九视频| 九色蝌蚪在线| 国产精品久久久久永久免费观看| 一区二区三区视频| 麻豆传媒在线完整视频| 成人免费一区二区三区视频 | 另类av一区二区| 91黄色8090| 无码一区二区三区在线观看| 日韩精品成人一区二区在线| 国产精品一区二区三区久久久 | 韩国成人精品a∨在线观看| 国产日韩在线观看av| 国产jzjzjz丝袜老师水多 | 欧美色男人天堂| 中文字幕 日韩 欧美| 免费一区二区三区在线视频| 日本视频免费一区| 韩剧1988免费观看全集| 日本中文字幕在线免费观看| 国产精品毛片| 亚洲妇熟xxxx妇色黄| 26uuu国产在线精品一区二区| 久久精品国产精品国产精品污| 你懂的在线观看视频网站| 中文在线免费一区三区高中清不卡| 少妇特黄a一区二区三区| 8888四色奇米在线观看| 亚洲精品免费一二三区| 成人免费在线小视频| 久久精品资源| 日韩久久精品一区| 国产伦理片在线观看| 欧美一区激情| 国产97色在线|日韩| 国产内射老熟女aaaa∵| jvid福利写真一区二区三区| 亚洲精品一区二区三区樱花| 国产一线二线在线观看| 在线观看成人免费视频| 激情av中文字幕| 欧美日韩在线观看视频小说| 欧美华人在线视频| 波多野结衣一区二区三区在线 | 在线xxxxx| 精品欧美激情在线观看| 久久久久久九九九| 亚洲一级片免费看| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲视频电影| 亚洲黄色免费看| 欧美成人精品福利| 制服丨自拍丨欧美丨动漫丨| 国产精品永久| 91免费综合在线| 国产高清av在线| 黄网动漫久久久| 日日夜夜精品视频免费观看| 精品少妇av| 97av视频在线| 丰满人妻一区二区三区无码av| 中文一区在线播放| 免费日韩视频在线观看| ccyy激情综合| 免费成人高清视频| 亚洲无码久久久久| 国产亚洲欧美日韩俺去了| 91专区在线观看| 97se亚洲国产一区二区三区| 久久久精品视频成人| 国产成人精品一区二区色戒| 久久综合九色综合欧美就去吻| 国产爆乳无码一区二区麻豆| 国产精品一区二区美女视频免费看| 亚洲欧洲中文天堂| yjizz国产| 99热精品一区二区| 久久久久99精品成人片| 日韩精品一区二区三区免费视频| 日韩在线免费高清视频| 岳乳丰满一区二区三区| 久久欧美中文字幕| 不卡影院一区二区| 国产成人精品免费视| 欧美一级成年大片在线观看 | 在线观看久久久久久| www.国产一区二区| 久久久精品天堂| av观看免费在线| 免费观看久久av| 国产成人精品电影久久久| 欧美拍拍视频| 欧美性猛交一区二区三区精品| 欧美人妻一区二区三区| 蜜臀国产一区二区三区在线播放 | 色网站在线看| 欧美久久一区二区| 欧美精品久久久久久久久46p| 精品一区二区三区香蕉蜜桃| 中文字幕免费高| 三级欧美日韩| 久久久久久午夜| 天堂91在线| 91精品福利在线| www.99re6| 丁香啪啪综合成人亚洲小说| 大西瓜av在线| 久久爱www成人| 国产免费一区二区三区在线观看| 黄色在线免费网站| 欧美不卡视频一区| 日韩精品一区二区亚洲av| 欧美国产精品中文字幕| 深爱五月综合网| 亚洲大胆视频| 天堂精品视频| 一区二区在线视频观看| 欧美亚洲在线视频| 精品国产白色丝袜高跟鞋| 亚洲精品一区二区三区影院| www欧美在线| 国产精品麻豆视频| 伊人久久一区二区三区| 视频一区在线播放| 免费的一级黄色片| 免费av一区二区三区四区| 国产欧美精品在线播放| 久久久久黄久久免费漫画| 日韩经典中文字幕| 亚洲一卡二卡在线观看| 亚洲v中文字幕| 亚洲色图日韩精品| 成人黄色在线视频| 精品亚洲一区二区三区四区| 一区免费视频| 亚洲砖区区免费| 婷婷成人综合| 91免费人成网站在线观看18| 美女网站在线看| 久久久999精品视频| 欧美3p视频在线观看| 欧美一区二区成人6969| 日韩手机在线视频| 一区二区三区日本| 国产精品视频在| jiyouzz国产精品久久| 日本高清久久久| 久久综合激情| 日韩中文字幕在线免费| 亚洲高清资源在线观看| 茄子视频成人在线观看| 成人免费直播在线| 成人精品久久久| 性欧美freehd18| 2019中文字幕在线观看| 91蜜桃在线视频| 久久好看免费视频| 福利片在线观看| 亚洲男人天堂2019| 人妻一区二区三区| 日韩美女视频在线| 精品二区在线观看| 欧美精品乱人伦久久久久久| 亚洲av无码精品一区二区| 亚洲国产婷婷综合在线精品| www.毛片com| 中文字幕亚洲成人| 亚洲不卡的av| 欧美激情一区二区三区不卡| 亚洲av综合一区二区| 91在线视频免费观看| 涩视频在线观看| 国产成人av福利| 免费黄视频在线观看| 国产一区二区三区四区五区美女 | 伊人久久一区| 国产精品中文在线| 欧美高清影院| 国产在线一区二区三区| 久久久久毛片| 成人av资源在线播放| 国产激情欧美| 国产区亚洲区欧美区| 成人四虎影院| 成人激情黄色网| 一区二区三区高清在线观看| 亚洲一区二区三区香蕉| 日韩有吗在线观看| 国产精品12| 日韩美女毛片| 欧美下载看逼逼| 欧美精品一二| 伊人精品久久久久7777| 香蕉综合视频| 黄色三级中文字幕| 亚洲理论在线| 黄色片久久久久| 日本不卡不码高清免费观看| 日韩一级免费片| 国产乱码精品1区2区3区| 青青草精品在线| av在线播放一区二区三区| 日本japanese极品少妇| 久久久久久久久99精品| 91在线无精精品白丝| 国产精品国产精品国产专区不片| 国产高清视频免费在线观看| 亚洲综合免费观看高清完整版 | 天堂中文在线播放| 国产91色在线播放| 日本成人在线网站| 成人在线免费网站| 免费欧美视频| 黄色网zhan| 99精品欧美| wwwwwxxxx日本| caoporn国产一区二区| 亚洲精品国产91| 亚洲激情网站免费观看| 天堂а√在线中文在线新版| 欧美日本韩国一区| 黄色一级a毛片| 中文字幕精品视频| 免费在线播放电影| 国产精品久久久久久网站| 精品一级视频| 日本一区高清在线视频| 中文在线日韩| 999精品网站| 国产乱人伦精品一区二区在线观看| 先锋资源av在线| 国产精品国产三级国产| 午夜毛片在线观看| 337p亚洲精品色噜噜| 日本在线一二三| 欧美日本中文字幕| 免费污视频在线一区| 国产精品99久久久久久久| 欧美日韩水蜜桃| 成 年 人 黄 色 大 片大 全| 久久精品国产亚洲a| 亚洲精品中文字幕在线播放| 中文字幕一区二区三区在线不卡 | 国产三级aaa| 欧美日韩性视频| 午夜久久久久久噜噜噜噜| 国产一区二区三区视频| 91超碰在线| 69堂成人精品视频免费| 日韩成人激情| 久章草在线视频| 不卡的av在线| 少妇久久久久久被弄高潮| 欧美亚洲愉拍一区二区| 午夜福利视频一区二区| 欧美区二区三区| 亚洲色图图片| 日韩精品资源| 久久激情婷婷| 好吊一区二区三区视频| 亚洲综合色婷婷| www.污视频| 欧美成人精品一区二区| 欧美激情三区| 天天人人精品| 日韩二区在线观看| 国产在线观看h| 精品色蜜蜜精品视频在线观看| 亚洲第九十九页| 欧美精品在线免费播放| 精品国产第一国产综合精品| 一区二区三区国| 老司机一区二区| 蜜桃视频最新网址| 欧美日韩精品二区第二页| 成人在线免费视频| 国产不卡视频在线| 国产乱码精品一区二区三区四区| 国产免费一区二区三区视频| av成人动漫在线观看| 国产在线拍揄自揄拍| 日韩一区二区三区四区| 91精选在线| 99精品在线直播| 亚洲高清二区| 玖草视频在线观看| 欧美小视频在线| 男人的天堂在线视频| 国产99视频精品免视看7| 精品一区二区三| 伊人国产在线视频| 亚洲欧洲日韩一区二区三区| 国产精品探花视频| 欧美理论片在线观看| 操欧美女人视频| 久久久久久久激情| 日本一区二区三区四区| 91麻豆成人精品国产| 超碰精品一区二区三区乱码| 亚洲不卡在线| 黄色一级在线视频| 国产日韩av一区二区| 一区二区美女视频| 九九热精品视频国产| 国产精品qvod| 成人免费无码av| 国产精品乱人伦| 亚洲精品综合网| 日本久久久久久久| 欧美hd在线| www.com日本| 91国偷自产一区二区三区观看| 国产精品二线| 91入口在线观看| 亚洲自啪免费| 日本一级片免费| 日韩成人久久久| 久久久久黄色| 国产免费黄色小视频| 中文字幕va一区二区三区| 精品人妻一区二区三区四区不卡 | 免费人成在线观看视频播放| 2019国产精品| 国产免费高清av| **欧美日韩vr在线| 欧美一区三区| 国产精品久久久久久在线观看| 欧美性生活大片免费观看网址| 日本三级视频在线观看| 国内精品二区| 久久www免费人成看片高清| 国产专区第一页| 欧美亚洲图片小说| 国产在线1区| 久久久久久国产精品免费免费| 免费不卡在线视频| 日本一级淫片色费放| 中文字幕亚洲无线码a| 国产成人av毛片| 奇米视频888|