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

驚!使用300行代碼創(chuàng)建一個分布式系統(tǒng)

開發(fā) 架構(gòu) 分布式
構(gòu)建一個分布式系統(tǒng)是很困難的。它需要可擴展性、容錯性、高可用性、一致性、可伸縮以及高效。為了達(dá)到這些目的,分布式系統(tǒng)需要很多復(fù)雜的組件以一 種復(fù)雜的方式協(xié)同工作。例如,Apache Hadoop在大型集群上并行處理TB級別的數(shù)據(jù)集時,需要依賴有著高容錯的文件系統(tǒng)(HDFS)來達(dá)到高吞 吐量。

構(gòu)建一個分布式系統(tǒng)是很困難的。它需要可擴展性、容錯性、高可用性、一致性、可伸縮以及高效。為了達(dá)到這些目的,分布式系統(tǒng)需要很多復(fù)雜的組件以一 種復(fù)雜的方式協(xié)同工作。例如,Apache Hadoop在大型集群上并行處理TB級別的數(shù)據(jù)集時,需要依賴有著高容錯的文件系統(tǒng)(HDFS)來達(dá)到高吞 吐量。

在之前,每一個新的分布式系統(tǒng),例如Hadoop和Cassandra,都需要構(gòu)建自己的底層架構(gòu),包括消息處理、存儲、網(wǎng)絡(luò)、容錯性和可伸縮性。 慶幸的是,像Apache Mesos這樣的系統(tǒng),通過給分布式系統(tǒng)的關(guān)鍵構(gòu)建模塊提供類似操作系統(tǒng)的管理服務(wù),簡化了構(gòu)建和管理分布式系統(tǒng)的任務(wù)。 Mesos抽離了CPU、存儲和其它計算資源,因此開發(fā)者開發(fā)分布式應(yīng)用程序時能夠?qū)⒄麄€數(shù)據(jù)中心集群當(dāng)做一臺巨型機對待。

[[143382]]

構(gòu)建在Mesos上的應(yīng)用程序被稱為框架,它們能解決很多問題:Apache Spark,一種流行的集群式數(shù)據(jù)分析工具;Chronos,一個類 似cron的具有容錯性的分布式scheduler,這是兩個構(gòu)建在Mesos上的框架的例子。構(gòu)建框架可以使用多種語言,包括 C++,Go,Python,Java,Haskell和 Scala。

在分布式系統(tǒng)用例上,比特幣開采就是一個很好的例子。比特幣將為生成 acceptable hash 的挑戰(zhàn)轉(zhuǎn)為驗證一塊事務(wù)的可靠性。可能需要 幾十年,單臺筆記本電腦挖一塊可能需要花費超過150年。結(jié)果是,有許多的“采礦池”允許采礦者將他們的計算資源聯(lián)合起來以加快挖礦速度。 Mesosphere的一個實習(xí)生,Derek,寫了一個比特幣開采框架,利用集群資源的優(yōu)勢來做同樣的事情。在接下來的內(nèi)容中,會以他的代碼為例。

1個Mesos框架有1個scheduler 和1個executor組成。scheduler 和Mesos master通信并決定運行什么任 務(wù),而executor 運行在slaves上面,執(zhí)行實際任務(wù)。大多數(shù)的框架實現(xiàn)了自己的scheduler,并使用1個由Mesos提供的標(biāo)準(zhǔn) executors。當(dāng)然,框架也可以自己定制executor。在這個例子中即會編寫定制的scheduler,并使用標(biāo)準(zhǔn)命令執(zhí)行器 (executor)運行包含我們比特幣服務(wù)的Docker鏡像。

對這里的scheduler來說,需要運行的有兩種任務(wù)—— 單礦服務(wù)器任務(wù)和多礦服務(wù)器任務(wù)。服務(wù)器會和一個比特幣采礦池通信,并給每個“工人”分配塊。“工人”會努力工作,即開采比特幣。

