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

聽說你會架構設計?來,弄一個微信群聊系統

開發 架構
微信群聊及搶紅包等功能背后蘊藏著復雜的交互技術和精心設計的產品體驗,通過這些核心組件、數據庫表和詳細的交互流程,讓用戶能夠輕松參與并享受群聊系統帶來的便利。

1. 引言

大家好,我是小?。

當我那天拿著手機,正在和朋友們的微信群里暢聊著八卦新聞和即將到來的周末計劃時,忽然一條帶著喜意的消息撲面而來,消息正中間寫著八個大字:恭喜發財,大吉大利。

圖片圖片

搶紅包!!相信大部分人對此都不陌生,那微信的這個群聊系統是如何設計的,讓我們可以方便地聊天、分享圖片和表情,還有那個神奇的紅包功能呢?

這個問題一直困擾著,于是我決定深入了解一下,看看微信的群聊系統背后的設計是怎樣的。

微信群聊系統設計

微信作為 10 億用戶級別的全民 App,想必大家都用過,微信建群功能是微信里面核心的一個能力,它可以將數百個好友或陌生人放進一個群空間。

圖片圖片

或許你已經在微信上體驗過很多次群組聊天,但你是否好奇過這個背后的系統是如何設計的呢?

今天我們就來探討一下。

2. 系統需求

2.1 系統特點與功能需求

微信群聊功能是社交應用的核心功能之一,它允許用戶創建自己的社交圈子,與家人、朋友或共同興趣愛好者進行友好地交流。

以下是微信群聊系統的核心功能:

圖片圖片

  • 創建群聊:用戶可以創建新的聊天群組,邀請其他好友用戶加入或與陌生人面對面建群。
  • 群組管理:群主和管理員能夠管理群成員,設置規則和權限。
  • 消息發送和接收:允許群成員發送文本、圖片、音頻、視頻等多種類型的消息,并推送給所有群成員。
  • 實時通信:消息應該能夠快速傳遞,確保實時互動。
  • 搶紅包:用戶在群聊中發送任意個數和金額的紅包,群成員可以搶到隨機金額的紅包。

2.2 非功能需求:應對高并發、高性能、海量存儲

當我們面對 10 億微信用戶每天都可能使用建群功能的情景時,就需要處理大規模的用戶并發。這就引出了系統的非功能需求,包括:

  • 高并發:系統需要支持大量用戶同時創建和使用群組,以確保無延遲的用戶體驗。
  • 高性能:快速消息傳遞、即時響應,是數字社交的關鍵。
  • 海量存儲:系統必須可擴展,以容納用戶生成的海量消息文本、圖片及音視頻數據。

3. 概要設計

在概要設計中,我們考慮了系統的核心組件和基本業務的概要設計。

3.1 核心組件

微信群聊系統中,會涉及到如下核心組件和協議。

圖片圖片

  • 客戶端:接收手機或 PC 端微信群聊的消息,并實時傳輸給后臺服務器
  • Websocket傳輸協議:支持客戶端和后臺服務端的實時交互,開銷低,實時性高,常用于微信、QQ 等 IM 系統通信系統
  • 長連接集群:與客戶端進行 Websocket 長連接的系統集群,并將消息通過中間件轉發到應用服務器
  • 消息處理服務器集群:提供實時消息的處理能力,包括數據存儲、查詢、與數據庫交互等
  • 消息推送服務器集群:這是信息的中轉站,負責將消息傳遞給正確的群組成員
  • 數據庫服務器集群:用于存儲用戶文本數據、圖片的縮略圖、音視頻元數據等
  • 分布式文件存儲集群:存儲用戶圖片、音視頻等文件數據

3.2 業務概要設計

