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

多種負載均衡算法及其Java代碼實現

開發 后端 算法
負載均衡 建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展 網絡設備和 服務器的帶寬、增加 吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。

首先給大家介紹下什么是負載均衡(來自百科)

負載均衡 建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展 網絡設備和 服務器的帶寬、增加 吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。

負載均衡,英文名稱為Load Balance,其意思就是分攤到多個操作單元上進行執行,例如Web 服務器、 FTP服務器、 企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。

多種負載均衡算法及其Java代碼實現

本文講述的是”將外部發送來的請求均勻分配到對稱結構中的某一臺服務器上”的各種算法,并以Java代碼演示每種算法的具體實現,OK,下面進入正題,在進入正題前,先寫一個類來模擬Ip列表:

import java.util.HashMap;

/**  * @author ashang.peng@aliyun.com  * @date 二月 07, 2017  */

public class IpMap   {
    // 待路由的Ip列表,Key代表Ip,Value代表該Ip的權重
    public static HashMap<String, Integer> serverWeightMap =
            new HashMap<String, Integer>();

    static
    {
        serverWeightMap.put("192.168.1.100", 1);
        serverWeightMap.put("192.168.1.101", 1);
        // 權重為4
        serverWeightMap.put("192.168.1.102", 4);
        serverWeightMap.put("192.168.1.103", 1);
        serverWeightMap.put("192.168.1.104", 1);
        // 權重為3
        serverWeightMap.put("192.168.1.105", 3);
        serverWeightMap.put("192.168.1.106", 1);
        // 權重為2
        serverWeightMap.put("192.168.1.107", 2);
        serverWeightMap.put("192.168.1.108", 1);
        serverWeightMap.put("192.168.1.109", 1);
        serverWeightMap.put("192.168.1.110", 1);
    }
}

輪詢(Round Robin)法

輪詢調度算法的原理是每一次把來自用戶的請求輪流分配給內部中的服務器,從1開始,直到N(內部服務器個數),然后重新開始循環。算法的優點是其簡潔性,它無需記錄當前所有連接的狀態,所以它是一種無狀態調度。

其代碼實現大致如下:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**  * @author ashang.peng@aliyun.com  * @date 二月 07, 2017  */

class RoundRobin   {
    private static Integer pos = 0;

    public static String getServer()
    {
        // 重建一個Map,避免服務器的上下線導致的并發問題
        Map<String, Integer> serverMap =
                new HashMap<String, Integer>();
        serverMap.putAll(IpMap.serverWeightMap);

        // 取得Ip地址List
        Set<String> keySet = serverMap.keySet();
        ArrayList<String> keyList = new ArrayList<String>();
        keyList.addAll(keySet);

        String server = null;
        synchronized (pos)
        {
            if (pos > keySet.size())
                pos = 0;
            server = keyList.get(pos);
            pos ++;
        }

        return server;
    }
}

由于serverWeightMap中的地址列表是動態的,隨時可能有機器上線、下線或者宕機,因此為了避免可能出現的并發問題,方法內部要新建局部變量serverMap,現將serverMap中的內容復制到線程本地,以避免被多個線程修改。這樣可能會引入新的問題,復制以后serverWeightMap的修改無法反映給serverMap,也就是說這一輪選擇服務器的過程中,新增服務器或者下線服務器,負載均衡算法將無法獲知。新增無所謂,如果有服務器下線或者宕機,那么可能會訪問到不存在的地址。因此,服務調用端需要有相應的容錯處理,比如重新發起一次server選擇并調用。

對于當前輪詢的位置變量pos,為了保證服務器選擇的順序性,需要在操作時對其加鎖,使得同一時刻只能有一個線程可以修改pos的值,否則當pos變量被并發修改,則無法保證服務器選擇的順序性,甚至有可能導致keyList數組越界。

輪詢法的優點在于:試圖做到請求轉移的絕對均衡。

輪詢法的缺點在于:為了做到請求轉移的絕對均衡,必須付出相當大的代價,因為為了保證pos變量修改的互斥性,需要引入重量級的悲觀鎖synchronized,這將會導致該段輪詢代碼的并發吞吐量發生明顯的下降。

隨機(Random)法

通過系統的隨機算法,根據后端服務器的列表大小值來隨機選取其中的一臺服務器進行訪問。由概率統計理論可以得知,隨著客戶端調用服務端的次數增多,