任務(wù)實際上被封裝在executor框架中,因此任務(wù)運行意味著告訴Mesos master在其中一個slave上面啟動一個executor。 由于這里使用的是標(biāo)準(zhǔn)命令執(zhí)行器(executor),因此可以指定任務(wù)是二進(jìn)制可執(zhí)行文件、bash腳本或者其他命令。由于Mesos支持 Docker,因此在本例中將使用可執(zhí)行的Docker鏡像。Docker是這樣一種技術(shù),它允許你將應(yīng)用程序和它運行時需要的依賴一起打包。

為了在Mesos中使用Docker鏡像,這里需要在Docker registry中注冊它們的名稱:

  1. const ( 
  2.     MinerServerDockerImage = "derekchiang/p2pool" 
  3.     MinerDaemonDockerImage = "derekchiang/cpuminer" 

然后定義一個常量,指定每個任務(wù)所需資源:

  1. const ( 
  2.     MemPerDaemonTask = 128  // mining shouldn't be memory-intensive 
  3.     MemPerServerTask = 256 
  4.     CPUPerServerTask = 1    // a miner server does not use much CPU 

現(xiàn)在定義一個真正的scheduler,對其跟蹤,并確保其正確運行需要的狀態(tài):

  1. type MinerScheduler struct { 
  2.     // bitcoind RPC credentials 
  3.     bitcoindAddr string 
  4.     rpcUser      string 
  5.     rpcPass      string 
  6.     // mutable state 
  7.     minerServerRunning  bool 
  8.     minerServerHostname string 
  9.     minerServerPort     int    // the port that miner daemons 
  10.                                // connect to 
  11.     // unique task ids 
  12.     tasksLaunched        int 
  13.     currentDaemonTaskIDs []*mesos.TaskID 

這個scheduler必須實現(xiàn)下面的接口:

  1. type Scheduler interface { 
  2.     Registered(SchedulerDriver, *mesos.FrameworkID, *mesos.MasterInfo) 
  3.     Reregistered(SchedulerDriver, *mesos.MasterInfo) 
  4.     Disconnected(SchedulerDriver) 
  5.     ResourceOffers(SchedulerDriver, []*mesos.Offer) 
  6.     OfferRescinded(SchedulerDriver, *mesos.OfferID) 
  7.     StatusUpdate(SchedulerDriver, *mesos.TaskStatus) 
  8.     FrameworkMessage(SchedulerDriver, *mesos.ExecutorID, 
  9.                      *mesos.SlaveID, string) 
  10.     SlaveLost(SchedulerDriver, *mesos.SlaveID) 
  11.     ExecutorLost(SchedulerDriver, *mesos.ExecutorID, *mesos.SlaveID, 
  12.                  int
  13.     Error(SchedulerDriver, string) 

現(xiàn)在一起看一個回調(diào)函數(shù):

  1. func (s *MinerScheduler) Registered(_ sched.SchedulerDriver, 
  2.       frameworkId *mesos.FrameworkID, masterInfo *mesos.MasterInfo) { 
  3.     log.Infoln("Framework registered with Master ", masterInfo) 
  4. func (s *MinerScheduler) Reregistered(_ sched.SchedulerDriver, 
  5.       masterInfo *mesos.MasterInfo) { 
  6.     log.Infoln("Framework Re-Registered with Master ", masterInfo) 
  7. func (s *MinerScheduler) Disconnected(sched.SchedulerDriver) { 
  8.     log.Infoln("Framework disconnected with Master"

Registered在scheduler 成功向Mesos master注冊之后被調(diào)用。

Reregistered在scheduler 與Mesos master斷開連接并且再次注冊時被調(diào)用,例如,在master重啟的時候。

Disconnected在scheduler 與Mesos master斷開連接時被調(diào)用。這個在master掛了的時候會發(fā)生。

目前為止,這里僅僅在回調(diào)函數(shù)中打印了日志信息,因為對于一個像這樣的簡單框架,大多數(shù)回調(diào)函數(shù)可以空在那里。然而,下一個回調(diào)函數(shù)就是每一個框架的核心,必須要認(rèn)真的編寫。

ResourceOffers在scheduler 從master那里得到一個offer的時候被調(diào)用。每一個offer包含一個集群上可以給框架使用的資源列表。資源通常包括CPU、內(nèi)存、端口和磁盤。一個框架可以使用它提供的一些資源、所有資源或者一點資源都不給用。

針對每一個offer,現(xiàn)在期望聚集所有的提供的資源并決定是否需要發(fā)布一個新的server任務(wù)或者一個新的worker任務(wù)。這里可以向每個 offer發(fā)送盡可能多的任務(wù)以測試***容量,但是由于開采比特幣是依賴CPU的,所以這里每個offer運行一個開采者任務(wù)并使用所有可用的CPU資 源。

  1. for i, offer := range offers { 
  2.     // … Gather resource being offered and do setup 
  3.     if !s.minerServerRunning && mems >= MemPerServerTask && 
  4.             cpus >= CPUPerServerTask && ports >= 2 { 
  5.         // … Launch a server task since no server is running and we 
  6.         // have resources to launch it. 
  7.     } else if s.minerServerRunning && mems >= MemPerDaemonTask { 
  8.         // … Launch a miner since a server is running and we have mem 
  9.         // to launch one. 
  10.     } 

針對每個任務(wù)都需要創(chuàng)建一個對應(yīng)的TaskInfo message ,它包含了運行這個任務(wù)需要的信息。

 

  1. s.tasksLaunched++ 
  2. taskID = &mesos.TaskID { 
  3.     Value: proto.String("miner-server-" + 
  4.                         strconv.Itoa(s.tasksLaunched)), 
  5.  
  6. Task IDs由框架決定,并且每個框架必須是唯一的。 
  7.  
  8. containerType := mesos.ContainerInfo_DOCKER 
  9. task = &mesos.TaskInfo { 
  10.     Name: proto.String("task-" + taskID.GetValue()), 
  11.     TaskId: taskID, 
  12.     SlaveId: offer.SlaveId, 
  13.     Container: &mesos.ContainerInfo { 
  14.         Type: &containerType, 
  15.         Docker: &mesos.ContainerInfo_DockerInfo { 
  16.             Image: proto.String(MinerServerDockerImage), 
  17.         }, 
  18.     }, 
  19.     Command: &mesos.CommandInfo { 
  20.         Shell: proto.Bool(false), 
  21.         Arguments: []string { 
  22.             // these arguments will be passed to run_p2pool.py 
  23.             "--bitcoind-address", s.bitcoindAddr, 
  24.             "--p2pool-port", strconv.Itoa(int(p2poolPort)), 
  25.             "-w", strconv.Itoa(int(workerPort)), 
  26.             s.rpcUser, s.rpcPass, 
  27.         }, 
  28.     }, 
  29.     Resources: []*mesos.Resource { 
  30.         util.NewScalarResource("cpus", CPUPerServerTask), 
  31.         util.NewScalarResource("mem", MemPerServerTask), 
  32.     }, 

TaskInfo message指定了一些關(guān)于任務(wù)的重要元數(shù)據(jù)信息,它允許Mesos節(jié)點運行Docker容器,特別會指定name、task ID、container information以及一些需要給容器傳遞的參數(shù)。這里也會指定任務(wù)需要的資源。

現(xiàn)在TaskInfo已經(jīng)被構(gòu)建好,因此任務(wù)可以這樣運行:

driver.LaunchTasks([]*mesos.OfferID{offer.Id}, tasks, &mesos.Filters{RefuseSeconds: proto.Float64(1)})

在框架中,需要處理的***一件事情是當(dāng)開采者server關(guān)閉時會發(fā)生什么。這里可以利用StatusUpdate 函數(shù)來處理。

在一個任務(wù)的生命周期中,針對不同的階段有不同類型的狀態(tài)更新。對這個框架來說,想要確保的是如果開采者server由于某種原因失敗,系統(tǒng)會Kill所有開采者worker以避免浪費資源。這里是相關(guān)的代碼:

  1. if strings.Contains(status.GetTaskId().GetValue(), "server") && 
  2.     (status.GetState() == mesos.TaskState_TASK_LOST || 
  3.         status.GetState() == mesos.TaskState_TASK_KILLED || 
  4.         status.GetState() == mesos.TaskState_TASK_FINISHED || 
  5.         status.GetState() == mesos.TaskState_TASK_ERROR || 
  6.         status.GetState() == mesos.TaskState_TASK_FAILED) { 
  7.     s.minerServerRunning = false 
  8.     // kill all tasks 
  9.     for _, taskID := range s.currentDaemonTaskIDs { 
  10.         _, err := driver.KillTask(taskID) 
  11.         if err != nil { 
  12.             log.Errorf("Failed to kill task %s", taskID) 
  13.         } 
  14.     } 
  15.     s.currentDaemonTaskIDs = make([]*mesos.TaskID, 0

萬事大吉!通過努力,這里在Apache Mesos上建立一個正常工作的分布式比特幣開采框架,它只用了大約300行GO代碼。這證明了使用Mesos 框架的API編寫分布式系統(tǒng)是多么快速和簡單。

責(zé)任編輯:王雪燕
相關(guān)推薦

2013-09-11 16:02:00

Spark分布式計算系統(tǒng)

2020-07-30 09:35:09

Redis分布式鎖數(shù)據(jù)庫

2022-06-27 08:36:27

分布式事務(wù)XA規(guī)范

2011-09-14 10:08:07

Beanstalkd

2016-09-30 10:13:07

分布式爬蟲系統(tǒng)

2024-02-19 00:00:00

Redis分布式

2023-09-04 08:45:07

分布式配置中心Zookeeper

2023-05-29 14:07:00

Zuul網(wǎng)關(guān)系統(tǒng)

2020-09-17 11:12:03

分布式系統(tǒng)代碼檢代碼檢視

2023-04-05 10:00:00

分布式算法

2014-04-02 09:39:15

Ceph分布式文件系統(tǒng)

2024-07-15 08:25:07

2022-04-14 07:56:30

公平鎖Java線程

2023-05-12 08:23:03

分布式系統(tǒng)網(wǎng)絡(luò)

2021-11-01 12:25:56

Redis分布式

2023-03-06 08:14:48

MySQLRedis場景

2017-10-27 08:40:44

分布式存儲剪枝系統(tǒng)

2023-10-26 18:10:43

分布式并行技術(shù)系統(tǒng)

2023-02-11 00:04:17

分布式系統(tǒng)安全

2017-10-11 16:12:19

內(nèi)存
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲一卡二卡三卡四卡| 麻豆精品在线看| 亚洲精品美女久久久久| 精品人妻人人做人人爽| 亚洲日本在线播放| 美女视频网站黄色亚洲| 欧美美女操人视频| 爱爱免费小视频| 欧美少妇激情| 性久久久久久久久| 视频一区二区三区在线观看| а√中文在线资源库| 国产欧美在线| 久久大大胆人体| 国产精品久久久免费观看| 成人午夜毛片| 精品毛片网大全| 致1999电视剧免费观看策驰影院| 人妻与黑人一区二区三区| 日本视频免费一区| 欧美精品激情视频| 顶级黑人搡bbw搡bbbb搡| 激情亚洲另类图片区小说区| 欧美丰满高潮xxxx喷水动漫| 每日在线更新av| 黄色网页在线免费观看| 91丨porny丨首页| 亚洲在线视频观看| 中文字幕在线播放日韩| 亚洲激情一区| 欧美成人久久久| 国产黄色录像视频| 欧美1区2区3区4区| 欧美日韩在线亚洲一区蜜芽| 男人操女人逼免费视频| 人妖欧美1区| 国产精品高潮呻吟久久| 欧美亚洲免费高清在线观看| 囯产精品久久久久久| 久久99热这里只有精品| 国产精品av网站| 天码人妻一区二区三区在线看| 香蕉久久网站| 亚洲无av在线中文字幕| 99久久人妻精品免费二区| 欧美午夜网站| 在线不卡一区二区| 中文字幕天天干| 免费在线观看一区| 色吊一区二区三区| 六月激情综合网| 涩涩在线视频| 欧美日韩亚洲激情| 男人天堂999| 这里有精品可以观看| 精品久久久一区| 久久国产成人精品国产成人亚洲| jizzjizz中国精品麻豆| 亚洲自拍偷拍图区| 亚洲理论电影在线观看| yellow字幕网在线| 婷婷夜色潮精品综合在线| 超碰成人免费在线| 美女高潮在线观看| 婷婷综合另类小说色区| 91国视频在线| 无人区在线高清完整免费版 一区二| 欧美视频在线观看免费网址| 97在线免费公开视频| 求av网址在线观看| 亚洲少妇30p| www.午夜色| 操你啦视频在线| 亚洲图片欧美一区| 国产肥臀一区二区福利视频| 亚洲日本天堂| 欧美日韩综合在线免费观看| 久久婷婷中文字幕| 一区二区三区国产好| 亚洲国产精品va在看黑人| 欧美性xxxx图片| av在线不卡顿| 欧美成人免费小视频| 不卡的免费av| 久久激情综合| 91沈先生在线观看| 色欲av伊人久久大香线蕉影院| 91蜜桃视频在线| 亚洲精品视频一区二区三区| 18网站在线观看| 狠狠色狠色综合曰曰| 九色porny自拍| 亚洲天堂av资源在线观看| 亚洲国产精品热久久| 亚洲一区 欧美| 亚洲精品成人| 韩国三级成人在线| hs视频在线观看| 国 产 黄 色 大 片| 中文在线第一页| 国产资源在线看| 中文av一区二区| 成人在线免费高清视频| 免费一二一二在线视频| 欧美老人xxxx18| 91玉足脚交白嫩脚丫| 欧美色图国产精品| 久久久久久有精品国产| 中文字幕人妻互换av久久| 国产91精品精华液一区二区三区| 日本一区二区免费看| 中文字幕在线观看网站| 色欧美日韩亚洲| 亚洲女则毛耸耸bbw| 三级电影一区| 日韩美女视频免费在线观看| 成人av手机在线| 中文字幕的久久| 久久久久久久久久久视频| 视频在线亚洲| 最近2019中文字幕大全第二页| 亚洲精品一区二| 高潮一区二区三区乱码| 亚洲国产精品成人综合| 自拍日韩亚洲一区在线| 伊人久久大香| 在线观看亚洲区| 日本视频www| 国产麻豆精品视频| 亚洲春色综合另类校园电影| 欧美少妇网站| 亚洲国产欧美一区| 欧美黄色免费观看| 国内精品国产三级国产a久久| 午夜欧美性电影| 午夜欧美巨大性欧美巨大| 亚洲国语精品自产拍在线观看| 九九精品在线观看视频| 国产精品一区二区果冻传媒| 亚洲欧美综合一区| 无人区在线高清完整免费版 一区二| 日韩精品丝袜在线| 日本一区二区欧美| 成人免费高清在线| www.亚洲视频.com| 波多野结衣在线一区二区| 成人444kkkk在线观看| 国产又粗又猛又色又| 国产精品久久综合| 波多结衣在线观看| 精品视频亚洲| 国产欧美日韩视频| 精品国产99久久久久久| 欧美高清dvd| h色网站在线观看| 国产一区高清在线| 国产成a人亚洲精v品在线观看| 精品一区二区三区视频在线播放 | 成人欧美一区二区三区1314| 五月婷婷狠狠操| 一级片在线免费播放| 久久精品国产精品亚洲红杏| 性欧美精品一区二区三区在线播放 | 最好看的2019年中文视频| 中文字幕日本视频| 中文一区在线播放| 奇米影视四色在线| 久久精品青草| 99re在线国产| 僵尸再翻生在线观看免费国语| 日韩精品视频免费专区在线播放 | 欧美久久久久免费| 91高清免费看| 白白色 亚洲乱淫| 一级特黄性色生活片| 国产精品久久久乱弄| av日韩免费电影| 成年美女黄网站色大片不卡| 色哟哟网站入口亚洲精品| 国产极品999| 激情懂色av一区av二区av| www.av欧美| 国产一区二区三区香蕉| 欧美一级视频免费看| av中文字幕一区二区| 97夜夜澡人人双人人人喊| 午夜激情在线播放| 久久伊人精品天天| 性xxxxbbbb| 欧美高清一级片在线| 色网站在线播放| 国产精品久久久久久久久晋中| 国产精品99久久久精品无码| 丝袜脚交一区二区| 小说区视频区图片区| 国产精品久久久久av蜜臀| 国产精品午夜国产小视频| 少妇av在线| 一区二区在线免费视频| 高潮毛片7777777毛片| 欧美色图片你懂的| 国产大片中文字幕在线观看| 中文在线一区二区| 亚洲男人在线天堂| 激情欧美一区二区三区在线观看| 玩弄中年熟妇正在播放| 欧美超碰在线| 蜜桃久久精品乱码一区二区 | 日韩一区二区免费在线电影| 久久免费激情视频| 一区二区三区成人| 女教师淫辱の教室蜜臀av软件| 99久久er热在这里只有精品15 | 一级黄色片免费看| 精品久久久一区二区| 曰本女人与公拘交酡| 国产精品午夜在线| 人妻精品久久久久中文字幕 | 国产精品密蕾丝袜| 成人手机在线视频| 中文字幕一区二区三区四| 日韩电影在线免费观看| 116极品美女午夜一级| 一区在线免费| 久久久久久久免费视频| 日韩系列欧美系列| 日韩精品久久一区| 婷婷成人影院| 黄色99视频| 成人香蕉社区| 91黄色国产视频| 精品一区二区三区四区五区| 91精品综合久久久久久五月天| 亚洲成av在线| 国产91精品黑色丝袜高跟鞋| 啊啊啊久久久| 欧美—级a级欧美特级ar全黄| 超碰在线网址| 欧美成人黑人xx视频免费观看| 麻豆tv入口在线看| 日韩中文在线中文网三级| 成人免费在线视频网| 亚洲最新视频在线| 成a人v在线播放| 伊人精品在线观看| 成人在线免费观看| 中文字幕日韩精品有码视频| h网站视频在线观看| 夜夜嗨av色综合久久久综合网| 国产小视频免费在线观看| 亚洲欧美在线x视频| 天堂资源最新在线| 精品中文视频在线| 欧洲成人av| 一区三区二区视频| 麻豆影院在线观看| 欧美剧在线观看| 国产91足控脚交在线观看| 欧美精品xxx| 在线观看特色大片免费视频| 热门国产精品亚洲第一区在线| 天堂中文av在线资源库| 欧美专区日韩视频| yy6080久久伦理一区二区| 国产欧美日韩91| 日本一区二区乱| 成人欧美一区二区三区视频| 女同另类激情重口| 日本一区二区三区视频免费看| 日本不卡二三区| 日韩中文字幕亚洲精品欧美| 狠久久av成人天堂| 久久久久久久久久久久久国产精品 | 夜夜爽夜夜爽精品视频| 国产网站在线看| 91久久精品一区二区二区| 一级片视频网站| 日韩欧美中文字幕公布| 五月婷婷在线播放| 在线播放精品一区二区三区 | 日韩美女av在线免费观看| 主播大秀视频在线观看一区二区| 成人精品久久久| 精品久久ai| 亚洲免费不卡| 伊人久久婷婷| 奇米影音第四色| 成人污视频在线观看| 久久亚洲无码视频| 亚洲精品老司机| 波多野结衣 久久| 欧美一级艳片视频免费观看| 日本啊v在线| 欧美成人精品在线观看| 午夜激情成人网| 成人蜜桃视频| 久久精品99久久无色码中文字幕| 欧美黄色免费网址| 免费精品99久久国产综合精品| 苍井空张开腿实干12次| 国产精品污网站| 国产成人无码一区二区三区在线| 欧美美女bb生活片| 日本大片在线观看| 色在人av网站天堂精品| 日韩精品一区二区三区av| 精品国产aⅴ麻豆| 亚洲一区欧美| 日日躁夜夜躁aaaabbbb| 91偷拍与自偷拍精品| 四虎免费在线视频| 欧美日韩激情一区二区| 视频一区二区在线播放| 欧美成人午夜剧场免费观看| 国产美女久久| 欧美一进一出视频| 99在线精品免费视频九九视| 国产精品嫩草影视| 国产精品伦理在线| 中文字幕精品视频在线观看| 日韩av网站电影| 青春草在线免费视频| 91精品视频免费看| 日韩欧美中文| 午夜视频你懂的| 久久久夜色精品亚洲| 日本三级免费看| 亚洲高清在线观看| 污污的网站在线看| 91久久国产婷婷一区二区| 成人在线视频免费观看| 久久黄色免费看| 久久尤物电影视频在线观看| 国产情侣在线视频| 亚洲成人激情在线观看| 亚洲欧美成人影院| 亚洲自拍另类欧美丝袜| 91精品蜜臀一区二区三区在线| 日韩av在线中文| 中文字幕一区二区在线观看 | 亚洲精品97久久| 91白丝在线| 激情小说综合区| 国产精品色网| a毛片毛片av永久免费| 欧美日韩在线影院| 嫩草在线播放| 国产精品久久久久99| 日本不卡高清| 中文字幕第66页| 一二三区精品视频| 日本wwwxxxx| 97超级碰碰碰久久久| 婷婷成人在线| 视频二区在线播放| 亚洲三级在线免费| www精品国产| 91极品视频在线| 亚洲人成精品久久久| 亚洲精品怡红院| 亚洲精品欧美激情| 丰满肉肉bbwwbbww| 91大神福利视频在线| 国产探花一区| 亚洲一级免费在线观看| 一区二区三区欧美在线观看| 亚洲精品国偷拍自产在线观看蜜桃| 久久久久久久久亚洲| 一本久久青青| 五月激情五月婷婷| 亚洲自拍与偷拍| 黑人与亚洲人色ⅹvideos| 国产精品一区二区久久| 最新国产精品久久久| www.超碰97| 欧美日韩一区二区不卡| 欧洲性视频在线播放| 欧美成熟毛茸茸复古| 久久99久久久久久久久久久| 国产中文字字幕乱码无限| 亚洲裸体xxxx| 精品一区二区三区亚洲| 毛片在线播放视频| 国产欧美一区二区精品婷婷| 99国产精品欲| 欧美一级片在线播放| 久久在线视频| v天堂中文在线| 欧美日韩精品欧美日韩精品一| 在线三级中文| 欧洲精品在线一区| 国产美女视频91| 日韩综合在线观看| 欧美裸体男粗大视频在线观看| 蜜桃一区二区| 欧美图片自拍偷拍| 欧美在线一区二区三区| 毛片在线网址| 正在播放91九色| 久久久精品一品道一区|