群聊創建

  • 唯一ID分配:當用戶請求創建一個新群組時,系統生成一個唯一的群組 ID,通常可以使用分布式 ID 生成器如雪花算法(Snowflake)或直接使用數據庫自增 ID。這里我們為了實現簡便,采用 MySQL 的自增 ID。
  • 群組信息存儲:將群組 ID 和相關信息(例如群名、創建者 ID 等)存儲在群組數據庫中。
  • 成員關聯:將群主添加為群組的創始成員,同時創建者也會成為管理員。
  • 消息歷史記錄:為了確保新成員能夠訪問以前的消息,將此新群組的群組 ID 與用戶消息關聯存儲。

除了拉好友建群,微信還實現了面對面建群的能力。

接下來,我們深入探討了三到四個核心功能的詳細設計,包括面對面建群、消息發送與接收及搶紅包功能。

4. 面對面建群

用戶發起面對面建群,并輸入一個 4 位數的隨機碼,周圍的用戶輸入該隨機碼后可加入群聊,面對面建群功能通常涉及數據表設計和核心業務交互流程如下。

4.1 數據庫表設計

  1. User 表:存儲用戶信息,包括用戶 ID、昵稱、頭像等。
  2. Group 表:存儲群組信息,包括群 ID、群名稱、創建者 ID、群成員個數等。
  3. GroupMember 表:關聯用戶和群組,包括用戶 ID 和群 ID。
  4. RandomCode 表:存儲面對面建群的隨機碼和關聯的群 ID。

4.2 核心業務交互流程

圖片圖片

用戶 A 在手機端應用中發起面對面建群,并輸入一個隨機碼,校驗通過后,等待周圍(50 米之內)的用戶加入。此時,系統將用戶信息以 HashMap 的方式存入緩存中,并設置過期時間為 3min。

{隨機碼,用戶列表[用戶A(ID、名稱、頭像)]}

用戶 B 在另一個手機端發起面對面建群,輸入指定的隨機碼,如果該用戶周圍有這樣的隨機碼,則進入同一個群聊等待頁面,并可以看到其它群員的頭像和昵稱信息。

此時,系統除了根據隨機碼獲取所有用戶信息,也會實時更新緩存里的用戶信息。

圖片圖片

當第一個用戶點擊進入該群時,就可以加入群聊,系統將生成的隨機碼保存在 RandomCode 表中,并關聯到新創建的群 ID,更新群成員的個數。

然后,系統將用戶信息和新生成的群聊信息存儲在 Group、GroupMember 表中

成員加入,刷新群員信息

之后 B、C 用戶帶著隨機碼加入群聊時,手機客戶端向服務器后端發送請求,驗證隨機碼是否有效。服務器后端驗證隨機碼,檢查隨機碼是否存在于緩存中,以及是否在有效期內。

然后,判斷當前群成員是否滿員(目前普通用戶創建的群聊人數最多為 500 人),如果驗證通過,服務器后端將用戶 B、C 添加到群成員表 GroupMember 中,并返回成功響應。

移動客戶端應用收到成功響應后,更新用戶 B、C 的群聊列表,展示他們已加入的新群聊。

其它技術組件

這樣,用戶 A 通過創建隨機碼和周圍的用戶掃描二維碼的方式成功建立了一個面對面建群。這個功能涉及了多個技術組件,包括分布式緩存、數據庫、二維碼生成和驗證等。

同時,在面對面建群的過程中相當重要的能力是標識用戶的區域,比如 50 米以內。這個可以用到 Redis 的 GeoHash 算法,來獲取一個范圍內的所有用戶信息。

由于篇幅有限,這里不展開贅述,想了解更多和二維碼生成及位置算法的細節,可以看我之前的文章:聽說你會架構設計?來,弄一個公交&地鐵乘車系統。

5. 消息發送與接收

當某個成員在微信群里發言,系統需要處理消息的分發、通知其他成員、以及確保消息的顯示。以下是這一功能的詳細交互步驟,以及數據庫存儲方案。

5.1 交互流程

消息發送和接收時序圖如下:

