• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于商用多媒體云平臺(tái)的終端推送服務(wù)設(shè)計(jì)

    2017-06-27 08:14:22王鈺葉徳建
    微型電腦應(yīng)用 2017年6期
    關(guān)鍵詞:流水消息指令

    王鈺, 葉徳建

    (1. 復(fù)旦大學(xué) 軟件學(xué)院, 上海 201203; 2. 網(wǎng)絡(luò)信息安全審計(jì)與監(jiān)控教育部工程研究中心, 上海 201203)

    基于商用多媒體云平臺(tái)的終端推送服務(wù)設(shè)計(jì)

    王鈺1, 葉徳建2

    (1. 復(fù)旦大學(xué) 軟件學(xué)院, 上海 201203; 2. 網(wǎng)絡(luò)信息安全審計(jì)與監(jiān)控教育部工程研究中心, 上海 201203)

    從商用多媒體云平臺(tái)的業(yè)務(wù)需求出發(fā),設(shè)計(jì)了一種終端推送服務(wù)。將推送流水的存儲(chǔ)、推送消息的發(fā)送和推送消息的確認(rèn)分成3個(gè)不同的模塊分別完成,實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)推送,同時(shí)上層服務(wù)管理終端分組,保證了推送消息的可靠到達(dá)。實(shí)驗(yàn)證明,該推送服務(wù)的內(nèi)存占用穩(wěn)定,推送效率高,吞吐量高,能滿足商用多媒體云平臺(tái)的點(diǎn)對(duì)點(diǎn)分組推送功能。

    終端推送; 消息可靠到達(dá); 點(diǎn)對(duì)點(diǎn)推送

    0 引言

    互聯(lián)網(wǎng)時(shí)代,消息推送服務(wù)[1]在我們身邊得到了廣泛的應(yīng)用。推送服務(wù)指的是客戶端與服務(wù)器之間保持長(zhǎng)連接心跳,服務(wù)器有新消息需要發(fā)送時(shí),主動(dòng)向客戶端推送信息,相比客戶端的定時(shí)請(qǐng)求服務(wù),這種方式減少了交互次數(shù),提高了推送效率。

    近年來,在酒店VOD、校園OTT-TV、戶外廣告等行業(yè)中,以視頻業(yè)務(wù)和信息發(fā)布業(yè)務(wù)為主的商用多媒體系統(tǒng)的應(yīng)用越來越廣泛。隨著云計(jì)算技術(shù)的發(fā)展,基于云平臺(tái)構(gòu)建的商用多媒體系統(tǒng)成為了主流。

    終端推送服務(wù)是商用多媒體云平臺(tái)[2]面向終端的重要服務(wù),信息發(fā)布系統(tǒng)、OTT系統(tǒng)等均依靠該服務(wù)將廣告、節(jié)目單等信息推送到指定終端設(shè)備。在云平臺(tái)的終端推送[3]方面,運(yùn)營(yíng)商往往需要向不同的終端推送不同的內(nèi)容,例如商場(chǎng)的信息發(fā)布系統(tǒng)可在多個(gè)屏幕展示不同的產(chǎn)品介紹,推送內(nèi)容大多是運(yùn)營(yíng)商需要發(fā)布的重要信息,不允許信息丟失。

    文獻(xiàn)[1]中采用Netty框架開發(fā),對(duì)傳統(tǒng)網(wǎng)絡(luò)服務(wù)器采用的阻塞IO開發(fā)引起的大量客戶情況下推送服務(wù)中CPU利用效率低下的問題,但是并沒有解決推送服務(wù)中信息丟失的問題。文獻(xiàn)[4]是多媒體終端推送業(yè)務(wù)功能的研究,但未能解決商用多媒體云平臺(tái)推送服務(wù)的點(diǎn)對(duì)點(diǎn)推送需求。

    目前可用的推送技術(shù)主要基于MQTT[5]或XMPP協(xié)議,二者均使用長(zhǎng)連接實(shí)現(xiàn)推送。

    MQTT協(xié)議,是一個(gè)輕量級(jí)的基于“發(fā)布/訂閱”模式的消息傳輸協(xié)議,協(xié)議開放,擴(kuò)展性強(qiáng),提供一對(duì)多的消息發(fā)布,適用于帶寬比較低或者不穩(wěn)定的網(wǎng)絡(luò)環(huán)境。

    XMPP[6]協(xié)議,是用于實(shí)時(shí)通信的協(xié)議,通信報(bào)文格式基于XML,實(shí)時(shí)通信技術(shù)和推送的底層技術(shù)是一樣的。該協(xié)議可實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)推送,但其基于XML的通信報(bào)文數(shù)據(jù)傳輸量較大,為實(shí)時(shí)通信而設(shè)計(jì)的XMPP對(duì)于推送冗余功能過多。在商用多媒體系統(tǒng)中,各種云服務(wù)之間的業(yè)務(wù)數(shù)據(jù)需要互相關(guān)聯(lián),而XMPP服務(wù)器的集群部署模式下只支持單一數(shù)據(jù)庫(kù),無法分庫(kù)分表,數(shù)據(jù)相對(duì)封閉。在XMPP協(xié)議中,各服務(wù)器不存儲(chǔ)在線消息的發(fā)送流水,當(dāng)在線功能由于異常(如服務(wù)器負(fù)載過高或突然故障)導(dǎo)致發(fā)送失敗時(shí),缺乏容錯(cuò)機(jī)制,無法保證消息的可靠到達(dá)。

    綜上,MQTT協(xié)議需要為每個(gè)終端分配唯一的Topic來實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)推送,管理不便,XMPP協(xié)議可用于點(diǎn)對(duì)點(diǎn)推送,但協(xié)議內(nèi)容冗余,傳輸?shù)臄?shù)據(jù)量大,數(shù)據(jù)模型相對(duì)封閉,消息容易丟失。所以,它們均不適用于商用多媒體云平臺(tái)的終端推送服務(wù)。商用多媒體云平臺(tái)終端推送服務(wù)的需求是:實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)推送,終端推送服務(wù)本身不管理終端分組,上層服務(wù)基于點(diǎn)對(duì)點(diǎn)推送可以方便實(shí)現(xiàn)分組管理及分組發(fā)送;保證推送消息至少成功到達(dá)終端一次?;诖诵枨?,我們針對(duì)該商用多媒體云平臺(tái)設(shè)計(jì)一個(gè)定制的推送協(xié)議,基于Exchange ActiveSync[7]協(xié)議改進(jìn)。

    1 背 景

    1.1 可靠消息隊(duì)列RocketMQ

    RocketMQ是一款分布式消息中間件,基于消息隊(duì)列模式,持久化存儲(chǔ)隊(duì)列,消息順序可靠,實(shí)時(shí)消息訂閱,具有高可靠、高性能、易擴(kuò)展的特點(diǎn)。

    RocketMQ分為NameServer和Broker兩部分,NameServer存儲(chǔ)了消息隊(duì)列中所有的配置信息,Broker則負(fù)責(zé)消息的存儲(chǔ)轉(zhuǎn)發(fā)。RocketMQ使用“Topic/Queue”的模型,一個(gè)Topic是多個(gè)隊(duì)列的集合,平均部署在多個(gè)Broker上,增加Broker數(shù)量就可以直接提高吞吐量,易擴(kuò)展的同時(shí)實(shí)現(xiàn)負(fù)載均衡。每個(gè)Broker分為Master節(jié)點(diǎn)和Slave節(jié)點(diǎn),Master負(fù)責(zé)接收、存儲(chǔ)和投遞消息,Slave則負(fù)責(zé)進(jìn)行冗余備份,從而提升可靠性。生產(chǎn)者和Broker之間保持心跳連接,從而在某個(gè)Broker故障時(shí),自動(dòng)選擇其他Broker發(fā)送消息,消費(fèi)者從該Broker的Slave節(jié)點(diǎn)繼續(xù)接收消息,提高可用性。RocketMQ采用高并發(fā)的方式提高吞吐量,消息消費(fèi)失敗不會(huì)阻塞后續(xù)消息的投遞,性能很高但不保證消息嚴(yán)格有序。

    1.2 Java的Netty框架

    Netty[8]是基于Java非阻塞IO的網(wǎng)絡(luò)編程框架,該框架將非阻塞IO與IO復(fù)用結(jié)合起來,具有較高的網(wǎng)絡(luò)傳輸效率,同時(shí)還提供了基于事件響應(yīng)和回調(diào)方法的異步編程模型,是目前主流的Java網(wǎng)絡(luò)編程框架。使用Netty框架可以極大簡(jiǎn)化選擇器監(jiān)聽、連接創(chuàng)建、心跳處理、連接異常處理等各個(gè)環(huán)節(jié)的開發(fā)工作。

    1.3 Memcache緩存

    Memcache[9]是開源的基于一致哈希的分布式鍵值系統(tǒng),數(shù)據(jù)全部存儲(chǔ)于內(nèi)存中,常用作系統(tǒng)緩存,讀寫速度快,當(dāng)節(jié)點(diǎn)故障時(shí),相鄰節(jié)點(diǎn)的替代提高了其可用性。

    2 設(shè) 計(jì)

    2.1 架構(gòu)設(shè)計(jì)

    終端推送服務(wù)要保證推送消息可靠到達(dá)終端,需要在異常情況下對(duì)丟失的推送消息進(jìn)行記錄并重試,因此終端推送需要存儲(chǔ)所有的推送發(fā)送流水,終端在收到推送消息之后要反饋確認(rèn),從而確定丟失的推送。但是若在發(fā)送推送過程中存儲(chǔ)發(fā)送流水,則會(huì)降低終端推送的吞吐量。本文在終端推送服務(wù)的設(shè)計(jì)中,將推送流水的存儲(chǔ)、推送消息的發(fā)送和推送消息的確認(rèn)分成3個(gè)不同的模塊分別完成,從而將3部分操作解耦。在3個(gè)模塊中,可以調(diào)節(jié)部署的服務(wù)器數(shù)量來維持系統(tǒng)整體吞吐量的平衡。

    終端推送服務(wù)的整體架構(gòu),如圖1所示。

    整體架構(gòu)分為3部分:

    門戶模塊(Facade模塊):接收來自其他服務(wù)的推送請(qǐng)求,通知相應(yīng)的broker模塊發(fā)送推送消息,保存和維護(hù)終端推送服務(wù)的狀態(tài)(終端與Broker之間的映射關(guān)系、終端在線狀態(tài)等),保存推送消息的發(fā)送流水;

    圖1 終端推送服務(wù)的整體架構(gòu)

    推送模塊(Broker模塊):接收來自Facade模塊的請(qǐng)求,將推送消息發(fā)送給指定終端;

    消息確認(rèn)模塊:接收來自終端的確認(rèn)消息,更新推送消息發(fā)送流水的狀態(tài);

    3個(gè)模塊的職責(zé)及維護(hù)的數(shù)據(jù),如表1所示。

    表1 推送服務(wù)各模塊的職責(zé)

    其中,每臺(tái)Broker服務(wù)器都存儲(chǔ)了終端MAC地址和終端Channel連接之間的映射關(guān)系,這部分?jǐn)?shù)據(jù)只存儲(chǔ)在內(nèi)存中。Facade模塊在終端上下線時(shí)接收終端發(fā)來的RocketMQ消息,之后對(duì)終端與Broker模塊中各服務(wù)器的映射關(guān)系進(jìn)行修改和保存。此處采用異步的RocketMQ消息,其他云服務(wù)也可以訂閱終端上下線的該消息,例如:云平臺(tái)的運(yùn)營(yíng)服務(wù)可以通過訂閱各個(gè)終端的上下線消息來計(jì)算終端的活躍時(shí)間。Facade模塊還負(fù)責(zé)接收分布式定時(shí)任務(wù)的通知,查詢發(fā)送失敗的推送消息流水,通過不斷重試進(jìn)行異步補(bǔ)償,直至推送消息被確認(rèn)。

    2.2 協(xié)議設(shè)計(jì)

    推送協(xié)議,如表2所示。

    該推送協(xié)議設(shè)計(jì)十分精簡(jiǎn),共有4種指令:login指令是終端在發(fā)起長(zhǎng)連接時(shí),發(fā)送給推送服務(wù)的第一條指令,攜帶終端在開機(jī)認(rèn)證過程中生成的token等信息,推送服務(wù)可以調(diào)用終端的管理認(rèn)證服務(wù)驗(yàn)證合法性,如果認(rèn)證失敗或者連接建立后未發(fā)送login指令,則推送服務(wù)關(guān)閉連接,認(rèn)證成功則云平臺(tái)通過推送服務(wù)返回認(rèn)證結(jié)果給終端;heart指令用于維護(hù)終端和云平臺(tái)之間的推送服務(wù)的長(zhǎng)連接,如果任何一方在一定時(shí)間內(nèi)未收到心跳則主動(dòng)關(guān)閉連接,終端開始重連;push指令是在長(zhǎng)連接中發(fā)送給終端的指令,執(zhí)行推送操作,該指令包含終端MAC地址、推送消息內(nèi)容體等;ack指令是終端在收到push指令之后回復(fù)給推送服務(wù)的確認(rèn)命令,推送服務(wù)在收到ack指令之后記錄相應(yīng)終端的push消息為到達(dá)狀態(tài)。

    表2 推送協(xié)議

    整體協(xié)議由長(zhǎng)連接和HTTP兩部分組成,通過長(zhǎng)連接來發(fā)送推送消息的內(nèi)容,通過HTTP來確認(rèn)推送消息的到達(dá)。這種設(shè)計(jì)極大地降低了長(zhǎng)連接管理方面的難度,管理長(zhǎng)連接的服務(wù)器不需要記錄推送消息是否到達(dá),提高了推送效率。對(duì)于未收到確認(rèn)的推送消息,由分布式定時(shí)任務(wù)異步補(bǔ)償不斷重試直到確認(rèn)為止。

    2.3 終端、Broker模塊及Facade模塊之間的交互

    Broker模塊使用Java的Netty框架實(shí)現(xiàn),Netty框架將網(wǎng)絡(luò)套接字封裝成Channel類型,后文將使用Channel表示非阻塞的Socket連接。

    終端/二級(jí)服務(wù)器在上/下線時(shí)與Broker模塊之間的交互順序,如圖2所示。

    圖2 終端與Broker模塊的交互

    終端通過與Broker模塊的連接進(jìn)行登錄,完成登錄認(rèn)證的初始化階段。

    終端與Broker模塊建立連接之后,先發(fā)送攜帶Token的login指令,Broker模塊收到指令后調(diào)用終端認(rèn)證服務(wù)檢測(cè)Token的合法性,并返回認(rèn)證結(jié)果,認(rèn)證成功則返回Token對(duì)應(yīng)終端的MAC地址。認(rèn)證通過后,broker模塊將終端MAC地址和Channel的映射關(guān)系保存在內(nèi)存中,之后broker模塊發(fā)送RocketMQ消息通知Facade終端上線,F(xiàn)acade模塊記錄并保存終端和Broker模塊服務(wù)器的映射,RocketMQ消息內(nèi)容為“[online]終端MAC地址+Broker模塊服務(wù)器IP+時(shí)間戳”。Broker模塊和終端之間始終保持心跳交互,一方超過指定時(shí)間未收到心跳包,broker模塊將主動(dòng)關(guān)閉終端對(duì)應(yīng)的Channel,如果Channel在認(rèn)證成功后被關(guān)閉,broker模塊會(huì)將MAC地址和Channel的映射關(guān)系中刪除對(duì)應(yīng)的數(shù)據(jù),并發(fā)送RocketMQ消息通知Facade該終端下線,該消息和上線時(shí)發(fā)送的內(nèi)容類似。

    Facade與Broker模塊之間的交互,如圖3所示。

    圖3 Facade模塊和Broker模塊的交互

    Facade模塊同樣作為Broker模塊的客戶端進(jìn)行登錄認(rèn)證,與終端不同,F(xiàn)acade模塊登錄時(shí)使用特殊的Token——字符串facade,Broker模塊檢測(cè)到該Token之后,對(duì)登錄者的IP進(jìn)行驗(yàn)證,F(xiàn)acade模塊的IP地址應(yīng)為內(nèi)網(wǎng)IP,Broker模塊檢測(cè)出是內(nèi)網(wǎng)IP則返回登錄成功,否則返回登錄失敗。當(dāng)Facade模塊收到來自其他服務(wù)的推送調(diào)用請(qǐng)求時(shí),查找終端對(duì)應(yīng)的Broker模塊,發(fā)送push指令給對(duì)應(yīng)的Broker服務(wù)器,Broker模塊在終端MAC地址和Channel的映射關(guān)系中查找到對(duì)應(yīng)Channel并將push指令發(fā)送給終端。Facade模塊和Broker模塊之間也要維持心跳交互,如果二者之間的連接被關(guān)閉,F(xiàn)acade模塊將不斷重試連接直至成功。

    2.4 Broker模塊

    Broker模塊有幾個(gè)關(guān)鍵工作。在收到客戶端發(fā)來的報(bào)文時(shí),首先判斷發(fā)過來的指令是否為login指令,根據(jù)協(xié)議規(guī)定,客戶端建立連接之后,發(fā)送的第一條必須是login指令,因此對(duì)于非login指令,處理器將關(guān)閉channel。然后,檢測(cè)login指令的Token是否為字符串facade,從而區(qū)分客戶端類型為終端設(shè)備或Facade模塊的服務(wù)器。對(duì)于來自內(nèi)部的Facade模塊連接請(qǐng)求,通過客戶端IP地址是否為內(nèi)網(wǎng)進(jìn)行認(rèn)證,后對(duì)Channel做標(biāo)記。對(duì)于來自外部終端設(shè)備的連接請(qǐng)求,Broker模塊將調(diào)用終端認(rèn)證服務(wù)檢測(cè)該終端合法性,認(rèn)證通過后,發(fā)送RocketMQ消息通知Facade模塊終端上線,同時(shí)保存該MAC地址和Channel之間的映射關(guān)系,并注冊(cè)Channel關(guān)閉事件的回調(diào)方法。當(dāng)Channel被關(guān)閉時(shí),將該Channel和MAC地址的映射關(guān)系刪除并給Facade發(fā)送終端下線的RocketMQ消息,最后將Channel標(biāo)記為外部連接并記錄終端的MAC地址。以上的認(rèn)證操作只在連接新建立的時(shí)候執(zhí)行一次,之后通過這個(gè)Channel進(jìn)行后續(xù)操作時(shí),無需認(rèn)證操作,但是Broker與客戶端之間要維持心跳交互。

    Broker模塊在收到push指令時(shí),檢查是否由Facade模塊發(fā)出和指令的正確性。然后Broker模塊根據(jù)該指令中的指定的終端MAC地址查找到對(duì)應(yīng)的Channel,將push指令從該Channel轉(zhuǎn)發(fā)出去,如果在轉(zhuǎn)發(fā)push指令的過程中發(fā)生任何異常,例如終端MAC地址對(duì)應(yīng)的Channel不存在,Broker模塊將簡(jiǎn)單地丟棄消息,后續(xù)由分布式定時(shí)任務(wù)進(jìn)行異步補(bǔ)償。

    2.5 Facade模塊

    Broker模塊的輕量型設(shè)計(jì)使得我們的推送系統(tǒng)具有較高的性能,而Facade模塊需要處理較為重量級(jí)的工作:1) 維護(hù)終端與Broker模塊服務(wù)器之間的映射關(guān)系;2) 存儲(chǔ)推送消息發(fā)送流水;3) 執(zhí)行分布式定時(shí)任務(wù),對(duì)發(fā)送失敗的push消息進(jìn)行異步補(bǔ)償。

    Facade模塊的數(shù)據(jù)庫(kù)需要保存終端與Broker模塊服務(wù)器之間的映射,同時(shí)存儲(chǔ)推送消息的發(fā)送流水,數(shù)據(jù)庫(kù)模型,如圖4所示。

    圖4 Facade模塊的數(shù)據(jù)庫(kù)模型

    其中MAC_BROKER表記錄了終端MAC地址與Broker模塊服務(wù)器之間的映射關(guān)系,終端MAC地址具有唯一性約束。Facade模塊在發(fā)送push消息時(shí),為了查找終端對(duì)應(yīng)的Broker模塊服務(wù)器,需要在MAC_BROKER表中進(jìn)行大量的查詢操作。為了提高查詢效率,在Memcache集群中為該表建立Key-Value查詢緩存,Key為終端MAC地址。每次查詢先從緩存查詢,查詢不到再?gòu)臄?shù)據(jù)庫(kù)查詢,并將結(jié)果寫入緩存;每次更新數(shù)據(jù)庫(kù)時(shí)對(duì)緩存進(jìn)行更新,保持?jǐn)?shù)據(jù)一致性。

    MAC_MSG表記錄了Facade模塊對(duì)push消息的發(fā)送流水,終端MAC地址和Push消息ID聯(lián)合組成唯一性約束,表中STATUS字段表示push流水狀態(tài):INIT表示未收到回復(fù),ACK表示已收到回復(fù)。MSG表則為push消息的歷史記錄表。一定時(shí)間后通過定時(shí)任務(wù)將這段時(shí)間的MAC_MSG數(shù)據(jù)表遷移到歷史記錄表中,同時(shí)檢查push流水狀態(tài),記錄并報(bào)告未收到回復(fù)的流水,但是將放棄重新推送該push消息。

    外圍系統(tǒng)在調(diào)用終端推送服務(wù)時(shí),需要在Facade模塊注冊(cè)push消息并獲得ID,然后向Facade模塊發(fā)送RocketMQ消息,內(nèi)容包括push消息ID和終端MAC地址列表,在列表數(shù)量過多的情況下將拆分成多個(gè)RocketMQ消息發(fā)送給推送服務(wù)。

    Facade模塊的推送服務(wù)流程,如圖5所示。

    圖5 Facade模塊的流程圖

    Facade模塊收到推送請(qǐng)求后,將push消息發(fā)送流水插入到數(shù)據(jù)庫(kù)MAC_MSG表中,同時(shí)由另一個(gè)消費(fèi)者將發(fā)送流水向業(yè)務(wù)線程池提交push任務(wù),由業(yè)務(wù)線程池異步執(zhí)行push消息推送。RocketMQ消息中如果有push消息流水未插入成功,則返回失敗,RocketMQ將重新投遞失敗的消息,MAC_MSG表的唯一索引可以防止重復(fù)插入。業(yè)務(wù)線程池在MAC_BROKER表中查找當(dāng)前push流水需要的Broker服務(wù)器IP,并通過Broker模塊的客戶端將push消息發(fā)送出去。

    當(dāng)Facade模塊收到終端上下線的RocketMQ消息時(shí),要更新MAC_BROKER表和Memcache緩存中的MAC地址和服務(wù)器IP的映射關(guān)系。終端上線時(shí),將表中Broker字段更新為真實(shí)IP,下線時(shí)更新為OFFLINE。并同步更新Memchache緩存,比較RocketMQ消息中的時(shí)間戳和數(shù)據(jù)庫(kù)記錄的時(shí)間戳大小,防止更新過期的RocketMQ消息。終端上線時(shí),F(xiàn)acade模塊需要查詢?cè)摻K端是否有未確認(rèn)的push消息流水記錄,有則需要發(fā)送對(duì)應(yīng)push消息到業(yè)務(wù)線程池。

    由于Facade模塊的兩個(gè)消費(fèi)者異步處理RocketMQ消息,一個(gè)負(fù)責(zé)落庫(kù)發(fā)送流水,一個(gè)負(fù)責(zé)封裝并提交push任務(wù),若出現(xiàn)一條流水在落庫(kù)之前已經(jīng)完成了推送操作,則直接在數(shù)據(jù)庫(kù)中插入該流水,并將該流水狀態(tài)記錄為ack。同一條流水多次發(fā)送的情況由客戶端自行處理。

    對(duì)于終端未成功收到push消息的情況,通過分布式定時(shí)任務(wù)進(jìn)行異步補(bǔ)償,執(zhí)行頻率為每分鐘一次。Facade模塊將查詢MAC_MSG表中所有需要重發(fā)的push消息流水記錄。當(dāng)流水狀態(tài)為INIT,終端處于在線狀態(tài),流水的更新時(shí)間超過一分鐘這三個(gè)條件同時(shí)滿足時(shí),從MSG表中將流水的push內(nèi)容體封裝,并和push流水組裝成pushTask提交到Facade模塊的業(yè)務(wù)線程池,從而將push消息發(fā)送到終端。

    3 應(yīng)用與測(cè)試

    商用多媒體平臺(tái)終端推送服務(wù)為了達(dá)到點(diǎn)對(duì)點(diǎn)推送、分組管理發(fā)送、準(zhǔn)確到達(dá)等需求,定制設(shè)計(jì)成推送流水的存儲(chǔ)、推送消息的發(fā)送和推送消息的確認(rèn)三個(gè)模塊,以下是該終端推送服務(wù)的相關(guān)測(cè)試。

    3.1 Broker模塊的內(nèi)存占用和推送效率測(cè)試

    由于Broker模塊所在的服務(wù)器會(huì)與大量的終端建立長(zhǎng)連接,因此對(duì)Broker模塊內(nèi)存占用和連接數(shù)之間的關(guān)系進(jìn)行了測(cè)試。在Clear商用多媒體云平臺(tái)環(huán)境下,用單臺(tái)虛擬機(jī)搭建了Broker模塊,用軟件模擬支持自定義推送協(xié)議的終端,記錄Broker服務(wù)器的內(nèi)存隨著終端增加的變化。同時(shí)使用了相同的虛擬機(jī)搭建了常用的基于XMPP協(xié)議的開源Openfire[10]服務(wù)器,并用軟件模擬終端XMPP客戶端與服務(wù)器保持長(zhǎng)連接,進(jìn)行同樣的測(cè)試來對(duì)比。

    測(cè)試結(jié)果發(fā)現(xiàn),隨著終端數(shù)的增加,Broker模塊內(nèi)存增長(zhǎng)并不明顯,每個(gè)終端的連接平均消耗11.83KB內(nèi)存;隨著終端數(shù)的增加,Openfire的內(nèi)存占用明顯增高,平均每個(gè)連接占用146.2KB,是Broker的12倍。這是因?yàn)镺penfire支持的XMPP協(xié)議較復(fù)雜,保存了很多無關(guān)數(shù)據(jù),自帶Web管理界面,因此對(duì)內(nèi)存消耗較大,而Broker模塊只維護(hù)連接的開銷及連接與終端的映射,得益于終端推送協(xié)議的精簡(jiǎn)設(shè)計(jì)。

    然后對(duì)Broker模塊的推送效率進(jìn)行了測(cè)試,同樣以O(shè)penfire作為對(duì)比,共9000個(gè)終端,每個(gè)終端發(fā)送12條push消息,共計(jì)108000條push消息。對(duì)于Broker模塊,直接向其發(fā)送push指令,不使用Facade模塊是為了避免流水落庫(kù)對(duì)實(shí)驗(yàn)結(jié)果的影響。對(duì)Openfire通過XMPP標(biāo)準(zhǔn)客戶端類庫(kù)Smack進(jìn)行模擬,在推送過程中均沒有持久化存儲(chǔ)push消息的發(fā)送流水。如表3所示。

    表3 Broker模塊推送效率測(cè)試結(jié)果

    Broker模塊的平均吞吐量是Openfire的2.1倍,同時(shí)Broker模塊發(fā)送的push消息通過異步補(bǔ)償?shù)姆绞酱_保無丟失,而Openfire的push消息到達(dá)率為93.77%,Openfire沒有相應(yīng)的補(bǔ)償機(jī)制。

    3.2 Facade模塊的吞吐量測(cè)試

    Facade模塊負(fù)責(zé)接收推送請(qǐng)求,將push消息的發(fā)送流水落庫(kù),并發(fā)送push給Broker模塊。Facade的吞吐量測(cè)試,如圖6所示。

    圖6 Facade吞吐量測(cè)試

    測(cè)試過程中共模擬3000個(gè)終端,向每個(gè)終端推送10條消息,實(shí)驗(yàn)有兩次,第一次由單臺(tái)(Facade模塊的)虛擬機(jī)對(duì)外發(fā)送,第二次是由兩臺(tái)虛擬機(jī)組成的集群共同發(fā)送。

    圖6中發(fā)現(xiàn),單臺(tái)服務(wù)器的吞吐量為每秒872.1條,兩臺(tái)的綜合吞吐量為每秒1685.4條。在push消息的發(fā)送過程匯總,F(xiàn)acade模塊的吞吐量基本比較平滑,這是由于Facade模塊用了線程池異步提交的方式,對(duì)外暴露RocketMQ的消息接口,在推送請(qǐng)求的接收、push流水的落庫(kù)、發(fā)送push給Broker模塊這3個(gè)環(huán)節(jié)中全部異步化操作,可以緩解流量高峰,起到緩沖作用。

    Facade模塊和Broker模塊在單臺(tái)服務(wù)器的吞吐量方面有較大的差距,這是由于Broker模塊精簡(jiǎn)化,但Facade模塊需要與數(shù)據(jù)庫(kù)交互。在生產(chǎn)環(huán)境中,兩個(gè)模塊分開各自部署在集群中,需增加Facade模塊的集群數(shù)量以提高系統(tǒng)整體的吞吐量,實(shí)驗(yàn)過程中發(fā)現(xiàn)Facade集群數(shù)與Broker集群數(shù)比值為5∶1較為合適。

    4 總結(jié)

    本文在設(shè)計(jì)終端推送服務(wù)的時(shí)候,結(jié)合商用多媒體云平臺(tái)的行業(yè)需求特征,將存儲(chǔ)發(fā)送流水、推送push消息和push消息確認(rèn)3個(gè)環(huán)節(jié)異步解耦以提高吞吐量,主要解決了推送消息可靠到達(dá)的問題。

    后續(xù)工作可以將推送服務(wù)進(jìn)一步完善,提高吞吐量,在實(shí)驗(yàn)中改進(jìn)推送效率和資源消耗問題,嘗試將推送服務(wù)對(duì)其他云服務(wù)開放,提供更多分析數(shù)據(jù),加強(qiáng)平臺(tái)的開放性建設(shè)。

    [1] 代超,鄧中亮.基于Netty的面向移動(dòng)終端的推送服務(wù)設(shè)計(jì)[J].軟件,2015,12:002.

    [2] 吉亞云, 劉新, 葉德建. 商用多媒體信息發(fā)布系統(tǒng)持久層設(shè)計(jì)與優(yōu)化[J]. 計(jì)算機(jī)工程, 2015, 41(1): 261-265.

    [3] Gudla S K, Bose J, Sunkara S, et al. A unified push notifications service for mobile devices[C]//Electronics, Computing and Communication Technologies (CONECCT), 2015 IEEE International Conference. IEEE, 2015: 1-6.

    [4] 蘇毅. 移動(dòng)多媒體推送業(yè)務(wù)終端功能研究[D]. 北京:北京郵電大學(xué), 2009.

    [5] Thangavel D, Ma X, Valera A, et al. Performance evaluation of MQTT and CoAP via a common middleware[C]//Intelligent Sensors, Sensor Networks and Information Processing (ISSNIP), 2014 IEEE Ninth International Conference. IEEE, 2014: 1-6.

    [6] 汪海占, 邸萌, 黃祥林. 基于 XMPP 協(xié)議的 Android 消息推送設(shè)計(jì)與實(shí)現(xiàn)[J]. 科技廣場(chǎng), 2015 (2): 40-46.

    [7] Sinha A, Paul N, Devarajan S. Cloud based mobile device management systems and methods: U.S. Patent 9,060,239[P]. 2015-6-16.

    [8] Maurer N, Wolfthal M. Netty in Action[M]. Manning Publications, 2016.

    [9] Foong A, Hady F. Storage As Fast As Rest of the System[C]//Memory Workshop (IMW), 2016 IEEE 8th International. IEEE, 2016: 1-4.

    [10] Sun M, Wang S, Fang Z, et al. Design of an Instant Messaging System Based on the IaaS Cloud Platform[J]. Journal of Communications, 2015, 10(9).

    Design of Terminal Push Service Based on Commercial Multimedia Cloud

    Wang Yu1, Ye Dejian2

    (1. Software School, Fudan University, Shanghai 201203, China;2. Engineering Research Center of Cyber Security Auditing and Monitoring, Ministry of Education, Shanghai 201203, China)

    In order to meet the business needs of commercial multimedia cloud platform, we design a new terminal push service which divides the push service into three parts, i.e. the storage of push record, the delivery of push message, and the confirm of the delivery. This terminal push service realizes point-to-point delivery, the management of terminal grouping of the upper service ensures the reliable arrival of the push message. According to the experiments, this terminal push service satisfies the point-to-point grouping push demands with high push efficiency, high throughput, and stable memory usage.

    Terminal push service; Reliable arrival of message; Point-to-point delivery

    王鈺(1993-),女,江西,碩士研究生,研究方向:網(wǎng)絡(luò)多媒體。 葉德建(1976-),男,浙江,副教授,研究方向:網(wǎng)絡(luò)多媒體。

    1007-757X(2017)06-0045-05

    TP311

    A

    2017.04.07)

    猜你喜歡
    流水消息指令
    聽我指令:大催眠術(shù)
    流水
    文苑(2020年10期)2020-11-07 03:15:26
    一張圖看5G消息
    ARINC661顯控指令快速驗(yàn)證方法
    LED照明產(chǎn)品歐盟ErP指令要求解讀
    流水有心
    天津詩人(2017年2期)2017-11-29 01:24:12
    前身寄予流水,幾世修到蓮花?
    視野(2015年6期)2015-10-13 00:43:11
    消息
    消息
    消息
    久久欧美精品欧美久久欧美| avwww免费| eeuss影院久久| 免费电影在线观看免费观看| 国产精品免费一区二区三区在线| 免费大片18禁| 亚洲人与动物交配视频| 国产在线男女| 如何舔出高潮| 精品国内亚洲2022精品成人| 成年女人看的毛片在线观看| 波多野结衣高清作品| 亚洲精品久久国产高清桃花| 成熟少妇高潮喷水视频| 老熟妇乱子伦视频在线观看| 亚洲欧洲国产日韩| videossex国产| 中文字幕免费在线视频6| 色5月婷婷丁香| 中文字幕av成人在线电影| 亚洲自偷自拍三级| 亚洲国产色片| 老师上课跳d突然被开到最大视频| 免费无遮挡裸体视频| 精品人妻视频免费看| 舔av片在线| 51国产日韩欧美| 啦啦啦韩国在线观看视频| av.在线天堂| 成人国产麻豆网| 女人十人毛片免费观看3o分钟| 久久精品久久久久久久性| 国产在线男女| 男人舔奶头视频| 国产一区二区在线av高清观看| 亚洲最大成人手机在线| 国产日韩欧美在线精品| 成人毛片a级毛片在线播放| 97超视频在线观看视频| 亚洲欧美日韩高清专用| 日韩一区二区视频免费看| 成人毛片60女人毛片免费| 精品午夜福利在线看| 男插女下体视频免费在线播放| 精品久久久久久久久久久久久| h日本视频在线播放| eeuss影院久久| 最近中文字幕高清免费大全6| 99热这里只有是精品在线观看| 亚洲人成网站在线观看播放| av在线观看视频网站免费| 亚洲最大成人av| 少妇人妻精品综合一区二区 | 国产高潮美女av| 亚洲精品色激情综合| 午夜免费激情av| 观看免费一级毛片| 欧美精品一区二区大全| 久久久久久久午夜电影| 麻豆av噜噜一区二区三区| 97超碰精品成人国产| 男人舔奶头视频| a级毛片a级免费在线| 国产成人aa在线观看| 国产欧美日韩精品一区二区| 日韩一本色道免费dvd| 亚洲欧洲日产国产| 桃色一区二区三区在线观看| 成人高潮视频无遮挡免费网站| 精华霜和精华液先用哪个| 国产黄色小视频在线观看| 久久久国产成人精品二区| 特级一级黄色大片| 九九久久精品国产亚洲av麻豆| 一个人观看的视频www高清免费观看| 特大巨黑吊av在线直播| 插逼视频在线观看| 成年女人永久免费观看视频| 麻豆av噜噜一区二区三区| 搞女人的毛片| 免费av毛片视频| 最近手机中文字幕大全| 亚洲人成网站高清观看| 两个人的视频大全免费| 99九九线精品视频在线观看视频| 欧美另类亚洲清纯唯美| 亚洲欧美精品自产自拍| 国产精品日韩av在线免费观看| 国产精品美女特级片免费视频播放器| 午夜免费男女啪啪视频观看| 五月伊人婷婷丁香| 亚洲五月天丁香| 国产av一区在线观看免费| 小说图片视频综合网站| 亚洲国产欧美人成| 一级av片app| 亚洲国产精品合色在线| 在线免费观看的www视频| 免费观看的影片在线观看| 天堂网av新在线| 我的老师免费观看完整版| 国产一区二区在线av高清观看| 中文字幕精品亚洲无线码一区| 97超碰精品成人国产| 国产一区二区三区av在线 | 国产熟女欧美一区二区| 亚洲国产欧美在线一区| 国产黄色视频一区二区在线观看 | 人人妻人人澡欧美一区二区| 69av精品久久久久久| 亚洲国产精品久久男人天堂| 国产探花极品一区二区| 久久99蜜桃精品久久| 黄色视频,在线免费观看| 在线观看午夜福利视频| 看片在线看免费视频| av在线观看视频网站免费| av视频在线观看入口| 色尼玛亚洲综合影院| 人体艺术视频欧美日本| 九九热线精品视视频播放| 国产精品一二三区在线看| 国内精品一区二区在线观看| 国产成人精品婷婷| 特大巨黑吊av在线直播| 亚洲成人久久性| 国产视频首页在线观看| 午夜精品国产一区二区电影 | 亚洲aⅴ乱码一区二区在线播放| 亚洲精品乱码久久久v下载方式| 亚洲人成网站在线播放欧美日韩| 亚洲最大成人av| 极品教师在线视频| 成人毛片60女人毛片免费| 国产视频首页在线观看| 国产乱人偷精品视频| 国产极品精品免费视频能看的| 麻豆国产97在线/欧美| 韩国av在线不卡| 国产成人freesex在线| 日韩制服骚丝袜av| 午夜激情欧美在线| 日本与韩国留学比较| 嫩草影院新地址| 精品人妻一区二区三区麻豆| 国产亚洲5aaaaa淫片| 卡戴珊不雅视频在线播放| 国产又黄又爽又无遮挡在线| 国产精品福利在线免费观看| 午夜福利视频1000在线观看| 成人午夜精彩视频在线观看| 婷婷六月久久综合丁香| 日韩一区二区三区影片| 熟女电影av网| 校园人妻丝袜中文字幕| 亚洲欧美日韩高清在线视频| 18禁黄网站禁片免费观看直播| 亚洲五月天丁香| 精品国内亚洲2022精品成人| 亚洲美女视频黄频| 中文字幕精品亚洲无线码一区| 看免费成人av毛片| 床上黄色一级片| 美女高潮的动态| 夫妻性生交免费视频一级片| 欧美性感艳星| 99久久成人亚洲精品观看| 1000部很黄的大片| av卡一久久| 亚洲人成网站高清观看| 五月伊人婷婷丁香| 久久精品夜色国产| 美女脱内裤让男人舔精品视频 | 国产色爽女视频免费观看| 久久热精品热| 日韩高清综合在线| 特级一级黄色大片| 99热只有精品国产| 久久精品久久久久久久性| 成人亚洲欧美一区二区av| 色哟哟·www| 国产一级毛片在线| 麻豆久久精品国产亚洲av| 久久综合国产亚洲精品| 免费人成在线观看视频色| 欧美日韩在线观看h| videossex国产| 午夜视频国产福利| 亚洲综合色惰| 成人二区视频| 九九在线视频观看精品| 69人妻影院| av在线老鸭窝| 午夜福利在线在线| 免费大片18禁| 亚洲va在线va天堂va国产| 国产女主播在线喷水免费视频网站 | 3wmmmm亚洲av在线观看| 噜噜噜噜噜久久久久久91| 久99久视频精品免费| 特大巨黑吊av在线直播| 少妇的逼水好多| 色哟哟哟哟哟哟| 国产精品国产三级国产av玫瑰| 久久久精品欧美日韩精品| 亚洲国产色片| 乱码一卡2卡4卡精品| 久久鲁丝午夜福利片| 日本免费一区二区三区高清不卡| 亚洲av免费在线观看| 观看美女的网站| 免费在线观看成人毛片| 国产精品人妻久久久久久| 精品人妻偷拍中文字幕| 亚洲最大成人av| 久久精品久久久久久久性| 国产探花极品一区二区| 欧美+亚洲+日韩+国产| 亚洲精品粉嫩美女一区| 插阴视频在线观看视频| 女的被弄到高潮叫床怎么办| 18+在线观看网站| 国产免费一级a男人的天堂| 亚洲欧洲国产日韩| 少妇裸体淫交视频免费看高清| 99久久精品国产国产毛片| 亚洲不卡免费看| 欧美人与善性xxx| 亚洲精品亚洲一区二区| 床上黄色一级片| 禁无遮挡网站| 九九爱精品视频在线观看| 欧美人与善性xxx| 2021天堂中文幕一二区在线观| 久久精品国产清高在天天线| 日本爱情动作片www.在线观看| 深爱激情五月婷婷| 久久精品国产亚洲网站| 国产精品不卡视频一区二区| 欧美日韩在线观看h| а√天堂www在线а√下载| 又爽又黄a免费视频| 日日啪夜夜撸| 深爱激情五月婷婷| 国产中年淑女户外野战色| 日日摸夜夜添夜夜添av毛片| 黄色一级大片看看| 有码 亚洲区| 可以在线观看的亚洲视频| 亚洲欧美日韩高清在线视频| 日韩国内少妇激情av| 亚洲欧美成人综合另类久久久 | 国产麻豆成人av免费视频| 精品少妇黑人巨大在线播放 | 爱豆传媒免费全集在线观看| av女优亚洲男人天堂| 特级一级黄色大片| 在线观看av片永久免费下载| 久久韩国三级中文字幕| 嘟嘟电影网在线观看| 亚洲av二区三区四区| 日韩制服骚丝袜av| 最后的刺客免费高清国语| 成年av动漫网址| 欧美日韩一区二区视频在线观看视频在线 | av天堂在线播放| 午夜亚洲福利在线播放| 熟女人妻精品中文字幕| 婷婷精品国产亚洲av| 国产精品一及| 久久人人爽人人片av| 亚洲国产精品合色在线| 日日撸夜夜添| .国产精品久久| av免费在线看不卡| 国产成人aa在线观看| 不卡视频在线观看欧美| 日韩一本色道免费dvd| 欧美性感艳星| 99久久成人亚洲精品观看| 国产亚洲5aaaaa淫片| 插阴视频在线观看视频| 国产伦理片在线播放av一区 | 亚洲欧美日韩卡通动漫| 日本在线视频免费播放| 在线观看66精品国产| 一本—道久久a久久精品蜜桃钙片 精品乱码久久久久久99久播 | av视频在线观看入口| 亚洲美女搞黄在线观看| 国产白丝娇喘喷水9色精品| 久久精品国产清高在天天线| 亚洲av免费高清在线观看| 天堂av国产一区二区熟女人妻| 免费看a级黄色片| 狠狠狠狠99中文字幕| 中文在线观看免费www的网站| 午夜福利高清视频| 久久久色成人| 精品一区二区三区人妻视频| 最近手机中文字幕大全| 在线天堂最新版资源| 夜夜爽天天搞| 久久精品国产亚洲av涩爱 | h日本视频在线播放| 日本免费a在线| 国产探花在线观看一区二区| 久久人人爽人人爽人人片va| 国产成人精品一,二区 | 麻豆一二三区av精品| 国产精品国产三级国产av玫瑰| 免费黄网站久久成人精品| 日本与韩国留学比较| 最近的中文字幕免费完整| 人妻夜夜爽99麻豆av| 男人的好看免费观看在线视频| h日本视频在线播放| а√天堂www在线а√下载| 日韩成人伦理影院| 我要看日韩黄色一级片| 在线播放无遮挡| 有码 亚洲区| 午夜精品一区二区三区免费看| 国产精品一及| 男女那种视频在线观看| 只有这里有精品99| 欧美成人一区二区免费高清观看| 色尼玛亚洲综合影院| 毛片一级片免费看久久久久| 麻豆一二三区av精品| 搡女人真爽免费视频火全软件| 精品一区二区三区视频在线| 欧美激情国产日韩精品一区| 99久久中文字幕三级久久日本| 亚洲欧美中文字幕日韩二区| 不卡视频在线观看欧美| 亚州av有码| 欧美3d第一页| 亚洲成人久久性| 超碰av人人做人人爽久久| 国产 一区 欧美 日韩| 亚洲成人精品中文字幕电影| 一本一本综合久久| 久久人妻av系列| 全区人妻精品视频| 免费大片18禁| 国产成人精品一,二区 | 国产精品久久久久久av不卡| 少妇的逼水好多| 97人妻精品一区二区三区麻豆| 欧美成人一区二区免费高清观看| 欧美潮喷喷水| 国产午夜精品久久久久久一区二区三区| 亚洲五月天丁香| 99精品在免费线老司机午夜| 亚洲成人精品中文字幕电影| 18禁裸乳无遮挡免费网站照片| 人人妻人人看人人澡| 久久精品夜夜夜夜夜久久蜜豆| 久久久久网色| 欧美高清成人免费视频www| 亚洲综合色惰| 麻豆国产av国片精品| 日本熟妇午夜| 亚洲av免费在线观看| 久久精品久久久久久久性| 小说图片视频综合网站| 国国产精品蜜臀av免费| 国产单亲对白刺激| 全区人妻精品视频| 在线观看美女被高潮喷水网站| 国产精品人妻久久久久久| 狂野欧美激情性xxxx在线观看| 午夜免费男女啪啪视频观看| 一级毛片久久久久久久久女| 岛国毛片在线播放| 欧美成人一区二区免费高清观看| 精品熟女少妇av免费看| 亚洲欧美中文字幕日韩二区| 2022亚洲国产成人精品| 亚洲精品456在线播放app| 18禁黄网站禁片免费观看直播| 晚上一个人看的免费电影| 久久精品久久久久久噜噜老黄 | 国产黄片美女视频| 在线观看午夜福利视频| 国产成人精品久久久久久| 久久久久网色| 欧美又色又爽又黄视频| 成人二区视频| avwww免费| 99久久人妻综合| www.色视频.com| 国产亚洲av片在线观看秒播厂 | 一区二区三区高清视频在线| 一级黄片播放器| 欧美日本亚洲视频在线播放| 欧美成人精品欧美一级黄| 久久精品久久久久久噜噜老黄 | 欧美日韩综合久久久久久| 午夜免费激情av| 日本黄大片高清| 好男人在线观看高清免费视频| 成人毛片a级毛片在线播放| 最近2019中文字幕mv第一页| 2021天堂中文幕一二区在线观| 男人狂女人下面高潮的视频| 草草在线视频免费看| 精品久久久久久久久久久久久| 一本—道久久a久久精品蜜桃钙片 精品乱码久久久久久99久播 | 亚洲乱码一区二区免费版| 性欧美人与动物交配| 看非洲黑人一级黄片| 国产精品久久电影中文字幕| 日韩欧美三级三区| 精品国内亚洲2022精品成人| 99九九线精品视频在线观看视频| 婷婷亚洲欧美| 禁无遮挡网站| 男人舔奶头视频| 干丝袜人妻中文字幕| 成人三级黄色视频| 又爽又黄a免费视频| av又黄又爽大尺度在线免费看 | 少妇高潮的动态图| 一级毛片久久久久久久久女| 免费一级毛片在线播放高清视频| 高清日韩中文字幕在线| 99热这里只有是精品在线观看| 精品人妻偷拍中文字幕| 好男人在线观看高清免费视频| 高清午夜精品一区二区三区 | 欧美不卡视频在线免费观看| 久久这里只有精品中国| 欧美zozozo另类| 国产高清三级在线| 久久精品国产亚洲av香蕉五月| 色尼玛亚洲综合影院| 久久99热这里只有精品18| 直男gayav资源| 26uuu在线亚洲综合色| 欧美成人免费av一区二区三区| 神马国产精品三级电影在线观看| 欧美日韩乱码在线| 99久国产av精品| 亚洲精品日韩在线中文字幕 | 国产探花极品一区二区| 国产视频首页在线观看| av在线老鸭窝| 亚洲综合色惰| 亚洲久久久久久中文字幕| 国产精品无大码| 韩国av在线不卡| 亚洲成人久久性| 春色校园在线视频观看| 老熟妇乱子伦视频在线观看| 深爱激情五月婷婷| 波多野结衣巨乳人妻| 99在线人妻在线中文字幕| 日本一本二区三区精品| 99久久中文字幕三级久久日本| 亚洲国产精品久久男人天堂| 精华霜和精华液先用哪个| 成人鲁丝片一二三区免费| 日本五十路高清| 午夜爱爱视频在线播放| 欧美日韩一区二区视频在线观看视频在线 | 久久国产乱子免费精品| a级毛色黄片| 大型黄色视频在线免费观看| 久久九九热精品免费| 在线观看av片永久免费下载| 国产精品蜜桃在线观看 | 欧美成人免费av一区二区三区| 91麻豆精品激情在线观看国产| 精品国内亚洲2022精品成人| 亚洲av男天堂| 精品久久久久久成人av| 又粗又硬又长又爽又黄的视频 | 国产一区二区激情短视频| 欧美+日韩+精品| 97热精品久久久久久| 成人毛片60女人毛片免费| 国产亚洲欧美98| 日韩制服骚丝袜av| 麻豆一二三区av精品| 日日干狠狠操夜夜爽| av.在线天堂| 秋霞在线观看毛片| 国内揄拍国产精品人妻在线| 啦啦啦韩国在线观看视频| 亚洲av一区综合| 美女脱内裤让男人舔精品视频 | 不卡一级毛片| 又爽又黄无遮挡网站| 美女国产视频在线观看| 国产色婷婷99| 搡老妇女老女人老熟妇| 亚洲中文字幕日韩| 国产亚洲欧美98| 99热网站在线观看| 国产精品人妻久久久久久| 夜夜爽天天搞| 精品人妻偷拍中文字幕| 欧美高清性xxxxhd video| 国产国拍精品亚洲av在线观看| 国产免费男女视频| 久久九九热精品免费| 2021天堂中文幕一二区在线观| 久久精品国产鲁丝片午夜精品| 久久精品影院6| 免费看光身美女| 亚洲最大成人手机在线| 亚洲国产精品sss在线观看| 丝袜喷水一区| 亚洲av一区综合| 亚洲中文字幕日韩| 国产69精品久久久久777片| www.色视频.com| 亚洲人成网站在线观看播放| 亚洲精品影视一区二区三区av| 国产爱豆传媒在线观看| 九九爱精品视频在线观看| 国产精品三级大全| 国语自产精品视频在线第100页| 成人av在线播放网站| 18禁黄网站禁片免费观看直播| 国产日韩欧美在线精品| а√天堂www在线а√下载| 亚洲欧美精品自产自拍| 免费看av在线观看网站| 国产一区亚洲一区在线观看| 不卡视频在线观看欧美| 亚洲国产色片| 国内揄拍国产精品人妻在线| 欧美变态另类bdsm刘玥| 国模一区二区三区四区视频| 日本五十路高清| 国产大屁股一区二区在线视频| 黄色视频,在线免费观看| 熟女电影av网| 成人鲁丝片一二三区免费| 爱豆传媒免费全集在线观看| 精品少妇黑人巨大在线播放 | 国产欧美日韩精品一区二区| 久久韩国三级中文字幕| 亚洲av中文av极速乱| 国产精品永久免费网站| 国产视频首页在线观看| 在线天堂最新版资源| 亚洲一区高清亚洲精品| 波多野结衣高清作品| 国产精品乱码一区二三区的特点| 麻豆成人午夜福利视频| 国产高清激情床上av| 看黄色毛片网站| 成人无遮挡网站| 99国产极品粉嫩在线观看| 国产 一区 欧美 日韩| 少妇裸体淫交视频免费看高清| 国产成人精品久久久久久| 女的被弄到高潮叫床怎么办| 国国产精品蜜臀av免费| 亚洲成人av在线免费| 日本撒尿小便嘘嘘汇集6| 在线免费观看的www视频| 精品少妇黑人巨大在线播放 | 赤兔流量卡办理| 成人无遮挡网站| 国产精品无大码| 99精品在免费线老司机午夜| 性插视频无遮挡在线免费观看| 此物有八面人人有两片| 真实男女啪啪啪动态图| 国产高清有码在线观看视频| 男女啪啪激烈高潮av片| 国产大屁股一区二区在线视频| 日本免费a在线| 国产高潮美女av| 直男gayav资源| 偷拍熟女少妇极品色| 我的老师免费观看完整版| 九九爱精品视频在线观看| 噜噜噜噜噜久久久久久91| 成年女人看的毛片在线观看| 一卡2卡三卡四卡精品乱码亚洲| 国国产精品蜜臀av免费| 亚洲人成网站在线播放欧美日韩| 亚洲精品456在线播放app| 国产精品三级大全| 国产亚洲精品久久久久久毛片| 国产一级毛片在线| 久久久久久久午夜电影| 全区人妻精品视频| 成人亚洲精品av一区二区| 国产精品日韩av在线免费观看| 三级男女做爰猛烈吃奶摸视频| 干丝袜人妻中文字幕| 精品久久国产蜜桃| 亚洲人成网站在线播放欧美日韩| 国产v大片淫在线免费观看| a级毛片免费高清观看在线播放| 日本成人三级电影网站| 蜜桃亚洲精品一区二区三区| 亚洲精品粉嫩美女一区| 国产精品一区二区在线观看99 | 亚洲最大成人av| 全区人妻精品视频| 一卡2卡三卡四卡精品乱码亚洲| 中文字幕熟女人妻在线| 欧美最新免费一区二区三区| 性欧美人与动物交配| 97在线视频观看| 亚洲第一区二区三区不卡| 成人亚洲精品av一区二区| 黄色视频,在线免费观看|