黄p网站_在线看中文字幕_亚洲电影免费观看_成人激情视频_欧美成视频_中国av在线

Actor

提供Actor模式支持,助力游戲行業(yè)開發(fā)。EasySwooleActor采用自定義Process作為存儲載體,以協(xié)程作為最小調(diào)度單位,利用協(xié)程Channelmail box,而客戶端與Process之間的通訊,采用UnixSocket實(shí)現(xiàn),并且借助TCP實(shí)現(xiàn)分布式的ActorClient,超高并發(fā)下也能輕松應(yīng)對。

工作流程

一般來說有兩種策略用來在并發(fā)線程中進(jìn)行通信:共享數(shù)據(jù)和消息傳遞。使用共享數(shù)據(jù)方式的并發(fā)編程面臨的最大的一個(gè)問題就是數(shù)據(jù)條件競爭,當(dāng)兩個(gè)實(shí)例需要訪問同一個(gè)數(shù)據(jù)時(shí),為了保證數(shù)據(jù)的一致性,通常需要為數(shù)據(jù)加鎖,而Actor模型采用消息傳遞機(jī)制來避免數(shù)據(jù)競爭,無需復(fù)雜的加鎖操作,各個(gè)實(shí)例只需要關(guān)注自身的狀態(tài)以及處理收到的消息。

Actor是完全面向?qū)ο蟆o鎖、異步、實(shí)例隔離、分布式的并發(fā)開發(fā)模式。Actor實(shí)例之間互相隔離,Actor實(shí)例擁有自己獨(dú)立的狀態(tài),各個(gè)Actor之間不能直接訪問對方的狀態(tài),需要通過消息投遞機(jī)制來通知對方改變狀態(tài)。由于每個(gè)實(shí)例的狀態(tài)是獨(dú)立的,沒有數(shù)據(jù)被共享,所以不會發(fā)生數(shù)據(jù)競爭,從而避免了并發(fā)下的加鎖問題。

舉一個(gè)游戲場景的例子,在一個(gè)游戲房間中,有5個(gè)玩家,每個(gè)玩家都是一個(gè)PlayerActor,擁有自己的屬性,比如角色I(xiàn)D,昵稱,當(dāng)前血量,攻擊力等。游戲房間本身也是一個(gè)RoomActor,房間也擁有屬性,比如當(dāng)前在線的玩家,當(dāng)前場景的怪物數(shù)量,怪物血量等。此時(shí)玩家A攻擊某個(gè)怪物,則PlayerActor-ARoomActor發(fā)送一個(gè)攻擊怪物的指令,RoomActor經(jīng)過計(jì)算,得出玩家A對怪物的傷害值,并給房間內(nèi)的所有PlayerActor發(fā)送一個(gè)消息(玩家A攻擊怪物A,造成175點(diǎn)傷害,怪物A剩余血量1200點(diǎn)),類似此過程,每個(gè)PlayerActor都可以得知房間內(nèi)發(fā)生了什么事情,但又不會造成同時(shí)訪問怪物A的屬性,導(dǎo)致的共享加鎖問題。

安裝

Actor并沒有作為內(nèi)置組件,需要先引入包并進(jìn)行基礎(chǔ)配置才能夠使用。

composer require easyswoole/actor

使用

建立一個(gè)Actor

每一種對象(玩家、房間、甚至是日志服務(wù)也可以作為一種Actor對象)都建立一個(gè)Actor來進(jìn)行管理,一個(gè)對象可以擁有多個(gè)實(shí)例(Client)并且可以互相通過信箱發(fā)送消息來處理業(yè)務(wù)。

<?php

namespace App\Player;

use EasySwoole\Actor\AbstractActor;
use EasySwoole\Actor\ActorConfig;

/**
 * 玩家Actor
 * Class PlayerActor
 * @package App\Player
 */
class PlayerActor extends AbstractActor
{
    /**
     * 配置當(dāng)前的Actor
     * @param ActorConfig $actorConfig
     */
    public static function configure(ActorConfig $actorConfig)
    {
        $actorConfig->setActorName('PlayerActor');
        $actorConfig->setWorkerNum(3);
    }

    /**
     * Actor首次啟動時(shí)
     */
    protected function onStart()
    {
        $actorId = $this->actorId();
        echo "Player Actor {$actorId} onStart\n";
    }

    /**
     * Actor收到消息時(shí)
     * @param $msg
     */
    protected function onMessage($msg)
    {
        $actorId = $this->actorId();
        echo "Player Actor {$actorId} onMessage\n";
    }