圖片圖片

  1. 用戶A在群中發送一條帶有圖片、視頻或音頻的消息。
  2. 移動客戶端應用將消息內容和媒體文件上傳到服務器后端。
  3. 服務器后端接收到消息和媒體文件后,將消息內容存儲到 Message 表中,同時將媒體文件存儲到分布式文件存儲集群中。在 Message 表里,不僅記錄了媒體文件的 MediaID,以便關聯消息和媒體;還記錄了縮略圖、視頻封面圖等等。
  4. 服務器后端會向所有群成員廣播這條消息。移動客戶端應用接收到消息后,會根據消息類型(文本、圖片、視頻、音頻)加載對應的展示方式。
  5. 當用戶點擊查看圖片、視頻或音頻縮略圖時,客戶端應用會根據 MediaID 到對象存儲集群中獲取對應的媒體文件路徑,并將其展示給用戶。

這個流程確保了消息和媒體文件的有效存儲和展示。用戶可以上傳和查看各種類型的媒體數據,而服務器后端通過關聯 Message 和對象存儲服務器中的信息,實現了有效的消息存儲和展示。

5.2 消息存儲和展示

在微信群中保存和展示用戶的圖片、視頻或音頻數據,通常需要進行數據存儲和展示方面的設計。除了上面面對面建群功能中提到的用戶表和群組表以外,還需要以下表結構:

  1. Message表: 用于存儲消息,每個消息都有一個唯一的 MessageID,消息類型(文本、圖片、視頻、音頻),消息內容(文字、圖片縮略圖、視頻封面圖等),發送者 UserID、接收群 GroupID、發送時間等字段。
  2. Media表: 存儲用戶上傳的圖片、視頻、音頻等媒體數據。每個媒體文件都有一個唯一的 MediaID,文件路徑、上傳者 UserID、上傳時間等字段。
  3. MessageState表: 用于存儲用戶消息狀態,包括 MessageID、用戶 ID、是否已讀等。在消息推送時,通過這張表計算未讀數,統一推送給用戶,并在離線用戶的手機上展示一個小數字代表消息未讀數。

我們知道,MySQL 每次查詢 select count 類型的語句時,都會觸發全表掃描,所以每次加載消息未讀數都很慢。

為了查詢性能考慮,我們可以將用戶的消息數量存入 Redis,并實時記錄一個未讀數值。并且,當未讀數大于 99 時,就將未讀數值置為 100 且不再增加。

當推送用戶消息時,只要未讀數為 100,就將推送消息數設置為 99+,以此來提升存儲的性能和交互的效率。

6. 搶紅包

搶紅包功能允許用戶在群聊中發送任意個數和金額的紅包,群成員可以搶到隨機金額的紅包,但要保證每個用戶的紅包金額不小于 0.01 元。

圖片圖片

搶紅包的詳細交互流程如下:

  1. 用戶接收到搶紅包通知,點擊通知打開群聊頁面
  2. 用戶點擊搶紅包,后臺服務驗證用戶資格,確保用戶尚未領取過此紅包
  3. 若用戶資格驗證通過,后臺服務分配紅包金額并存儲領取記錄
  4. 用戶在微信群中看到領取金額,紅包狀態更新為“已領取”
  5. 異步調用支付接口,將紅包金額更新到錢包里

搶紅包功能需要關注搶紅包的數據庫設計,搶紅包實時性和紅包分配算法。

6.1 數據庫設計

紅包表 redpack 的字段如下:

  • id: 主鍵,紅包ID
  • totalAmount: 總金額
  • surplusAmount: 剩余金額
  • total: 紅包總數
  • surplusTotal: 剩余紅包總數
  • userId: 發紅包的用戶ID

該表用來記錄用戶發了多少紅包,以及需要維護的剩余金額。

紅包記錄表 redpack_record 如下:

  • id: 主鍵,記錄ID
  • redpackId: 紅包ID,外鍵
  • userId: 用戶ID
  • amount: 搶到的金額

記錄表用來存放用戶具體搶到的紅包信息,也是紅包表的副表。

6.2 實時性

1、發紅包

  1. 用戶設置紅包的總金額和個數后,在紅包表中增加一條數據,開始發紅包
  2. 為了保證實時性和搶紅包的效率,在 Redis 中增加一條記錄,存儲紅包 ID 和總人數 n
  3. 搶紅包消息推送給所有群成員