其實際效果越來越接近于平均分配調用量到后端的每一臺服務器,也就是輪詢的結果。

隨機法的代碼實現大致如下:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**  * @author ashang.peng@aliyun.com  * @date 二月 07, 2017  */

 class Random   {
    public static String getServer()
    {
        // 重建一個Map,避免服務器的上下線導致的并發問題   
        Map<String, Integer> serverMap =
                new HashMap<String, Integer>();
        serverMap.putAll(IpMap.serverWeightMap);

        // 取得Ip地址List   
        Set<String> keySet = serverMap.keySet();
        ArrayList<String> keyList = new ArrayList<String>();
        keyList.addAll(keySet);

        java.util.Random random = new java.util.Random();
        int randomPos = random.nextInt(keyList.size());

        return keyList.get(randomPos);
    }
}

整體代碼思路和輪詢法一致,先重建serverMap,再獲取到server列表。在選取server的時候,通過Random的nextInt方法取0~keyList.size()區間的一個隨機值,從而從服務器列表中隨機獲取到一臺服務器地址進行返回。基于概率統計的理論,吞吐量越大,隨機算法的效果越接近于輪詢算法的效果。

源地址哈希(Hash)法

源地址哈希的思想是根據獲取客戶端的IP地址,通過哈希函數計算得到的一個數值,用該數值對服務器列表的大小進行取模運算,得到的結果便是客服端要訪問服務器的序號。采用源地址哈希法進行負載均衡,同一IP地址的客戶端,當后端服務器列表不變時,它每次都會映射到同一臺后端服務器進行訪問。

源地址哈希算法的代碼實現大致如下:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**  * @author ashang.peng@aliyun.com  * @date 二月 07, 2017  */

 class Hash      {
    public static String getServer()
    {
        // 重建一個Map,避免服務器的上下線導致的并發問題
        Map<String, Integer> serverMap =
                new HashMap<String, Integer>();
        serverMap.putAll(IpMap.serverWeightMap);

        // 取得Ip地址List
        Set<String> keySet = serverMap.keySet();
        ArrayList<String> keyList = new ArrayList<String>();
        keyList.addAll(keySet);

        // 在Web應用中可通過HttpServlet的getRemoteIp方法獲取
        String remoteIp = "127.0.0.1";
        int hashCode = remoteIp.hashCode();
        int serverListSize = keyList.size();
        int serverPos = hashCode % serverListSize;

        return keyList.get(serverPos);
    }
}

前兩部分和輪詢法、隨機法一樣就不說了,差別在于路由選擇部分。通過客戶端的ip也就是remoteIp,取得它的Hash值,對服務器列表的大小取模,結果便是選用的服務器在服務器列表中的索引值。

源地址哈希法的優點在于:保證了相同客戶端IP地址將會被哈希到同一臺后端服務器,直到后端服務器列表變更。根據此特性可以在服務消費者與服務提供者之間建立有狀態的session會話。

源地址哈希算法的缺點在于:除非集群中服務器的非常穩定,基本不會上下線,否則一旦有服務器上線、下線,那么通過源地址哈希算法路由到的服務器是服務器上線、下線前路由到的服務器的概率非常低,如果是session則取不到session,如果是緩存則可能引發”雪崩”。如果這么解釋不適合明白,可以看我之前的一篇文章MemCache超詳細解讀,一致性Hash算法部分。

加權輪詢(Weight Round Robin)法

不同的后端服務器可能機器的配置和當前系統的負載并不相同,因此它們的抗壓能力也不相同。給配置高、負載低的機器配置更高的權重,讓其處理更多的請;而配置低、負載高的機器,給其分配較低的權重,降低其系統負載,加權輪詢能很好地處理這一問題,并將請求順序且按照權重分配到后端。加權輪詢法的代碼實現大致如下:

import java.util.*;

/**  * @author ashang.peng@aliyun.com  * @date 二月 07, 2017  */
class WeightRoundRobin   {
    private static Integer pos;