    /**
     * Actor即將退出前
     * @param $arg
     */
    protected function onExit($arg)
    {
        $actorId = $this->actorId();
        echo "Player Actor {$actorId} onExit\n";
    }

    /**
     * Actor發(fā)生異常時(shí)
     * @param \Throwable $throwable
     */
    protected function onException(\Throwable $throwable)
    {
        $actorId = $this->actorId();
        echo "Player Actor {$actorId} onException\n";
    }

}

注冊Actor服務(wù)

可以使用setListenAddresssetListenPort指定本機(jī)對外監(jiān)聽的端口,其他機(jī)器可以通過該端口向本機(jī)的Actor發(fā)送消息。


public static function mainServerCreate(EventRegister $register) {

    // 注冊Actor管理器
    $server = \EasySwoole\EasySwoole\ServerManager::getInstance()->getSwooleServer();
    \EasySwoole\Actor\Actor::getInstance()->register(PlayerActor::class);
    \EasySwoole\Actor\Actor::getInstance()->setTempDir(EASYSWOOLE_TEMP_DIR)
        ->setListenAddress('0.0.0.0')->setListenPort('9900')->attachServer($server);

}

Actor實(shí)例管理

服務(wù)啟動后就可以進(jìn)行Actor的操作,管理本機(jī)的Client實(shí)例,則不需要給client傳入$node參數(shù),默認(rèn)的node為本機(jī),管理其他機(jī)器時(shí)需要傳入。


    // 管理本機(jī)的Actor則不需要聲明節(jié)點(diǎn)
    $node = new \EasySwoole\Actor\ActorNode();
    $node->setIp('127.0.0.1');
    $node->setListenPort(9900);

    // 啟動一個(gè)Actor并得到ActorId 后續(xù)操作需要依賴ActorId
    $actorId = PlayerActor::client($node)->create(['time' => time()]);   // 00101000000000000000001
    // 給某個(gè)Actor發(fā)消息
    PlayerActor::client($node)->send($actorId, ['data' => 'data']);
    // 給該類型的全部Actor發(fā)消息
    PlayerActor::client($node)->sendAll(['data' => 'data']);
    // 退出某個(gè)Actor
    PlayerActor::client($node)->exit($actorId, ['arg' => 'arg']);
    // 退出全部Actor
    PlayerActor::client($node)->exitAll(['arg' => 'arg']);

架構(gòu)解讀

Actor

應(yīng)該叫ActorManager更確切點(diǎn),它用來注冊Actor啟動ProxyActorWorker進(jìn)程。

當(dāng)你在業(yè)務(wù)邏輯里定義了幾種Actor,比如RoomActorPlayerActor,需要在SwooleServer啟動時(shí)注冊它們。

具體就是在EasySwooleEvent.mainServerCreate方法中添加如下代碼。

$actor = Actor::getInstance();
$actor->register(RoomActor::class);
$actor->register(PlayerActor::class);
$actorConf = Config::getInstance()->getConf('ACTOR_SERVER');
$actor->setMachineId($actorConf['MACHINE_ID'])
    ->setListenAddress($actorConf['LISTEN_ADDRESS'])
    ->setListenPort($actorConf['PORT'])
    ->attachServer($server);

其中ListenAddressListenPortProxy進(jìn)程的監(jiān)聽地址端口,MachineIdActorWorker進(jìn)程的機(jī)器碼。

MachineIdIP:PORT對應(yīng)。

attachServer將開啟相應(yīng)數(shù)量的Proxy進(jìn)程,以及前邊registerActorWorker進(jìn)程。

工作原理

Proxy進(jìn)程做消息中轉(zhuǎn),Worker進(jìn)程做消息分發(fā)推送。來看個(gè)具體的例子:

游戲中玩家P請求進(jìn)入房間R,抽象成Actor模型就是PlayerActor需要往RoomActor發(fā)送請求加入的命令。

那么這時(shí)候需要這樣寫:

\EasySwoole\Actor\Test\RoomActor::client($node)->send($roomActorId, [
    'user_actor_id' => $userActorId,
    'data'  => '其他進(jìn)入房間的參數(shù)'
])

其中$roomActorId$userActorId是事先xxActor::client()->create()出來的。

上面那段代碼的意思就是往$roomActorIdRoomActor實(shí)例推送了一條$userActorId玩家的UserActor實(shí)例要加入房間的消息。