2、搶紅包

從 2015 年起,微信紅包的搶紅包和拆紅包就分離了,用戶點擊搶紅包后需要進行兩次操作。這也是為什么明明有時候搶到了紅包,點開后卻發現該紅包已經被領取完了。

搶紅包的交互步驟如下:

  1. 搶紅包:搶操作在 Redis 緩存層完成,通過原子遞減的操作來更新紅包個數,到 0 后就說明搶光了。
  2. 拆紅包:拆紅包時,首先會實時計算金額,一般是通過二倍均值法實現(即 0.01 到剩余平均值的 2 倍之間)。
  3. 紅包記錄:用戶獲取紅包金額后,通過數據庫的事務操作累加已經領取的個數和金額,并更新紅包表和記錄表。
  4. 轉賬:為了提升效率,最終的轉賬為異步操作,這也是為什么在春節期間,紅包領取后不能立即在余額中看到的原因。

6.3 紅包分配算法

紅包金額分配時,由于是隨機分配,所以有兩種實現方案:實時拆分和預先生成。

1、實時拆分

實時拆分,指的是在搶紅包時實時計算每個紅包的金額,以實現紅包的拆分過程。

這個需要我們設計一個好的拆分算法,讓紅包拆分時一直保證后續待拆分紅包的金額不能為空。

實時拆分時,不容易做到拆分的紅包金額服從正態分布規律。

2、預先生成

預先生成,指的是在紅包開搶之前已經完成了紅包的金額拆分,搶紅包時只是依次取出拆分好的紅包金額。

這種方式對拆分算法要求較低,可以拆分出隨機性很好的紅包金額,但通常需要結合隊列使用,而且需要多設計一個表來存儲紅包的拆分金額。

3、二倍均值法

綜合上述優缺點考慮,以及微信群聊中的人數不多(目前最高 500 人),所以我們采用實時拆分的方式,用二倍均值法來生成隨機紅包,只滿足隨機即可,不需要正態分布。

故可能出現很大的紅包差額,但這更刺激不是嗎??

使用二倍均值法生成的隨機數,每次隨機金額會在 0.01 ~ 剩余平均值*2 之間。

假設當前紅包剩余金額為 10 元,剩余個數為 5,10/5 = 2,則當前用戶可以搶到的紅包金額為:0.01 ~ 4 元之間。

4、算法優化

用二倍均值法生成的隨機紅包雖然接近平均值,但之前我在某論壇上看到過類似的說法:微信紅包金額的隨機性和領取的時機有關系,尤其是金額不高的情況下。

于是,小?耗費巨資在微信群發了多個紅包,得出了這樣一個結論:如果發出的 紅包總額 = 紅包數*0.01 + 0.01,比如:發了 4 個紅包,總額為 0.05,則最后一個人領取的紅包金額一定是 0.02。

圖片圖片

無一例外:

圖片圖片

所以,紅包金額算法大概率不是隨機分配,而是在派發紅包之前已經做了處理。比如在紅包金額生成前,先生成一個不存在的紅包,這個紅包的總額為 0.01 * 紅包總數。

而在紅包金額分配的時候,會對每個紅包的隨機值基礎上加上 0.01,以此來保證每個紅包的最小值不為 0。

所以,假設用戶發了總額為 0.04 的個數為 3 的紅包時,需要先提取 3*0.01 到 "第四個" 不存在的紅包里面,于是第一個人搶到的紅包隨機值是 0 ~ (0.04-3*0.01)/3。

由于擔心紅包超額,所以除數的商是向下取二位小數,0 ~ (0.04-3*0.01)/3 ==> (0 ~ 0) = 0,再加上之前提取的保底值 0.01,于是前兩個搶到的紅包金額都是 0.01。最后一個紅包的金額為紅包余額,即 0.02。

算法邏輯用 Go 語言實現如下:

import (
   "fmt"
   "math"
   "math/rand"
   "strconv"
)