    public static String getServer()
    {
        // 重建一個Map,避免服務器的上下線導致的并發問題
        Map<String, Integer> serverMap =
                new HashMap<String, Integer>();
        serverMap.putAll(IpMap.serverWeightMap);

        // 取得Ip地址List
        Set<String> keySet = serverMap.keySet();
        Iterator<String> iterator = keySet.iterator();

        List<String> serverList = new ArrayList<String>();
        while (iterator.hasNext())
        {
            String server = iterator.next();
            int weight = serverMap.get(server);
            for (int i = 0; i < weight; i++)
                serverList.add(server);
        }

        String server = null;
        synchronized (pos)
        {
            if (pos > keySet.size())
                pos = 0;
            server = serverList.get(pos);
            pos ++;
        }

        return server;
    }
}

與輪詢法類似,只是在獲取服務器地址之前增加了一段權重計算的代碼,根據權重的大小,將地址重復地增加到服務器地址列表中,權重越大,該服務器每輪所獲得的請求數量越多。

加權隨機(Weight Random)法

與加權輪詢法一樣,加權隨機法也根據后端機器的配置,系統的負載分配不同的權重。不同的是,它是按照權重隨機請求后端服務器,而非順序。

import java.util.*;

/**  * @author ashang.peng@aliyun.com  * @date 二月 07, 2017  */

 class WeightRandom   {
    public static String getServer()
    {
        // 重建一個Map,避免服務器的上下線導致的并發問題
        Map<String, Integer> serverMap =
                new HashMap<String, Integer>();
        serverMap.putAll(IpMap.serverWeightMap);

        // 取得Ip地址List
        Set<String> keySet = serverMap.keySet();
        Iterator<String> iterator = keySet.iterator();

        List<String> serverList = new ArrayList<String>();
        while (iterator.hasNext())
        {
            String server = iterator.next();
            int weight = serverMap.get(server);
            for (int i = 0; i < weight; i++)
                serverList.add(server);
        }

        java.util.Random random = new java.util.Random();
        int randomPos = random.nextInt(serverList.size());

        return serverList.get(randomPos);
    }
}

這段代碼相當于是隨機法和加權輪詢法的結合,比較好理解,就不解釋了。

最小連接數(Least Connections)法

最小連接數算法比較靈活和智能,由于后端服務器的配置不盡相同,對于請求的處理有快有慢,它是根據后端服務器當前的連接情況,動態地選取其中當前

積壓連接數最少的一臺服務器來處理當前的請求,盡可能地提高后端服務的利用效率,將負責合理地分流到每一臺服務器。

前面幾種方法費盡心思來實現服務消費者請求次數分配的均衡,當然這么做是沒錯的,可以為后端的多臺服務器平均分配工作量,***程度地提高服務器的利用率,但是實際情況是否真的如此?實際情況中,請求次數的均衡真的能代表負載的均衡嗎?這是一個值得思考的問題。

上面的問題,再換一個角度來說就是:以后端服務器的視角來觀察系統的負載,而非請求發起方來觀察。最小連接數法便屬于此類。

最小連接數算法比較靈活和智能,由于后端服務器的配置不盡相同,對于請求的處理有快有慢,它正是根據后端服務器當前的連接情況,動態地選取其中當前積壓連接數最少的一臺服務器來處理當前請求,盡可能地提高后端服務器的利用效率,將負載合理地分流到每一臺機器。由于最小連接數設計服務器連接數的匯總和感知,設計與實現較為繁瑣,此處就不說它的實現了。

附了一個說明“NGINX的實現原因,大家可以看看”:blog.csdn.net

責任編輯:張燕妮 來源: duzhi
相關推薦

2019-04-12 09:00:01

負載均衡Java服務器

2010-12-20 09:57:46

交換技術CEF負載均衡

2018-07-27 08:39:44

負載均衡算法實現

2010-05-04 16:10:51

負載均衡算法

2023-03-03 08:26:32

負載均衡算法服務

2010-04-21 12:28:50

Oracle負載均衡

2024-12-20 12:12:19

Redis負載均衡節點

2010-04-27 13:12:04

負載均衡算法

2018-04-10 10:49:17

負載均衡算法服務器

2010-04-22 17:53:36

Apache負載均衡

2010-04-26 16:36:31

DNS負載均衡設置

2010-04-20 22:19:29

tomcat負載均衡配

2010-04-22 18:27:37

Apache負載均衡

2017-07-03 08:08:25

負載均衡分類

2010-05-05 18:55:51

負載均衡算法