參數(shù)$node用來尋址Proxy,它由目標(biāo)Actor實(shí)例的Worker.MachineId決定,在本例中就是$roomActorId被創(chuàng)建在了哪個(gè)MachineIdWorkerProcess

通過$roomActorId中的機(jī)器碼找到IP:PORT,生成$node

send時(shí)會創(chuàng)建一個(gè)協(xié)程TcpClient,將消息發(fā)送給Proxy,然后Proxy將消息轉(zhuǎn)發(fā)(UnixClient)至本機(jī)WorkerProcessWorkerProcess收到消息,推送到具體的Actor實(shí)例。

這樣就完成了從PlayerActorRoomActor的請求通訊,RoomActor收到請求消息并處理完成后,向PlayerActor回發(fā)處理結(jié)果,用的是同樣的通訊流程。

如果是單機(jī)部署,可以忽略$node參數(shù),因?yàn)樗型ㄓ嵍际窃诒緳C(jī)進(jìn)行。

多機(jī)的話,需要自己根據(jù)業(yè)務(wù)來實(shí)現(xiàn)Actor如何分布和定位。

主要屬性

machineId 機(jī)器碼

proxyNum 啟動幾個(gè)ProxyProcess

listenPort 監(jiān)聽port

listenAddress 監(jiān)聽ip

AbstractActor