type RedPack struct {    SurplusAmount float64 // 剩余金額    SurplusTotal int // 紅包剩余個數}

// 取兩位小數
func remainTwoDecimal(num float64) float64 {    numStr := strconv.FormatFloat(num, 'f', 2, 64)    num, _ = strconv.ParseFloat(numStr, 64)
    return num
}

// 獲取隨機金額的紅包
func getRandomRedPack(rp *RedPack) float64 {
    if rp.SurplusTotal <= 0 {
        // 該紅包已經被搶完了
        return 0
    }

    if rp.SurplusTotal == 1 {
        return remainTwoDecimal(rp.SurplusAmount + 0.01)
    }

       // 向下取整
    avgAmount := math.Floor(100*(rp.SurplusAmount/float64(rp.SurplusTotal))) / float64(100)
    avgAmount = remainTwoDecimal(avgAmount)

       // 生成隨機數種子
    rand.NewSource(time.Now().UnixNano())

    var max float64
    if avgAmount > 0 {
        max = 2*avgAmount - 0.01
    } else {
        max = 0
    }
    money := remainTwoDecimal(rand.Float64()*(max) + 0.01)

    rp.SurplusTotal -= 1
    rp.SurplusAmount = remainTwoDecimal(rp.SurplusAmount + 0.01 - money)

    return money
}

func main() {
    rp := &RedPack{
        SurplusAmount: 0.06,
        SurplusTotal:  5,
    }    // 每個紅包先保留 0.01 的余額
    rp.SurplusAmount -= 0.01 * float64(rp.SurplusTotal)
    total := rp.SurplusTotal
    for i := 0; i < total; i++ {
        fmt.Println(getRandomRedPack(rp))
    }
}

打印結果:

0.01、0.01、0.01、0.01、0.02

符合預期!

7. 總結

微信群聊及搶紅包等功能背后蘊藏著復雜的交互技術和精心設計的產品體驗,通過這些核心組件、數據庫表和詳細的交互流程,讓用戶能夠輕松參與并享受群聊系統帶來的便利。

并且,添加了這些充滿趣味的功能,也是微信用戶眾多的原因之一吧!

微信建群功能的系統設計不僅僅是一個技術壯麗的展示,更是數字社交的魔法之一。

責任編輯:武曉燕 來源: xin猿意碼
相關推薦

2023-11-08 07:05:07

架構設計群聊系統

2025-03-17 02:00:00

2023-12-14 17:27:28

架構設計數據表

2023-12-29 11:32:27

2025-09-01 07:27:02

2025-09-08 08:25:45

2023-10-08 22:38:52

2022-12-25 18:58:53

架構RabbitMQ

2024-03-01 18:55:54

內存調試Go 語言

2024-08-28 08:38:51

2025-05-27 10:15:00

Go開發軟件架構

2021-04-28 08:52:22

高并發架構設高并發系統

2023-03-09 07:29:28

微信朋友圈架構

2019-08-22 10:54:05

分布式系統架構

2022-05-17 20:37:41

MyPick泛型對象類型

2020-04-02 09:31:49

微前端架構系統

2013-08-19 15:00:53

微信易信

2019-08-09 14:20:46

微信軟件手機

2019-01-28 11:46:53

架構運維技術

2024-04-24 10:38:22

點贊
收藏

51CTO技術棧公眾號

久久人91精品久久久久久不卡| 欧美精品在线观看一区二区| 国产在线一区二区三区四区| www亚洲视频| 国产欧美一区二区精品久久久| 欧美色网站导航| 超碰97在线看| 日本一区二区三区在线观看视频| 日韩精品视频网站| 久久av在线看| 国产精品无码一区二区三区免费| 丁香婷婷久久| 午夜成人免费视频| 亚洲国产精品综合| 蜜桃av中文字幕| 久久精品国产在热久久| 91国产在线精品| 国产精品69久久久久孕妇欧美| 国产精品白丝一区二区三区| 欧美日韩中字一区| 91国视频在线| 色a资源在线| 亚洲国产精品av| 精品国产电影| 国产精品天天操| 日韩中文字幕91| 97在线视频免费播放| 亚洲欧洲综合网| 欧美日本成人| 亚洲精品电影网| 又色又爽又黄18网站| a成人v在线| 色哟哟在线观看一区二区三区| 在线观看污视频| 黄网站在线播放| 国产精品伦理一区二区| 欧美日韩国产一二| 亚洲区小说区图片区| 国产福利精品一区二区| 91九色蝌蚪国产| 一级黄色录像大片| 免费成人在线观看视频| 国产精品91久久久久久| 国产99久久久| 免费欧美在线| 国外成人免费在线播放| 小早川怜子一区二区的演员表| 深爱激情久久| 亚洲人成在线一二| 黄色片视频免费观看| 亚洲专区第一页| 久久国产99| 欧美一级黄色网| 四虎成人永久免费视频| 亚洲永久在线| 日产日韩在线亚洲欧美| 国产精品suv一区| 亚洲在线免费| 国产成人av网址| 狠狠狠狠狠狠狠| 日韩专区中文字幕一区二区| 国产成人在线亚洲欧美| 高潮毛片又色又爽免费| 蓝色福利精品导航| 成人在线一区二区| 性一交一乱一透一a级| 国产91精品一区二区麻豆网站| caoporn国产精品免费公开| 二区三区在线视频| 91免费国产在线| 日韩偷拍一区二区| 黄色国产网站在线播放| 一区二区三区精品| 国产二区视频在线| 欧美片第1页| 欧美久久免费观看| 日韩大尺度视频| 日本一区福利在线| 在线性视频日韩欧美| 日本在线一级片| 亚洲全部视频| 国产精品啪视频| 国产激情久久久久久熟女老人av| 成人a区在线观看| 日本免费高清一区二区| 九义人在线观看完整免费版电视剧| 亚洲日本va午夜在线影院| 日本中文字幕一级片| 密臀av在线播放| 欧美三级日韩在线| 国产性猛交96| 精品国产一区二区三区久久久蜜臀 | 久久香蕉国产线看观看网| 欧美日韩午夜视频| 亚洲理论在线| 国产日韩在线看片| 色婷婷av一区二区三区之红樱桃| 99精品国产热久久91蜜凸| 午夜精品视频在线观看一区二区 | 亚洲人成伊人成综合图片| 最近2019中文字幕第三页视频| 免费麻豆国产一区二区三区四区| 国产模特精品视频久久久久| 国产原创欧美精品| 天天干天天草天天射| √…a在线天堂一区| 国产成人成网站在线播放青青| 日本人妖在线| 亚洲精品视频免费观看| 日本黄网站免费| 999精品视频在这里| 在线观看日韩视频| 日韩黄色精品视频| 国产精品一区二区久激情瑜伽 | 999国产精品视频| 136fldh精品导航福利| 国产成人毛毛毛片| 国产精品沙发午睡系列990531| 和岳每晚弄的高潮嗷嗷叫视频| 国产第一亚洲| 亚洲欧美另类中文字幕| 国产在线观看免费视频今夜| 精品一区二区三区香蕉蜜桃 | 男人和女人做事情在线视频网站免费观看| 午夜一区二区三区视频| 无人码人妻一区二区三区免费| 国产一区2区| 欧美资源在线观看| 天堂av资源在线| 亚洲影院免费观看| 青青草精品在线| 一区二区三区在线电影| 国产精品丝袜视频| 成人在线视频成人| 欧美性高跟鞋xxxxhd| 手机免费看av片| 欧美激情在线| 91色精品视频在线| 黄av在线播放| 538在线一区二区精品国产| 日韩爱爱小视频| 自拍偷拍一区| 日韩av大片免费看| 女人天堂在线| 91国内精品野花午夜精品| 丰满少妇高潮一区二区| 久久国产欧美| 欧美精品一区二区三区在线四季| аⅴ资源天堂资源库在线| 一本大道久久a久久精二百| 精品人妻在线视频| 最新国产乱人伦偷精品免费网站| 国产超碰91| 黄在线观看免费网站ktv| 亚洲精品99999| 国产三级av片| 久久精品一区二区三区av| 成年人在线看片| 欧美一区二区性| 成人av在线天堂| 在线中文字幕视频观看| 日韩欧美色综合| 日本天堂在线视频| 26uuu国产电影一区二区| 久久精品午夜福利| 成人在线国产| 91九色视频在线观看| brazzers在线观看| 亚洲免费电影在线观看| 国产精品无码粉嫩小泬| 亚洲欧美综合网| 蜜桃视频无码区在线观看| 日韩一级大片| 日本成人黄色免费看| 偷拍自拍亚洲| 欧美激情xxxx| 免费在线黄色电影| 69av一区二区三区| 国产一级特黄视频| 国产亚洲欧洲一区高清在线观看| 三级视频中文字幕| 激情av一区| 日本一区二区免费看| 国产精选久久| 97成人精品区在线播放| yw在线观看| 精品国产青草久久久久福利| 中文字幕在线欧美| 亚洲欧美日韩国产成人精品影院| 国产吃瓜黑料一区二区| 日韩精品久久理论片| 青青草免费在线视频观看| 天堂日韩电影| 川上优av一区二区线观看| 色在线免费观看| 久久久精品999| 欧美视频免费一区二区三区| 欧美久久久久免费| 精品国产一区二区三区四| 亚洲欧美激情一区二区| 麻豆av免费观看| 久久国产免费看| 2022亚洲天堂| 中文字幕一区二区精品区| 蜜桃导航-精品导航| 精品国产亚洲一区二区三区在线 | 亚洲欧美日韩一区在线| 99精品免费观看| 色老汉一区二区三区| 国产在线视频第一页| 中文字幕在线观看不卡视频| 国产伦精品一区二区三区妓女| 国产jizzjizz一区二区| 日韩不卡一二三| 男人天堂欧美日韩| 奇米影视亚洲色图| 欧美一区网站| 伊人久久大香线蕉成人综合网| 日韩高清成人在线| 国产伦理一区二区三区| 国产免费av国片精品草莓男男| 国产99久久精品一区二区永久免费| 波多野在线观看| 久久av红桃一区二区小说| 欧美69xxxx| 中文字幕一精品亚洲无线一区| 五月激情婷婷网| 亚洲第一免费播放区| 精品人妻少妇嫩草av无码专区| 在线亚洲+欧美+日本专区| 久久精品视频1| 精品久久久久久亚洲国产300| 久久久精品91| 亚洲一区二区高清| 男女免费视频网站| 亚洲素人一区二区| 日韩一区二区三区四区视频| 国产日韩成人精品| 我和岳m愉情xxxⅹ视频| 久久综合久久综合久久| 日韩精品卡通动漫网站| 91免费观看视频在线| jizz日本免费| 久久亚洲影视婷婷| 熟女俱乐部一区二区| 久久九九99视频| av电影网站在线观看| 国产欧美中文在线| 在线视频这里只有精品| 国产精品福利一区二区三区| 可以免费看av的网址| 亚洲天堂精品在线观看| 午夜激情福利电影| 日韩毛片视频在线看| 亚洲国产精品免费在线观看| 亚洲黄色免费网站| 九九九国产视频| 天天影视涩香欲综合网| 少妇一级淫片免费放中国| 一本一道综合狠狠老| 日本一本在线观看| 欧美日韩精品欧美日韩精品 | 精品国产乱码久久久久久夜甘婷婷| 国产成人免费看一级大黄| 精品国免费一区二区三区| 视频二区在线观看| 国产一区二区三区三区在线观看| 99青草视频在线播放视| 久久电影一区二区| free性欧美| 国产精品久久久久久av下载红粉| 亚洲a成人v| 国产精品国产三级欧美二区| 日韩极品少妇| 视频一区二区在线| 欧美在线高清| av7777777| 久久99精品国产.久久久久久| 91视频福利网| 99riav久久精品riav| 舐め犯し波多野结衣在线观看| 国产精品国产三级国产普通话99| 夫妇交换中文字幕| 亚洲曰韩产成在线| 欧美黄色一级大片| 91麻豆精品国产91久久久资源速度| 国内老熟妇对白xxxxhd| 日韩精品亚洲视频| а√天堂8资源在线官网| 57pao成人永久免费视频| 国产成人a视频高清在线观看| 高清国产一区| av在线不卡免费观看| 人妻激情另类乱人伦人妻| 久久久人人人| 免费黄视频在线观看| 国产亚洲成年网址在线观看| 九九热国产精品视频| 欧美午夜精品理论片a级按摩| 免费无遮挡无码永久在线观看视频| 婷婷国产在线综合| 国产一区二区三区黄片| 日韩精品在线观看网站| 丝袜美女在线观看| 国产精品久久视频| 人人香蕉久久| 日韩久久久久久久久久久久| 免费高清视频精品| 波多野结衣一本| 亚洲成a人片在线不卡一二三区| 亚洲一区二区色| 国产丝袜一区二区三区| 美洲精品一卡2卡三卡4卡四卡| 国产精品视频久久久| 亚洲三级网页| 我的公把我弄高潮了视频| 国内一区二区在线| 国产激情av在线| 色综合久久99| 亚洲色图欧美视频| 久久久女女女女999久久| 国产精品高清一区二区| 亚洲国产精品一区二区第四页av| 亚洲一区二区三区高清| 日韩高清一二三区| 最新热久久免费视频| 羞羞色院91蜜桃| 亚洲欧洲在线观看| 草草在线视频| 国产伦精品一区二区三区照片91 | 视频精品国内| 水蜜桃在线免费观看| 黄页视频在线91| av在线免费播放网址| 欧美日韩精品一区二区| 欧美日韩xx| 成人久久久久久| 久久久久国产精品| 亚洲图片 自拍偷拍| 亚洲欧美成aⅴ人在线观看| 91中文字幕在线播放| 日日噜噜噜夜夜爽亚洲精品| 91p九色成人| 亚洲一区二区三区精品动漫| 蜜桃av一区二区| 国产一区第一页| 欧美一区二区三区在线观看| 国产淫片在线观看| 超碰国产精品久久国产精品99| 伊人久久大香线蕉综合四虎小说 | 欧美黄色录像| 欧美日韩在线不卡视频| 国产色婷婷亚洲99精品小说| 久久国产香蕉视频| 日韩中文在线视频| 日本精品国产| 美女扒开大腿让男人桶| 97久久久精品综合88久久| 欧美性猛交bbbbb精品| 亚洲色图狂野欧美| 欧美系列精品| 国产情侣第一页| eeuss鲁片一区二区三区在线观看| 青青草在线观看视频| 日韩av在线不卡| 国产在线|日韩| 日本女人高潮视频| 粉嫩av一区二区三区| 亚州国产精品视频| 亚洲欧美日本另类| 国产免费av国片精品草莓男男| 男女激情免费视频| 久久久一区二区三区捆绑**| 中国精品一区二区| 欧美人与物videos| 亚洲婷婷伊人| 怡红院亚洲色图| 亚洲自拍偷拍图区| 日韩二区三区| 91亚洲精品一区二区| 伊人成人在线视频| 精品人妻中文无码av在线| 欧美一级理论片| 日韩脚交footjobhdboots| 亚洲人体一区| 成人免费黄色在线| 亚洲精品无码久久久久| 欧美日本精品在线| 日韩高清影视在线观看| 色18美女社区| 日韩欧美高清在线视频| 成人影院在线看| 欧美日韩在线不卡一区| 国产馆精品极品| 波多野结衣高清在线| 久久久久久国产免费| 欧美精品尤物在线观看| 亚洲欧美日韩偷拍| 3d动漫精品啪啪一区二区竹菊| 91探花在线观看|