2009-05-01 09:33:27

應用交換負載均衡

2025-09-01 08:57:31

2010-05-10 14:11:41

負載均衡算法

2023-09-06 13:58:01

負載均衡算法

2014-11-17 09:53:16

負載均衡
點贊
收藏

51CTO技術棧公眾號

亚洲香肠在线观看| 日韩中文字幕一区二区三区| 91精品综合久久久久久| www成人免费| 无码精品人妻一区二区三区影院| 日韩国产在线观看一区| 久久这里只有精品视频首页| 中文字幕在线播放一区| 国产原创一区| 午夜久久福利影院| 亚洲午夜精品国产| 午夜福利一区二区三区| 国内精品在线播放| 国产精品va在线| 538任你躁在线精品视频网站| 你懂的一区二区三区| 日韩欧美国产精品一区| 牛夜精品久久久久久久| 乱馆动漫1~6集在线观看| 国产精品理伦片| 久久av免费观看| 国产激情久久久久久熟女老人av| 美女精品在线观看| 国内外成人免费激情在线视频| 亚洲色图27p| 亚洲精品白浆高清| 亚洲国产日韩精品在线| 波多野结衣在线免费观看| 亚洲a∨精品一区二区三区导航| 亚洲午夜激情av| 久久国产精品免费观看| 性开放的欧美大片| 久久精品亚洲国产奇米99| 成人免费看片网址| 国产av一区二区三区精品| 美女视频黄 久久| 日韩暖暖在线视频| 国产尤物在线视频| 亚洲人体大胆视频| 欧美激情一级二级| 久草福利资源在线| 精品国产网站| 亚洲视频在线观看视频| 欧美bbbbb性bbbbb视频| 国偷自产视频一区二区久| 精品剧情在线观看| 国产清纯白嫩初高中在线观看性色| www.久久久久爱免| 91精品国产一区二区三区| 伊人国产在线视频| 韩国精品视频在线观看| 欧美日韩国产免费一区二区 | 亚洲av网址在线| 高清日韩中文字幕| 亚洲第一色中文字幕| 国产视频久久久久久| 丁香5月婷婷久久| 日韩成人小视频| 一女三黑人理论片在线| 亚洲欧美校园春色| 一本一本久久a久久精品综合小说 一本一本久久a久久精品牛牛影视 | 久久中文精品| 国产精品激情自拍| 一级黄色片视频| 国产一区视频导航| 97视频资源在线观看| 丰满肥臀噗嗤啊x99av| 成人国产在线观看| 欧美激情一区二区三区在线视频| 日韩三级电影网| 国产嫩草影院久久久久| 亚洲欧美日韩精品久久久| 国产在线高清理伦片a| 亚洲制服丝袜一区| 精品国产免费av| 成人18视频在线观看| 欧美午夜精品一区二区三区 | 五月天婷婷导航| 琪琪一区二区三区| 国产色综合天天综合网| 精品乱子伦一区二区| 成人av中文字幕| 涩涩涩999| 91精品久久| 色综合夜色一区| 中文字幕色网站| 欧美五码在线| 久久久av亚洲男天堂| 五月天婷婷丁香| 久久精品国产999大香线蕉| 97免费资源站| 国产在线自天天| 亚洲黄色尤物视频| av五月天在线| 超碰地址久久| 中文在线资源观看视频网站免费不卡| 少妇影院在线观看| 青青草国产精品亚洲专区无| 成人在线免费网站| av色图一区| 亚洲成va人在线观看| 蜜臀av免费观看| 精品视频高潮| 久久av红桃一区二区小说| www.国产com| 国产福利一区二区三区视频| 色爱区成人综合网| zzzwww在线看片免费| 91麻豆精品国产自产在线| 欧美多人猛交狂配| 伊人精品成人久久综合软件| 国产综合香蕉五月婷在线| 午夜福利视频一区二区| 一区二区三区不卡在线观看 | 国产成人精品视频ⅴa片软件竹菊| 欧美三级一区| 日韩视频中文字幕| 无码免费一区二区三区| 成人av资源网站| 国产精品88久久久久久妇女| jizzjizz少妇亚洲水多| 精品视频—区二区三区免费| 国产在线拍揄自揄拍| 国产综合久久久久久鬼色| 午夜精品一区二区三区四区| 麻豆理论在线观看| 亚洲成人xxx| 麻豆国产尤物av尤物在线观看 | 国产精品亚洲激情| 国产综合视频一区二区三区免费| 亚洲福利视频一区二区| 中文字幕乱妇无码av在线| 99久久精品费精品国产| 国产精品偷伦视频免费观看国产| 黄视频在线播放| 欧美性xxxx极品hd满灌| 中国黄色a级片| 亚洲激情自拍| 国外成人在线视频网站| 欧美1234区| 欧美成人欧美edvon| 波多野结衣爱爱视频| 国产在线不卡一卡二卡三卡四卡| 一区二区不卡在线观看| 亚洲伦理网站| 久久av.com| 高清乱码毛片入口| 亚洲国产欧美在线人成| 国产极品一区二区| 一本久久综合| 欧美激情视频一区二区三区| 亚洲高清黄色| 中文字幕亚洲激情| 97视频免费在线| 亚洲精品乱码久久久久| av电影在线播放| 99国产精品| 欧美一区二区综合| 成人国产一区| 插插插亚洲综合网| 黑人操亚洲女人| 欧美性极品xxxx做受| 国产精品成人无码免费| 久久国产剧场电影| 日本一道在线观看| 久久成人福利| 国产精品成熟老女人| 黄色网在线播放| 亚洲精品在线三区| 特级西西444www大精品视频免费看| 国产日韩欧美精品在线| www.超碰97.com| 欧美天天视频| 欧美午夜视频在线| 偷拍自拍亚洲| 国产做受高潮69| 国产福利在线| 日韩午夜电影av| 国产成人无码av| 椎名由奈av一区二区三区| 精品人妻在线视频| 日韩经典一区二区| 亚洲中文字幕无码一区二区三区 | 久久精品国产福利| 麻豆一区二区在线观看| 视频在线不卡| 制服丝袜成人动漫| 国产成人无码精品亚洲| 国产精品免费aⅴ片在线观看| 国产大学生av| 日本vs亚洲vs韩国一区三区| 日韩精品一区二区在线视频| 香蕉人人精品| 91丨九色丨国产| 99re久久| 91av在线看| 性爱视频在线播放| 一区二区三区在线播放欧美| 成人乱码一区二区三区| 欧美综合在线视频| 亚洲国产精一区二区三区性色| 国产欧美一区二区精品仙草咪| 中文字幕视频观看| 久久成人免费电影| aaa毛片在线观看| 韩日视频一区| 欧美日韩在线免费观看视频| 国产99久久精品一区二区300| 91九色蝌蚪成人| 国产人妖一区| 国产精品久久久久久久久久尿| 国产夫妻在线播放| 欧美成在线视频| 理论片午午伦夜理片在线播放| 亚洲性xxxx| 日本福利片高清在线观看| 精品三级在线看| 国产黄色免费大片| 91精品国产91久久综合桃花 | 99亚洲精品视频| 欧美日中文字幕| 免费精品视频一区二区三区| 一区二区三区四区高清视频 | 国产69久久精品成人看| 欧美家庭影院| 欧美美最猛性xxxxxx| 麻豆免费在线观看| 中文字幕日韩免费视频| 精品久久av| 亚洲日韩中文字幕| 你懂的视频在线播放| 亚洲国产精品专区久久| 亚洲精品久久久久久久久久 | 久久久久久久久免费视频| 国产一区二区三区18 | 久久福利网址导航| 欧美成人视屏| 久久天天躁狠狠躁夜夜av| 免费观看在线午夜影视| 在线播放日韩av| 91精彩视频在线播放| 国产午夜精品视频| 成人午夜电影在线观看| 一区二区三区久久精品| wwwxxx在线观看| 色狠狠av一区二区三区香蕉蜜桃| 97在线观看免费观看高清| 在线播放日韩欧美| 天堂中文а√在线| 久久精品亚洲国产| a黄色片在线观看| 欧美国产视频日韩| 不卡视频观看| 国产91九色视频| 久久久久毛片| 成人黄色av免费在线观看| av在线亚洲一区| 鬼打鬼之黄金道士1992林正英| 国产精品99久久免费观看| 国新精品乱码一区二区三区18| 日韩动漫一区| 亚洲国产精品日韩| 亚洲欧洲中文字幕| 青青青国产在线观看| 亚洲欧美成人| 99热这里只有精品在线播放| 久久99国产精品免费| wwwxxxx在线观看| 97se亚洲国产综合在线| 成人性生交大片免费看无遮挡aⅴ| 国产精品久久毛片a| 九九热视频精品| 91国偷自产一区二区开放时间 | 日韩在线中文视频| 美洲精品一卡2卡三卡4卡四卡| 欧美一级高清免费| 成人在线视频观看| 国产精品18毛片一区二区| 亚洲激情播播| 国产日韩欧美大片| 亚洲少妇一区| 不用播放器的免费av| 波多野洁衣一区| 2019男人天堂| 亚洲一区二三区| 国产成人麻豆免费观看| 欧美成人video| 福利在线午夜| 国内外成人免费激情在线视频| 国产第一精品| 国产一级特黄a大片99| 色狮一区二区三区四区视频| 欧美午夜小视频| 久久国内精品自在自线400部| 超碰caoprom| 综合在线观看色| 亚洲不卡视频在线观看| 欧美一区二区在线不卡| 狠狠v欧美ⅴ日韩v亚洲v大胸| 欧美成人激情视频免费观看| 裤袜国产欧美精品一区| 不卡一区二区三区视频| 成人免费看片39| 欧洲黄色一级视频| 国产91色综合久久免费分享| 免费看黄色三级| 欧美日韩国内自拍| 成 人 黄 色 片 在线播放| 一区二区三区视频在线| 色在线中文字幕| 国产精品二区二区三区| 小说区亚洲自拍另类图片专区| 久久久久人妻精品一区三寸| 成人中文字幕合集| 青草影院在线观看| 欧美人动与zoxxxx乱| 黄色在线免费观看大全| 91精品成人久久| 91在线一区| 国产又粗又长又爽视频| 久热成人在线视频| 欧美福利第一页| 在线观看一区不卡| 欧美美女色图| 欧美尤物巨大精品爽| 精品视频自拍| 国产黄色片免费在线观看| 国产精品中文有码| 日韩激情综合网| 5566中文字幕一区二区电影| 在线播放麻豆| 国产精品爽黄69天堂a| 精品不卡一区| 丁香婷婷激情网| 国产亚洲短视频| 日本视频网站在线观看| 亚洲欧美制服另类日韩| 亚洲校园激情春色| 欧美亚洲一级二级| 日韩av中文在线观看| 在线观看国产精品一区| 色国产综合视频| 1769在线观看| 成人激情电影一区二区| 小说区亚洲自拍另类图片专区 | 特级西西444www高清大视频| 国产一区二区三区网站| 91久久久久久白丝白浆欲热蜜臀| 日韩精品无码一区二区三区| 日韩av在线播放中文字幕| 我不卡一区二区| 欧美日韩一区二区三区视频| 日本高清视频在线观看| 亚洲在线www| 欧美激情91| www.日本高清| 一本到一区二区三区| av在线免费一区| 亚洲a级在线播放观看| 狠狠爱www人成狠狠爱综合网| 黄色国产在线视频| 色综合久久综合中文综合网| sese一区| 91在线播放视频| 国产精品最新自拍| 男人天堂资源网| 精品日韩一区二区三区| 无码小电影在线观看网站免费| 日韩欧美一区二区三区久久婷婷| 蜜桃视频在线观看一区二区| www.色小姐com| 亚洲美女自拍视频| 99精品美女视频在线观看热舞| 日本一本中文字幕| 久久久精品日韩欧美| 一区二区三区免费在线| 久久久久久久久久久免费| 亚洲综合小说图片| 三日本三级少妇三级99| 精品久久久久久久久久久久| av在线播放网| 国产精品成人一区二区三区 | 成人a视频在线观看| 在线看片一区| 日本伦理一区二区三区| 亚洲国产精品中文| 小说区图片区亚洲| 岳毛多又紧做起爽| 日韩毛片视频在线看| 日韩a级作爱片一二三区免费观看| 国产精品网站视频| 一区二区高清| 免费在线观看h片| 一区二区在线免费视频| 高清精品视频| 亚洲黄色片免费| 日本韩国精品在线| 国产在线xxx| 超碰97免费观看| 国产日韩亚洲欧美综合|