Actor實(shí)例的基類,所有業(yè)務(wù)中用到的Actor都將繼承于`AbstractActor。例如游戲場景中的房間,你可以:

class RoomActor extends AbstractActor

工作原理

每個(gè)Actor實(shí)例都維護(hù)一份獨(dú)立的數(shù)據(jù)和狀態(tài),當(dāng)一個(gè)Actor實(shí)例通過client()->create()后,會開啟協(xié)程循環(huán),接收mailbox pop的消息,進(jìn)而處理業(yè)務(wù)邏輯,更新自己的數(shù)據(jù)及狀態(tài)。具體實(shí)現(xiàn)就是__run()這個(gè)方法。

靜態(tài)方法 configure

用來配置ActorConfig,只需要在具體的Actor(如RoomActor)去重寫這個(gè)方法就行。

關(guān)于ActorConfig具體屬性可以看下邊ActorConfig部分。

幾個(gè)虛擬方法

以下幾個(gè)虛擬方法需要在Actor子類中實(shí)現(xiàn),這幾個(gè)方法被用在__run()中來完成Actor的運(yùn)行周期。

onStart() 在協(xié)程開啟前執(zhí)行,你可以在此進(jìn)行Actor初始化的一些操作,比如獲取房間的基礎(chǔ)屬性等。

onMessage() 當(dāng)接收到消息時(shí)執(zhí)行,一個(gè)Actor實(shí)例的生命周期基本上就是在收消息-處理-發(fā)消息,你需要在這里對消息進(jìn)行解析處理。

onExit() 當(dāng)接收到退出命令時(shí)執(zhí)行。比如你希望在一個(gè)Actor實(shí)例退出的時(shí)候,同時(shí)通知某些關(guān)聯(lián)的其他Actor,可以在此處理。

其它

exit() 用于實(shí)例自己退出操作,會向自己發(fā)一條退出的命令。

tick()、after() 兩個(gè)定時(shí)器,用于Actor實(shí)例的定時(shí)任務(wù),比如游戲房間的定時(shí)刷怪(tick);掉線后多長時(shí)間自動踢出(after)

static client() 用于創(chuàng)建一個(gè)ActorClient來進(jìn)行對應(yīng)Actor(實(shí)例)的通訊。

ActorClient

Actor通訊客戶端,調(diào)用xxActor::client()來創(chuàng)建一個(gè)ActorClient進(jìn)行Actor通訊。

上邊已經(jīng)大概講過了Actor的通訊流程,本質(zhì)就是TcpClient->ProxyProcess->UnixClient->ActorWorkerProcess->xxActor

看下它實(shí)現(xiàn)了哪些方法:

create() 創(chuàng)建一個(gè)xxActor實(shí)例,返回actorId,在之后你可以使用這個(gè)actorId與此實(shí)例進(jìn)行通訊。

send() 指定actorId,向其發(fā)送消息。

exit() 通知xxActor退出指定actorId的實(shí)例。

sendAll() 向所有的xxActor實(shí)例發(fā)送消息。

exitAll() 退出所有xxActor實(shí)例。

exist() 當(dāng)前是否存在指定actorIdxxActor實(shí)例。

status() 當(dāng)前ActorWorkerxxActor的分布狀態(tài)。

ActorConfig

具體Actor的配置項(xiàng),比如RoomActorPlayerActor都有自己的配置。

actorName 一般用類名就可以,注意在同一個(gè)服務(wù)中這個(gè)是不能重復(fù)的。

actorClassActor->register()會將對應(yīng)的類名寫入。

workerNumActor開啟幾個(gè)進(jìn)程,Actor->attachServer()時(shí)會根據(jù)這個(gè)參數(shù)為相應(yīng)Actor啟動WorkerNum個(gè)Worker進(jìn)程。

ActorNode

上邊提到過,xxActor::client($node),這個(gè)$node就是ActorNode對象,屬性為IpPort,用于尋址Proxy

WorkerConfig

WorkerProcess的配置項(xiàng),WorkerProcess啟動時(shí)用到。

workerId worker進(jìn)程Idcreate Actor的時(shí)候用于生成actorId

machineId worker進(jìn)程機(jī)器碼,create Actor的時(shí)候用于生成actorId

trigger 異常觸發(fā)處理接口

WorkerProcess

Actor的重點(diǎn)在這里,每個(gè)注冊的Actor(類)會啟動相應(yīng)數(shù)量的WorkerProcess

比如你注冊了RoomActorPlayerActorworkerNum都配置的是3,那么系統(tǒng)將啟動3個(gè)RoomActorWorker進(jìn)程和3個(gè)PlayerActorWorker進(jìn)程。

每個(gè)WorkerProcess維護(hù)一個(gè)ActorList,你通過client()->create()Actor將分布在不同Worker進(jìn)程里,由它的ActorList進(jìn)行管理。

WorkerProcess通過協(xié)程接收client(這個(gè)client就是Proxy做轉(zhuǎn)發(fā)時(shí)的UnixClient)消息,區(qū)分消息類型,然后分發(fā)給對應(yīng)的Actor實(shí)例。

請仔細(xì)閱讀下WorkerProcess的源碼,它繼承于AbstractUnixProcess

UnixClient

UnixStream Socket,自行了解。Proxy轉(zhuǎn)發(fā)消息給本機(jī)Actor所使用的Client

Protocol

數(shù)據(jù)封包協(xié)議。

ProxyCommand

消息命令對象,Actor2將不同類型的消息封裝成格式化的命令,最終傳給WorkerProcess

你可以在ActorClient中了解一下方法和命令的對應(yīng)關(guān)系,但這個(gè)不需要在業(yè)務(wù)層去更改。

ProxyConfig

消息代理的配置項(xiàng)。

actorList 注冊的actor列表。

machineId 機(jī)器碼

tempDir 臨時(shí)目錄

trigger 錯誤觸發(fā)處理接口

ProxyProcess

Actor->attachServer()會啟動proxyNum個(gè)ProxyProcess

用于在Actor實(shí)例和WorkerProcess做消息中轉(zhuǎn)。

主站蜘蛛池模板: www.伊人网| 欧美free性丝袜xxxxhd | 久久精品网 | 91在线视频福利 | 99视频网 | 国产高清久久久 | 久久精品国产99国产精品 | 国产精品高潮呻吟久久av野狼 | 日韩av电影网| 国产a一三三四区电影 | 蜜桃av人人夜夜澡人人爽 | 日韩精品一区二区三区四区 | 欧美成人免费 | 国产亚洲精品综合一区91555 | 国产高清一区二区 | 亚洲精品天堂 | 伊人激情av一区二区三区 | 亚洲精品中文字幕中文字幕 | 黄色天堂在线观看 | 久久精品美女 | 亚洲一区欧美一区 | 国产一区二区三区久久久久久久久 | 国产网站视频 | 精品成人av| 国产精品久久久精品 | 色先锋影音 | 综合视频一区二区三区 | av毛片在线免费看 | 久久精品小视频 | 成年人网站国产 | 成人午夜精品久久久久久久3d | 久久色视频| 免费国产在线视频 | 亚洲精品中文字幕中文字幕 | 国产一区二区在线电影 | 久久久久久一区 | 午夜免费 | 久久免费在线观看 | 91.成人天堂一区 | 日本黄色电影网站 | 成人午夜sm精品久久久久久久 | 91精品国产一区二区 | 波多野结衣 一区二区 | 国产福利一区二区三区四区 | 精品久久久久久久久久久久久久 | 丁香久久 | av在线网址观看 | 国产美女网站视频 | 夜夜操av| 欧美jizzhd精品欧美巨大免费 | 在线观看中文字幕亚洲 | 午夜精品久久久久久久久久久久 | 一区二区精品视频 | 91九色porny首页最多播放 | 亚洲欧洲视频 | 欧美成在线观看 | av观看在线| 色欧美片视频在线观看 | 丝袜 亚洲 另类 欧美 综合 | 久久二 | 亚洲美女在线视频 | 一区二区三区四区日韩 | 日韩精品1区| 欧美一区不卡 | 亚洲午夜精品一区二区三区他趣 | 成人精品视频在线观看 | 青娱乐国产精品视频 | 91视频在线看 | 中文字幕日韩欧美一区二区三区 | 久草福利| 国产欧美久久久久久 | 久久草视频 | 国产精品第一区第27页 | 自拍偷拍欧美 | 暖暖日本在线视频 | 日一日干一干 | 中文字幕亚洲视频 | 色综久久 | 成人一区二区在线观看 | 亚洲成人1区 | 亚洲永久免费 | 午夜精 | 成人亚洲| 少妇精品视频在线观看 | 国产高清在线精品 | 欧美黄色一区二区 | 成人在线免费观看 | av电影手机在线看 | 国产xxxx成人精品免费视频频 | 欧美国产精品一区二区 | 一区二区在线视频 | a在线免费 | 日韩国产精品视频 | 天天干天天谢 | 色婷婷在线播放 | 免费在线色 | av片在线观看 | 成人一区av | 国产精品久久久久久久岛一牛影视 | 午夜看片| 日韩 国产 在线 | 欧美日韩三级 | 亚洲一区二区三区中文字幕 | 午夜家庭影院 | 特级av| 日韩在线成人 | 色婷婷网| 97色综合 | 在线观看你懂的视频 | 中文字幕亚洲一区二区三区 | 一区二区三区在线看 | 日韩欧美a级v片免费播放 | 欧美高清国产 | 激情欧美一区二区三区中文字幕 | 精品亚洲一区二区 | 中文字幕1区 | 精品午夜久久久 | 爱色区综合网 | 亚洲欧洲一区二区 | 91精品国产欧美一区二区 | 国产精品亚洲一区二区三区在线 | 中文字幕一区二区三区四区不卡 | 国产成人亚洲精品 | 亚洲日韩欧美一区二区在线 | 天天操网 | 国产99精品 | 国产精品久久久久久久久软件 | 亚洲电影一区二区 | 91啪影院 | 999精品视频 | 在线色av | h网站在线观看 | 黄免费看 | 国产精品成人在线观看 | 午夜午夜精品一区二区三区文 | 精品一区二区久久久久久久网站 | 成人高清在线 | 欧美一区二区三区在线视频 | 精品久久久久久久久久久久久久久久久久久 | 国产精品欧美久久久久一区二区 | 色视频网| 天天艹逼 | 粉嫩视频在线观看 | 欧美精品欧美精品系列 | 精品国产乱码久久久久久1区2区 | 日本黄色毛片 | 国产一区二区视频在线观看 | 一区二区三区国产视频 | 夜夜艹 | 亚洲成人av在线 | 欧美在线二区 | 成人一区视频 | 中文字幕一页二页 | 午夜激情电影在线 | 免费午夜电影 | 日韩一级视频 | 国产精品1区2区 | 欧美福利一区二区 | 国产精品1| 99在线精品视频 | 亚洲国产二区 | 色婷婷综合久久久中文字幕 | 欧美精品网站 | 91精品视频在线播放 | 91极品在线 | 亚洲视频免费 | 91午夜精品一区二区三区 | 老汉色影院 | 久久蜜桃精品一区二区三区综合网 | 国产www在线| 色女人的天堂 | 精品二区 | 91大片| 亚洲一区二区在线视频 | 日韩国产欧美视频 | 91电影在线 | 日韩精品久久 | 黄色片在线免费观看 | 国产精品久久久久久久久免费 | 久久人 | 中文字幕第一页在线 | 国产精品一区二区久久久久 | 一区二区三区av | 草草视频在线免费观看 | 国产欧美精品区一区二区三区 | 久草视频免费在线播放 | 欧日韩在线视频 | 欧美日韩亚洲三区 | 免费一二区 | 日韩中字在线观看 | 99精品电影 | 中文字幕亚洲欧美 | 人人插人人 | 刺激网 | 91影院 | 国产一级在线观看 | 国产日韩欧美在线 | 狠狠综合 | 精品伦精品一区二区三区视频 | 97夜夜操 | 国产婷婷在线观看 | 成人在线看片 | 99免费在线观看视频 | 亚洲成人看片 | 中文字幕乱码一区二区三区 | 色综合一区二区三区 | 午夜影院在线观看 | 在线观看免费av电影 | 久热中文| 婷婷丁香六月天 | 亚洲一区中文字幕在线观看 | 国产精品一区人伦免视频播放 | 国产成人免费视频网站视频社区 | 国产一区二区久久 | 国产一区二区视频在线观看 | 欧美日韩中文字幕 | 国产欧美精选 | 欧美日韩毛片 | 久久视频精品 | 日本 欧美 三级 高清 视频 | 91一区二区| 手机久久看片 | 久久国产亚洲 | 国产在线一区二区三区 | 国产成人精品一区一区一区 | 欧美视频在线播放 | 久久久久中文字幕 | 久久波多野结衣 | 天天艹视频 | 拍拍无遮挡人做人爱视频免费观看 | www.日韩视频 | 国产一区二区三区网站 | 亚洲成人久久久久 | 露娜同人18av黄漫网站 | 在线干| 国产高清视频在线 | 国产福利91精品一区二区三区 | www.久久伊人 | 日韩三及片 | 日韩精品一区二区三区第95 | 亚洲精品91 | 成人在线免费观看视频 | av一级毛片 | 中文字幕在线视频第一页 | av中文字幕在线播放 | 久久国产精品视频一区 | 国产精品国产a级 | 午夜视频在线播放 | jizz国产免费| 婷婷色5月| 国产日韩av在线 | 国产综合网站 | 午夜精品一区二区三区免费视频 | 亚洲狠狠爱一区二区三区 | 亚洲国产精品人人爽夜夜爽 | 天天操天天玩 | 国产精品毛片无码 | 国产成人免费视频网站视频社区 | 亚洲精品久久久久avwww潮水 | 91精品国产综合久久精品 | 欧美亚洲日本 | 国产精品久久久久久久久污网站 | 一区二区三区在线免费 | 久久久a| 日本三级在线网站 | 日韩国产在线看 | 欧日韩毛片 | 91精品国产综合久久久久久蜜臀 | 日本福利视频网 | 69日影院| 国产成人精品久久久 | 欧美xxxx做受欧美 | 91av导航| 三级av| 精国产品一区二区三区四季综 | 人人干人人干 | 91九色视频pron | 九九久久久 | 日本成人中文字幕 | 亚洲午夜在线 | 欧美大片一区二区 | 国产精品视频一区二区三区, | 久久久久久亚洲一区二区三区蜜臀 | 久久亚洲精品国产一区 | 天天澡天天狠天天天做 | 综合婷婷 | 亚洲黄色成人 | 午夜精品久久久久久久 | www.国产在线 | 国产综合精品一区二区三区 | 国产日韩精品视频 | 日韩欧美高清视频 | www久| 国产一级特黄视频 | www.99精品 | 成人免费一区二区三区视频网站 | 女人夜夜春 | 欧美jizzhd精品欧美巨大免费 | 亚洲电影一区二区 | 精品在线看 | 伊人精品在线 | 国产一区二区精品在线 | 国产高清第一页 | 成av在线| 亚洲一区二区三区免费视频 | 精品国产乱码久久久久久久软件 | 欧美日韩国产一区二区三区 | 欧美一级久久 | 国产精品一区久久久久 | 久久久精品视频免费观看 | 免费视频爱爱太爽了 | 日韩一区二区在线免费观看 | 成人av在线播放 | 男人的天堂视频网站 | 国产精品一区三区 | 久久综合一区二区三区 | 国产精品91久久久久 | 亚洲精品久久久久久下一站 | 国产在线视频xxx | 亚洲欧美激情精品一区二区 | 欧美在线一区二区 | 日韩欧美久久 | 一本一道久久a久久精品综合蜜臀 | 古风h啪肉1v1摄政王 | 色五月激情五月 | 99re热精品视频 | 亚洲视频中文字幕 | 国产精品久久久久久久久久久久 | 一本一道久久久a久久久精品91 | 激情欧美一区二区三区中文字幕 | 中文成人在线 | 一级一级国产片 | 黄av在线 | 中文字幕在线观看一区二区三区 | 国产亚洲精品美女久久久久久久久久 | 影音先锋国产 | 国产精品对白一区二区三区 | 超碰人人爱 | 色伊人久久 | 七龙珠z普通话国语版在线观看 | 日韩一区高清视频 | 成人片免费看 | 日本成人在线视频网站 | 日韩综合 | 黄色一级大片在线免费看产 | 天天舔天天干 | 激情欧美一区二区三区中文字幕 | 精品国产99 | xxxx欧美| 丝袜+亚洲+另类+欧美+变态 | 日本不卡一区二区 | 四虎成人永久 | 久在线视频 | 免费国产黄 | 国产一区二区精品在线观看 | 日本三级黄色录像 | 99国产精品99久久久久久 | 精品一区在线 | 青草成人免费视频 | 一区二区三区精品 | 成人欧美一区二区三区白人 | 女人高潮特级毛片 | 国产成人一区二区三区 | 欧洲妇女成人淫片aaa视频 | 精品久久一区二区 | 国产亚洲精品久久久久动 | 在线看免费的a | 亚洲国产精品第一区二区 | 久久久综合网 | 91精品国产乱码久久久久久 | 欧美男男videos | 91成人区 | 国产精品久久久久无码av | 久久久久国产精品免费免费搜索 | 天天天干夜夜夜操 | 天天天操| 亚洲精品一区二区三区在线观看 | 一区二区久久 | 天天躁日日躁aaaaxxxx | 99精品一区二区 | 日韩精品视频在线 | 久草视频国产 | 亚洲黄色国产 | 久久中文字幕一区 | julia一区二区三区中文字幕 | 欧美国产在线观看 | 黄色一级片在线观看 | 毛片a片 | 午夜艹| 黄色小视频在线观看 | 国产精品视频免费观看 | 欧美一级毛片免费看 | 欧美日韩在线一区二区 | 欧美在线高清 | 欧美日韩在线播放 | 成人国产精品久久久 | 欧美日韩国产综合网 | 久久国产精彩视频 | 可以在线观看的黄色 | 精品国产一区二区三区成人影院 | 午夜精品久久久久久久久 | 国产精品一码二码三码在线 | 精品国产三级 | 正在播放国产精品 | 久久精品国产精品青草 | 成人国产精品一级毛片视频 | 亚洲中午字幕在线观看 | 九七超碰在线 | 一级电影免费在线观看 | 亚洲啊v| av三级| 久久久久久久国产精品 | 久久欧美高清二区三区 | 精品国产高清一区二区三区 | 欧美日韩高清一区 | 国内精品视频 | 成人在线国产 | 男女羞羞视频网站18 | 三级黄色片在线播放 | 亚洲人成在线观看 | 国产精品精品久久久 | 黄色大片观看 | 黄色片免费在线观看视频 | 在线观看中文字幕亚洲 | 日韩免费网站 | 成人欧美一区二区三区白人 | 日本一区二区三区四区视频 | 国产精品揄拍一区二区久久国内亚洲精 | 欧美在线综合 | 四虎最新入口 | 午夜免费视频网站 | 粉嫩av网站 | 欧美大片免费高清观看 | 97国产精品视频 | 男女免费在线观看 | 狠狠撸在线| 国产一区二区三区在线免费观看 | 欧美成年黄网站色视频 | 亚洲第一av| 欧美一区二区三区免费 | 日韩国产中文字幕 | 国产精品久久久久久久福利院 | 亚洲精品影院在线 | www.日韩大片 | 国产精品久久一区二区三区 | 国产真实精品久久二三区 | 一区二区三区四区在线 | 精品国产不卡一区二区三区 | 欧美性一级 | 国产成人精品一区二 | 综合一区二区三区 | 在线色网| av毛片在线免费看 | 一区二区三区免费 | 日操| 久久精品这里热有精品 | 欧美 国产精品 | 亚洲精品一区二区 | 国产美女精品一区二区三区 | 99热日本 | 中文字幕av亚洲精品一部二部 | 精品美女在线 | 美女高潮久久久 | 国产成人精品一区二区三区四区 | 91麻豆精品国产91久久久久久久久 | 日韩欧美一区二区三区免费观看 | 日本视频一区二区三区 | 中文字幕在线免费视频 | 欧美一级久久 | 日韩在线欧美 | 嫩草影院懂你的 | 亚洲黄色免费观看 | 国产成人福利视频 | 欧美国产日韩一区 | av中文字幕在线播放 | 精品久久久久久久人人人人传媒 | 动漫羞免费网站中文字幕 | 国产在线精品一区二区 | 亚洲精品国产剧情久久9191 | 99精品欧美一区二区三区综合在线 | 成人在线视频免费观看 | 热久久这里只有精品 | 色婷婷综合在线 | 亚洲精品一区二区三区樱花 | 欧美啊v | 久久天堂热 | 9999国产精品欧美久久久久久 | 色一色网站 | 亚洲精品美女久久 | 黄网站色大毛片 | 自拍视频网 | 国产精品久久久久婷婷二区次 | 成人精品在线视频 | 精品国产一区二区三区成人影院 | 久久亚洲精品国产一区 | 婷婷久久综合 | 69久久99精品久久久久婷婷 | 日韩精品一区二区三区在线 | 岛国av一区| 国产精品久久久久久久久久99 | 国内精品一区二区三区 | 亚洲免费看片 | 涩涩视频在线看 | 在线观看亚洲一区 | 国产欧美日韩综合精品一区二区 | 国产精品久久久久久久一区探花 | 日本一区二区在线视频 | 白浆视频在线观看 | 在线播放黄色片网站 | 爱免费视频 | 日日夜夜免费精品视频 | 午夜视频网 | 男女国产视频 | 国产精品成人免费视频 | 色性av| 亚洲精品色 | 国内精品视频 | av在线免费播放 | 成人免费在线视频 | 99re在线播放视频 | 日韩大尺度在线观看 | 国产黄色大片免费看 | av福利网站| 中文字幕久久精品 | 欧美日韩中文字幕 | 欧美日韩免费一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 久久久影视 | 天天夜碰日日摸日日澡 | 日韩不卡av | 日韩免费在线观看视频 | 成人黄色一区 | 中文字幕亚洲一区二区va在线 | 免费视频爱爱太爽了 | 七七婷婷婷婷精品国产 | 国产精品久久久久久久久久久久 | 美女久久久 | 国产精品免费一区 | 久久久精品免费观看 | 国产精品美女久久久久久免费 | 成人在线看片网站 | 欧美成人一区二区三区片免费 | www.99热| 成人欧美在线视频 | 一本一本久久a久久精品综合妖精 | 亚洲美女网站 | 欧美在线视频一区 | 999久久久国产精品 免费视频一区 | 欧美国产日本一区 | 蜜桃精品视频在线 | 国产一级中文字幕 | 国产v日产∨综合v精品视频 | 成人久久久久久久 | 国产激情精品一区二区三区 | 午夜视频黄 | 久久国产精品视频 | 狠狠的日 | 午夜精品在线 | 91社影院在线观看 | 97视频观看 | 亚洲一区中文字幕在线观看 | 国产视频精品自拍 | 亚洲精品视频在线免费 | 午夜成人在线视频 | 亚洲精选一区 | 美女一区二区三区在线观看 | 国产成人精品免高潮在线观看 | 91精品国产一区二区 | 精品久久久久久久久久久久久久 | 亚洲另类小视频 | 爱啪导航一精品导航站 | 久久久91 | 免费成人av | 久久视频免费在线 | 日本久久久亚洲精品 | 久久艹99| 亚洲巨乳自拍在线视频 | 日比视频网站 | 嫩草懂你| 久久久久久久一区二区三区 | 亚洲国产精品成人久久久 | 大香伊在人线免97 | 欧美精品一区二区在线观看 | 亚洲精品美女久久久 | 精品国产青草久久久久福利 | 国产精品一区久久久 | 国内av网站 | 欧美日韩中文字幕在线 | 国产日韩欧美一区 | 精品国产一区二区三区久久久久久 | 成人无遮挡毛片免费看 | 一区二区三区国产精品 | 二区免费视频 | 99久久久无码国产精品 | 国产激情午夜 | 久久天堂av综合合色蜜桃网 | 婷婷中文字幕 | 99re| 久久国语 | 欧美精品一区二区三区蜜桃视频 | 久久2| 久久99精品国产.久久久久 | 日韩精品中文字幕一区二区三区 | 黄色一级免费观看 | 亚洲精品影院在线 | 欧美精品一区二 | 黄色一级片视频播放 | 国产精品美女久久久久久久网站 | 九九国产精品视频 | 亚州国产精品视频 | 激情婷婷| 亚洲成人免费视频在线观看 | 日本一区二区精品 | 欧美福利网 | 欧美日韩免费在线 |