国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

這個Dubbo注冊中心擴展,有點意思!

共 8241字,需瀏覽 17分鐘

 ·

2022-02-11 20:32

大家好~我是小樓。其實這篇文章早就寫好了,本來上班第一天就發(fā)出來,拖到了現(xiàn)在。

是因為我發(fā)燒躺了3天,今天好點上班了,晚上來打最后一瓶點滴。生病真的很痛苦,大家多休息,多鍛煉,保持好的抵抗力~


今天想和大家聊聊Dubbo源碼中實現(xiàn)的一個注冊中心擴展。它很特殊,也幫我解決了一個困擾已久的問題,剛剛在生產(chǎn)中用了,效果很好,迫不及待想分享給大家。

Dubbo的擴展性非常靈活,可以無侵入源碼加載自定義擴展。能擴展協(xié)議、序列化方式、注冊中心、線程池、過濾器、負載均衡策略、路由策略、動態(tài)代理等等,甚至「擴展本身」也可以擴展。

在介紹今天的這個注冊中心擴展之前,先拋出一個問題,大家思考一下。

如何低成本遷移注冊中心?

有時出于各種目的需要遷移Dubbo的注冊中心,或因為覺得Nacos比較香,想從Zookeeper遷移到Nacos,或因前段時間曝出Consul禁止在中國境內(nèi)使用。

遷移注冊中心的方案大致有兩種:

  • 方案一:使用Dubbo提供的多注冊中心能力,Provider先進行雙注冊,Consumer逐步遷移消費新注冊中心,最后下線老注冊中心。該方案的缺點是修改時有上下游依賴關(guān)系。

  • 方案二:使用一個同步工具把老注冊中心的數(shù)據(jù)同步到新注冊中心,Consumer逐步遷移到新注冊中心,最后下線老注冊中心。同步工具有開源的Nacos-sync,我之前的文章《zookeeper到nacos的遷移實踐》就提到了這個方案。這個方案的缺點是架構(gòu)變得復(fù)雜,需要解決同步數(shù)據(jù)的順序性、一致性、同步組件的高可用等問題。

Nacos-sync 參考 https://github.com/nacos-group/nacos-sync

我們從「業(yè)務(wù)方成本」和「基礎(chǔ)架構(gòu)成本」兩個角度考慮一下這兩個方案:

業(yè)務(wù)方成本我們以每次業(yè)務(wù)方修改并上線代碼為1個單位,基礎(chǔ)架構(gòu)成本以增加一個新服務(wù)端組件為2個單位,從復(fù)雜度上來說基礎(chǔ)架構(gòu)成本遠遠高于業(yè)務(wù)方修改并上線代碼,但這里我們認為只是2倍關(guān)系,做過基礎(chǔ)組件開發(fā)的同學(xué)肯定感同身受,推動別人改代碼比自己埋頭寫代碼要難。

我們統(tǒng)計下上述方案中,遷移一對Consumer和Provider總共需要的成本是多少:

  • 方案一:Provider雙注冊+1;Consumer消費新注冊中心+1;Provider下線舊注冊中心+1;總成本為3
  • 方案二:同步組件+2;Consumer消費新注冊中心+1;Provider下線舊注冊中心+1;總成本為4

有沒有成本更低的方案?

首先我們不考慮引入同步組件,其次Provider和Consumer能否不修改就能解決?我覺得理論上肯定可以解決,因為Java的字節(jié)碼是可以動態(tài)修改的,肯定能達到這個目的,但這樣的復(fù)雜度和風(fēng)險會非常高。

退一步能否每個應(yīng)用只修改發(fā)布一次就完成遷移?

Dubbo配置多注冊中心可以參考這篇文章《幾個你不知道的dubbo注冊中心細節(jié)》,你會發(fā)現(xiàn)多注冊中心是通過配置文件配置的,如下

dubbo.registries.zk1.address=zookeeper://127.0.0.1:2181
dubbo.registries.zk2.address=zookeeper://127.0.0.1:2182

只修改一次代碼,就必須把這個配置變成動態(tài)的,有點難,但不是做不到,可在應(yīng)用啟動時遠程加載配置,或者采取替換配置文件的方式來達到目的。

但這只解決了部分問題,還有兩個問題需要解決:

  • Dubbo注冊、訂閱都發(fā)生在應(yīng)用啟動時,應(yīng)用啟動后就沒法修改了。也不是完全不能,如果采用了api的方式接入Dubbo可以通過改代碼來實現(xiàn),但幾乎這種方式不會被采用;
  • Dubbo消費沒法動態(tài)切換,多注冊中心消費時,Dubbo默認的行為是挑第一個可用的注冊中心進行調(diào)用,無法主動地進行切換;如果實現(xiàn)了主動切換還有個好處是穩(wěn)定性提高了很多,萬一新注冊中心出現(xiàn)問題還可以及時切回去。

這里針對第二點的消費邏輯做一點簡單說明,老版本(<2.7.5)邏輯比較簡單粗暴,代碼位于RegistryAwareClusterInvoker

  1. 挑選第一個可用的注冊中心進行調(diào)用

新版本(>=2.7.5)則稍微豐富一點,代碼位于ZoneAwareClusterInvoker

  1. 挑選一個可用且?guī)?code style="overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(255, 100, 65);">preferred偏好配置的注冊中心進行調(diào)用,注意這個偏好配置不同版本key還不一樣,有點坑
  2. 如果都不符合1,則挑選同一個分區(qū)且可用的注冊中心進行調(diào)用,分區(qū)也是通過參數(shù)配置,這個主要是為了跨機房的就近訪問
  3. 如果1、2都不符合,通過一個負載均衡算法挑選出一個可用的注冊中心進行調(diào)用
  4. 如果1、2、3都不符合,則挑選一個可用的注冊中心
  5. 如果上述都不符合,則使用第一個注冊中心進行調(diào)用

可以看出新版本功能很豐富,但它是有版本要求的,而且控制的key也變來變?nèi)ィ踔寥ニ岩幌乱灿蠦ug存在,所以如果是單一穩(wěn)定的高版本是可以通過這個來做,但大部分還是達不到這個要求。

很長一段時間以來,我都沒有想到一個好的辦法來解決這個問題,甚至我們公司內(nèi)部有直接修改Dubbo源碼來實現(xiàn)動態(tài)切換消費的能力,但這種入侵修改無法持續(xù),直到有一天瀏覽Dubbo源碼時,無意間看到了MultipleRegistry,仿佛發(fā)現(xiàn)了新大陸,用醍醐灌頂來形容一點不為過。

MultipleRegistry,有點意思!

MultipleRegistry是Dubbo 2.7.2引入的一個注冊中心擴展,注冊中心擴展圈起來,要考!意味著這個擴展可以在任何>=2.7.0版本上運行,稍微改改也能在2.7以下的版本使用

這究竟是個什么注冊中心的擴展呢?

實際上這個擴展并不是一個實際的注冊中心的擴展,而是一個包裝,它本身不提供服務(wù)注冊發(fā)現(xiàn)的能力,它只是把其他注冊中心聚合起來的一個空殼。

為什么這個「空殼」這么厲害呢?下面我們就來分析分析源碼。

由于剛好手上有3.0.0版本的源碼,所以接下來的源碼分析基于Dubbo 3.0.0版本,也不用擔(dān)心版本問題,這個擴展自從2.7.2引入之后幾乎沒有大的改動,只有Bugfix,所以什么版本基本都差不多。只分析接口級服務(wù)發(fā)現(xiàn),應(yīng)用級的暫時不分析,原理類似。

不過在講源碼之前,還得說說Dubbo注冊中心插件的運行原理,否則源碼可能看不懂,我們以開發(fā)一個注冊中心擴展為例:

  1. Dubbo注冊中心擴展需實現(xiàn)RegistryService和RegistryFactory接口
public?interface?RegistryService?{

????void?register(URL?url);

????void?unregister(URL?url);

????void?subscribe(URL?url,?NotifyListener?listener);

????void?unsubscribe(URL?url,?NotifyListener?listener);

????List?lookup(URL?url);
}

這里的五個接口分別是注冊、注銷、訂閱、取消訂閱、查詢,在Dubbo應(yīng)用啟動時會調(diào)用這些接口。

都比較好理解,需要提一下subscribe接口。

subscribe傳入了一個NotifyListener參數(shù),可以理解為一個回調(diào),當(dāng)監(jiān)聽的的URL發(fā)生變化時,調(diào)用這個NotifyListener通知Dubbo。

public?interface?NotifyListener?{
????void?notify(List?urls);
}

NotifyListener也是個接口,只有一個notify方法,這個方法傳入的參數(shù)是所消費的URL的所有Provider列表。

@SPI("dubbo")
public?interface?RegistryFactory?{
????@Adaptive({"protocol"})
????Registry?getRegistry(URL?url);
}

RegistryFactory是描述了如何創(chuàng)建Registry擴展的工廠類,URL就是配置中

zookeeper://127.0.0.1:2181
  1. 還需要遵守Dubbo SPI的加載規(guī)則擴展才能被正確加載

這些內(nèi)容官方文檔中說的比較清楚,如果有疑問可以看看Dubbo的官方文檔說明。

簡單介紹到此結(jié)束,接下來重點介紹MultipleRegistry。

首先看初始化,代碼只挑出重點,在初始化MultipleRegistry時,分別對注冊和訂閱的注冊中心進行初始化,這些注冊中心來自MultipleRegistry的URL配置,URL上的key分別為service-registry、reference-registry,實際測試下來URL的參數(shù)中帶奇怪的字符會導(dǎo)致編譯不通過,不過這并不是重點,基本的還是可用,而且也不一定要采用這種配置。

public?MultipleRegistry(URL?url,?boolean?initServiceRegistry,?boolean?initReferenceRegistry)?{
????...
????Map?registryMap?=?new?HashMap<>();
????//?初始化注冊的注冊中心
????if?(initServiceRegistry)?{
????????initServiceRegistry(url,?registryMap);
????}
????//?初始化訂閱的注冊中心
????if?(initReferenceRegistry)?{
????????initReferenceRegistry(url,?registryMap);
????}
????...
}

我們再看注冊和訂閱:

注冊比較簡單,只需要對剛剛初始化的serviceRegistries都進行注冊即可

?public?void?register(URL?url)?{
????super.register(url);
????for?(Registry?registry?:?serviceRegistries.values())?{
????????registry.register(url);
????}
}

訂閱時也是針對referenceRegistries的每個注冊中心都訂閱,但這里有個不同的點是NotifyListener的妙用。

?public?void?subscribe(URL?url,?NotifyListener?listener)?{
????MultipleNotifyListenerWrapper?multipleNotifyListenerWrapper?=?new?MultipleNotifyListenerWrapper(listener);
????multipleNotifyListenerMap.put(listener,?multipleNotifyListenerWrapper);
????for?(Registry?registry?:?referenceRegistries.values())?{
????????SingleNotifyListener?singleNotifyListener?=?new?SingleNotifyListener(multipleNotifyListenerWrapper,?registry);
????????multipleNotifyListenerWrapper.putRegistryMap(registry.getUrl(),?singleNotifyListener);
????????registry.subscribe(url,?singleNotifyListener);
????}
????super.subscribe(url,?multipleNotifyListenerWrapper);
}

先用MultipleNotifyListenerWrapper把最原始的NotifyListener包裝起來,NotifyListener傳給每個被包裝的注冊中心。MultipleNotifyListenerWrapper和SingleNotifyListener分別是什么?

MultipleNotifyListenerWrapper將原始的NotifyListener進行包裝,且持有SingleNotifyListener的引用,它提供了一個方法notifySourceListener的方法,將持有的SingleNotifyListener中上次變更的URL列表進行merge后調(diào)用最原始的NotifyListener.notify()

protected?class?MultipleNotifyListenerWrapper?implements?NotifyListener?{

????Map?registryMap?=?new?ConcurrentHashMap(4);
????NotifyListener?sourceNotifyListener;
????...

????public?synchronized?void?notifySourceListener()?{
????????List?notifyURLs?=?new?ArrayList();
????????URL?emptyURL?=?null;
????????for?(SingleNotifyListener?singleNotifyListener?:?registryMap.values())?{
????????????List?tmpUrls?=?singleNotifyListener.getUrlList();
????????????if?(CollectionUtils.isEmpty(tmpUrls))?{
????????????????continue;
????????????}
????????????//?empty?protocol
????????????if?(tmpUrls.size()?==?1
????????????????????&&?tmpUrls.get(0)?!=?null
????????????????????&&?EMPTY_PROTOCOL.equals(tmpUrls.get(0).getProtocol()))?{
????????????????//?if?only?one?empty
????????????????if?(emptyURL?==?null)?{
????????????????????emptyURL?=?tmpUrls.get(0);
????????????????}
????????????????continue;
????????????}
????????????notifyURLs.addAll(tmpUrls);
????????}
????????//?if?no?notify?URL,?add?empty?protocol?URL
????????if?(emptyURL?!=?null?&&?notifyURLs.isEmpty())?{
????????????notifyURLs.add(emptyURL);
????????}
????????this.notify(notifyURLs);
????}
????...
}

再看SingleNotifyListener,它的notify去調(diào)用MultipleNotifyListenerWrapper的notifySourceListener

class?SingleNotifyListener?implements?NotifyListener?{

????MultipleNotifyListenerWrapper?multipleNotifyListenerWrapper;
????Registry?registry;
????volatile?List?urlList;

????@Override
????public?synchronized?void?notify(List?urls)?{
????????this.urlList?=?urls;
????????if?(multipleNotifyListenerWrapper?!=?null)?{
????????????this.multipleNotifyListenerWrapper.notifySourceListener();
????????}
????}
????...
}

仔細思考我們發(fā)現(xiàn):

  • MultipleNotifyListenerWrapper是個注冊中心擴展的包裝,它本身是沒有通知能力的,只能借助的真實注冊中心擴展的通知能力
  • SingleNotifyListener是真實的注冊中心的通知回調(diào),由它去調(diào)用MultipleNotifyListenerWrapper的notifySourceListener,調(diào)用前可將數(shù)據(jù)進行merge

如果你仔細讀完上面的文章你會發(fā)現(xiàn),這不就是包裝了一下注冊中心擴展嗎?就這?哪里醍醐灌頂了?

不著急,我們先扒一扒作者為什么寫這樣一個擴展,他的初衷是想解決什么問題?

參考這個issue:https://github.com/apache/dubbo/issues/3932

作者說:我們可以在程序運行時下線(注銷)服務(wù),如果有個Dubbo服務(wù)同時注冊了Zookeeper和Nacos,而我只想注銷其中一個注冊中心,MultipleRegistry就可以解決這種場景。

作者的初衷很簡單,但當(dāng)我看到這個實現(xiàn)時,靈光乍現(xiàn),感覺這個實現(xiàn)如果稍微改一改,簡直就是一個Dubbo多注冊中心遷移神器。

Dubbo多注冊中心遷移神器

Dubbo多注冊中心遷移神器具有什么樣的特性?

  • 可以動態(tài)(遠程配置)地注冊到一個或多個注冊中心,且在程序不重啟的情況下可以動態(tài)調(diào)整
  • 可以動態(tài)(遠程配置)地消費某一個或多個注冊中心,同樣可以在程序不重啟的情況下可以動態(tài)調(diào)整
  • 消費有兜底邏輯,比如配置了消費Zookeeper,但Zookeeper上可能只有A服務(wù),B服務(wù)不存在,那么調(diào)用B服務(wù)時可以用其他注冊中心的Provider來兜底,這就保證了注冊中心遷移過程中沒用上下游的依賴

如果上面說的能夠領(lǐng)會到,這些需求實現(xiàn)起來就很簡單:

  • 啟動時,Provider和Consumer都分別監(jiān)聽對應(yīng)的配置項,按需注冊和消費,目前MultipleRegistry已經(jīng)實現(xiàn)
  • Dubbo應(yīng)用運行中,配置項變更事件驅(qū)動
    • Provider:觸發(fā)一個重新注冊、注銷的事件,根據(jù)最新的配置項將需要注冊的注冊中心再注冊一遍,需要注銷的注冊中心注銷
    • Consumer:觸發(fā)重新進行訂閱和取消訂閱,
  • 消費兜底邏輯,將MultipleNotifyListenerWrapper中的notifySourceListener的merge邏輯進行重寫,可以實現(xiàn)有線消費、無對應(yīng)Provider兜底消費。當(dāng)然如果配置變更也需要觸發(fā)一次notify

按照這個思路,我已經(jīng)實現(xiàn)了一個版本在線上跑了起來!不過耦合了公司內(nèi)部的配置中心。

如果想不耦合,可以采用Dubbo SPI擴展的方式來擴展「讀取監(jiān)聽配置變更部分」,擴展中的擴展,有點騷~

這篇文章有點長,最后來回顧一下講了啥:

首先文章從一個Dubbo注冊中心遷移成本的問題講起,現(xiàn)有的方案成本都是比較高,一直苦苦找尋更低成本、兼容性更強的方案。終于在一次瀏覽Dubbo源碼過程中發(fā)現(xiàn)了MultipleRegistry源碼,經(jīng)過研究發(fā)現(xiàn)只需要經(jīng)過稍微的修改就能符合我們對完美動態(tài)注冊中心的定義。

在我寫這篇文章的時候,又試圖搜索了一下Dubbo動態(tài)注冊中心,發(fā)現(xiàn)了「Kirito的技術(shù)分享」的一篇文章《平滑遷移 Dubbo 服務(wù)的思考》提到了阿里云的一個產(chǎn)品的實現(xiàn)和上文提到的方案類似。

如果剛好你也有這個需求,可以用上文的思路實現(xiàn)看看,并不復(fù)雜,是不是感覺賺了一個億。


搜索關(guān)注微信公眾號"捉蟲大師",后端技術(shù)分享,架構(gòu)設(shè)計、性能優(yōu)化、源碼閱讀、問題排查、踩坑實踐。

- END -
瀏覽 122
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 一本色道久久加勒比精品| 久久久久中文字幕| 安徽少妇搡bbw搡bbbb| 国产精品成人AV在线| 五月开心激情网| 韩国三级av| 成人免费网站在线| 天堂国产一区二区三区| 成人免费无码激情AV片| 大香伊人蕉| 2025精品偷拍视频| 另类激情| 日本熟妇一区二区三区| 狠狠操天天干| 波多野结衣大战黑人| av天堂中文| 日韩黄色电影在线| 九九久久国产精品| 国产福利在线| 亚洲天堂成人| 丁香五月AV| 99在线精品视频免费观看20| 91九色国产| 婷婷婷色| 91.xxxx| 色婷婷激情在线| 夜夜爽夜夜高潮夜夜爽| 日本三级网址| 日韩黄色视频| 成人怡红院| 日本精品一区二区三区四区的功能 | 国产亚洲色婷婷久久99精品| 久久大鸡| 在线播放亚洲无码| 操鸡视频在线观看| 久久免费成人电影| 毛片性爱视屏| 美女在线扣穴| 丁香五月天在线播放| 91国产做爱| 久久精品欧美| 亚洲综合日韩在线| 青青草无码成人天堂免费| 亚洲一区二区三| 精品久久ai| 国产精品免费一区二区三区都可以| 99久久婷婷| 日韩无码免费电影| AV天堂资源| 人人干人妻| 色99在线| 无码一区二区三区免费看| 亚洲精品无码在线播放| 成人AV在线一区二区| 免费中文资源在线观看| 性欧美成人18| 丁香五月天婷婷| 操东北老女人| 亚洲人妻视频| 超碰在线99| 欧美大香蕉视频| 久久精品熟妇丰满人妻99| 在线观看的av| 97人妻人人澡| 亚洲一级黄色| 天天射日日干| 色婷婷综合久久久中文字幕| 翔田千里珍藏版无码| 九九色影院| 丁香五月婷婷色| 99热在线看| 国产一区二区视频在线观看| 亚洲黄片视频| 免费在线看a| 人人干人人干人人| 北条麻妃91| 91美女视频| 操BBBB| 黄页网站免费观看| 五月丁香成人网| 欧美大黑逼| 欧美日韩A| 国产精品欧美7777777| 色播五月婷婷| 亚洲AV成人片无码网站网蜜柚 | 苍井空无码在线观看| 亚洲免费AV在线| 美日韩一区| 成年人视频网| 91成人小视频| 精品一区国产| a片免费网站| 黄色电影中文字幕| 一级一级一级做a免费一级做a| 无码中文字幕在线播放| 国产足交| 波多野结衣无码电影| 色呦呦中文字幕| 国产在线拍揄自揄拍无码福利| 伊人久久大香线蕉av一区| 欧美精品在线视频| 日韩AV无码电影| 国产在线激情视频| 欧美日韩中文字幕无码| 人人爱人人操| 亚洲精品国产精品乱玛不99| 久久综合久久鬼色| 国内精品人妻无码久久久影院蜜桃| 在线不卡中文字幕| 久久久国产精品在线| 亚洲人免费视频| 国产成人精品免费看视频| 亚洲无码一卡二卡| 亚洲美女在线观看| 大地中文资源5页的更新内容| 无码av网| 水蜜桃视频网| 一级黄色电影免费观看| 婷婷伊人中文字幕| 欧美在线视频一区二区| 色婷婷一二三精品A片| 影音先锋男人网| 国产欧美二区综合中文字幕精品一| 好吊视频一区二区三区红桃视频you| 国产乱码精品一区二区三区的特点 | 九九r在线精品观看视频| 亚洲一级免费在线观看| 黄色一级片免费在线观看| 国产精品免费一区二区三区四区视频 | 无套内射在线免费观看| 91一区二区在线播放精品| 黄色不卡视频| 日本黄色免费在线观看| 久久国产一区二区三区| 青青国产在线| 国产伊人久久| 无码AV在线播放| 亚洲AV无码乱码精品| 人妻被午夜福利AV| 青青精品视频| www.毛片| 国产成人欧美| 午夜操逼网| 大香蕉尹在线| 免费福利在线观看| 国产黄色电影| 99er这里只有精品| 成人免费视频网站| 成人免费一区| 91福利在线视频| 欧美a在线观看| 亚洲黄色影院| 91夫妻交友视频| AA免费视频| 在线a视频免费观看| 日韩AV无码成人精品| 69视频免费观看| 北京熟妇槡BBBB槡BBBB| 双飞少妇| np高辣调教视频| 欧美A片免费观看| 中国12一13毛片| 成人毛片18| 久久黄色大片| 黄页网站免费观看| 亚洲无码播放| 成人性在线| 污视频网站免费观看| 日韩综合在线观看| 凹凸熟女凹凸BBWBBW| www超碰| 激情婷婷| 亚洲色成人网站www永久四虎| 亚欧精品久久久| 自拍偷拍综合| 日本操骚逼| 韩国三级无码| 中文字幕无码观看| 亚洲AV无码国产综合专区| 中文无码在线视频| 国产一级a毛一级a| 天天撸免费视频| 国产探花自拍| 色天使视频| 日韩狠狠| 蜜桃91精品秘入口| 天天操天天射天天爽| 影音先锋无码专区| 免费观看黄色小视频| 欧美国产精品一二三产品在哪买 | 亚洲视频免费在线播放| 无码免费婬AV片在线观看| 五月婷婷六月丁香| 在线免费黄色网址| 中文字幕成人网站| 美女91视频网站| 青青国产视频| 日本视频爱爱| gogogo日本免费观看高清电视剧的注意 | 特级毛片www| 一区二区三区精品| 黄片视频在线免费播放| 久久伊人综合| 日产无码久久久久久| 久久精品欧美| 亚洲视频在线观看中文字幕| 伊人99re| 青青草超碰在线| 高清无码免费在线观看| 青青草国产在线视频| 可以免费观看的毛片| jk在线观看| 久99热| 影音先锋AV资源网站| 另类老妇极品BBWBBw| 男人在线天堂| 精品欧美无人区乱码毛片| 五月激情黄色| 激情色色| 成人精品久久| 另类AV| 操逼专区| 午夜激情免费| A级网站| 成人国产精品免费观看| 日韩一级片在线| 牛牛免费视频| www.色老板| 无码婬片A片AAA毛片艳谭| 亚洲国产欧美日韩在线| 国产在线观看一区二区| 一本一道vs波多野结衣| 风间由美大荫蒂无码AV| 无码白浆| 日韩小电影| 在线观看一级片| 一级a一级a爰片免费| 一区二区三区电影高清电影免费观看| 操逼无码精品| av无码精品一区| 一级黄色免费电影| 香蕉操逼小视频| 日韩午夜在线观看| 婷色| 性爱免费视频| 日韩V片| 嫩BBB槡BBBB槡BBBB视频-百度| 丰滿老婦BBwBBwBBw| 久久久久久一区| 大香蕉在线看| 特级西西WWW888| 亚洲视频欧洲视频| 久久学生妹| 亚洲h| 久久人妻视频| 亚洲伊人综合| 特级西西WWW888| 亚洲国产成人精品激情在线| 成人视频你懂的| 亚洲一级A片| 亚洲少妇网| 黄色视频毛片| 日韩AV在线电影| 日本精品三级| 超碰免费观看| 日本一区二区三区在线观看| 天堂中文资源在线观看| 亚洲a网| 亚洲成人中文字幕| 亚洲色图88| 亚洲成av人无码| 无套影院| 免费性爱网站| 久久理伦| 国产午夜福利视频在线观看 | 亚洲AV无码成人精品久久久 | 东北嫖老熟女一区二区视频网站| 亚洲国产成人无码| 极品一线天小嫩嫩真紧| 人妻少妇视频| 蜜桃人妻无码AV天堂二区| 久久成人导航| 国产欧美综合视频| 真人BBwBBWBBw另类视频| 臭小子啊轻点灬太粗太长了的视频 | 麻豆mdapp03.tⅴ| 五月播播| 处破女初破全过免费看| 在线播放你懂的| 大地资源第5页在线| 天天爽夜夜爽人人爽| 国精产品秘一区二区| 久久成人网豆花视频| 香蕉视频色| 日韩69视频| 亚洲最大视频| 特级毛片AAAAAA蜜桃| 大骚逼影院| 99久久九九| 天堂网2018| 色色免费视频| 99视频在线免费| 国产三级AV在线| 欧洲尤物不卡播放六区| 中文字幕av免费在线观看| 日韩无码一级片| 51嘿嘿嘿国产精品伦理| 久操福利| 丁香花在线小说免费阅读| 七六十路の高齢熟妇无码| 亚洲无码中文字幕在线观看| 日韩中文字幕视频在线观看| 男人的天堂视频| 久久撸在线视频| 农村少妇久久久久久久| 日本视频爱爱| 欧美性爱福利视频| 日本一级片在线播放| 久久偷拍网| 亚洲一区无码| 国产1区2区3区中文字幕| 在线观看91| 日本免费A∨| AV三级片在线观看| 成人免费一级视频| 成人无码区免费| 亚洲久久色| 免费黄色视频网址| 精品AV无码一区二区三区| 日韩免费视频观看| 动图综合亚洲综合欧美男男| www.a片| 国产一二三区在线| 青青青青操| 老熟女--91XX| 爱操逼网| 思思热这里只有精品| 亚洲精品久久久蜜桃| 91精品婷婷国产| 国产精品91在线| 天天干夜夜操| 国产精品一区二区三区在线 | 69视频网站| 国产精品V日韩精品V在线观看| 婷婷在线观看视频| 91人人妻人人爽| 欧美日韩国产一区二区三区| 亚洲日本三级| 97人妻人人澡| 国产精品久久久大香蕉| 91九色口爆吞精| 懂色AV成人| 久热精品视频| 欧美成人看片黄a免费看| 一区二区亚洲| 日本一本草久p| 日韩群交| 黄色电影天堂| 北条麻妃无码精品AV怎么看 | 神马午夜福利视频| 天天操天天日天天操| 天天操天天看| 色五月婷婷久久| 日韩欧美在线观看| 无码中文字幕在线视频| 亚洲性夜夜天天天天天天| 99re这里| 91九色麻豆| 黄色视频在线免费播放| 亚洲中文无码在线观看| 91亚洲精品在线| 黄色视频网站观看| 无码一区在线观看| 久久久成人精品| 西西444WWW大胆无| 99er在线| 午夜久操| 人人爽人人| 久热中文在线观看精品视频| 黄页网站免费观看| 欧美色爽| 黄色大片免费看| 亚洲成人性爱视频| 北条麻妃99精彩视频| AV天天看| 亚洲国产av电影| 在线观看你懂得| 51妺妺嘿嘿午夜成人| 国产精品电影| 人人看人人色| 久久久中文字幕| 粉嫩av懂色av蜜臀av分享| 亚洲欧美日韩免费| 免费在线观看黄色| 美国无码| 中文字幕永久在线5| 在线观看日韩AV| 国产伦精品一区二区三区色大师| 国语对白做受欧美| 久久久久久久久久成人| 俺去操| 亚洲视频高清无码| 人人射人人摸| 五月综合色| 国产精品久久免费| 特黄特色免费大片| 免费无码婬片AAAA片直播| 日韩精品一| 99热最新网址| 成人A√| 九九性视频| 在线免费观看AV片| 亚洲国产另类无码| 亚洲视频免费在线观看| 激情丁香婷婷| 青娱乐A片| 日本女人操逼视频| 在线操b| 99久久婷婷国产综合精品青牛牛| 国产乱伦自拍| 激情综合在线| 撸一撸成人在线做爱视频。| 欧洲成人在线视频| 波多野结衣无码AV专区| 日本不卡在线| av天堂无码| 国产人妻中文字幕| 在线大香蕉| 国产又猛又黄又爽| 五月婷婷性爱| 欧美性爱视频免费看| 91成人小视频| 亚洲天堂av在线免费观看| av中文字幕网| 国产深喉视频| 黑人无码一二三四五区| av午夜| 操逼视频高清无码| 青青草无码在线视频| 免费看一区二区三区| 热久色| 在线成人一区二区| 最近中文字幕mv第三季歌词| 日本一级特级毛片视频| 日本老妇操屄视频| 日韩人妻精品无码| 欧美性生交18XXXXX无码 | 亚洲少妇性爱视频| 97在线观看视频| 3344在线观看免费下载视频| 午夜视频网| 北条麻妃无码在线| 性满足BBWBBWBBW| 久久久久亚洲AV无码网影音先锋| 最新精品视频| 日韩亚洲在线| 色欲AV网站| 北条麻妃视频在线播放| 青青草97国产精品麻豆| 青青草成人电影| 免费高清无码在线| 91午夜福利| 午夜激情五月天| 久久青青操| 中文字幕高清在线中文字幕中文字幕 | 一本大道香蕉av久久精东影业| 伊人网大香| 色婷婷18正码国产| 久久六月天| 嫩草视频| 北条麻妃被躁57分钟视频在线 | 91激情| 伊人网大香| аⅴ资源新版在线天堂| 欧美东京热视频| 色一区二区三区| 色色婷婷五月| 人妻丰满精品一区二区| 色欧美大香蕉| 欧美日韩A| 中文字幕在线观看视频免费| 天堂中文资源在线观看| 日韩码线观看视频| 欧美日韩一级视频| 天天夜夜操操| 波多野结衣无码网站| 国产无码av| 嫩草在线视频| 色网站在线| www九九| 99唉撸吧视频免费| 六月激情婷婷| 久久99国产精品| 国产高清无码免费在线观看| 久久中文字幕免费| 无码福利| 探花视频在线观看| 91久久久青青青青草| 操b国产| 亚洲AV成人片无码网站| A在线免费观看| 熟女人妻一区二区| 色情片在线播放| 欧美性爱视频网站| 国产在线观看av| 中文在线观看免费视频| 深爱五月天| 国产一级a毛一级a毛片视频黑人| 在线无码免费观看| 亚洲黄色视频免费看| 少妇中文字幕| 天天干天天在线观看| 蜜桃视频在线观看18| 日本久久久| 青青草社区| 久久亚洲精品视频| 久久理论电影| 国产日韩欧美| 91小仙女jK白丝袜呻吟| 日韩成人精品在线| 天天草av| 成年人视频在线观看免费| 国产一区二区三区18| A级成人网站| 日韩色色网| 欧美性爱18| 无码婬片A片AAA毛片艳谭| 亚洲乱伦| 国产无码高清视频| 无码免费视频观看| 日日操网| 精品无码AV一区二区三区| 操逼视频国产91| 啪啪啪免费网站| 亚洲精品在线观看视频| 亚洲精品成AV人片天堂无码| 人妻av中文无码| 日韩极品在线观看| 日韩高清久久| 91精品国久久久久久无码一区二区三区| 亚洲黄视频| 中文字幕高清无码视频| 另类性爱视频| 91亚瑟视频| 在线操B视频| 91香蕉视频| 成人精品久久久| 亚洲三级黄色| 91丨九色丨蝌蚪丨丝袜| av官网| 一级a一级a爰片免费免免在线| 亚洲一区欧美二区gay| 久草99| 亚洲天堂一区二区| 男人亚洲天堂| 俺来也av| 操逼网址大全| 蜜桃人妻| 老太奶性BBwBBw侧所| 色婷婷丁香五月| 特级特黄AAAAAAAA片| 草在线视频| 黄色电影一级片| 亚洲天堂大香蕉| 久草视频在线免费播放| 久久久久久99| 久久人搡人人玩人妻精AV香蕉| 亚洲少妇视频| 久久性爱网| 在线看国产| 91精品国产乱码香蕉黄瓜草莓 | 久久成人导航| 超碰在线视| 亚洲视频无码在线| 黑人在线视频| 亚洲狼人久久久精品| 日本一区二区网站| 成人小说视频在线社区| 91人人| 水果派解说在线观看| 国产福利电影在线观看| 亚洲日本黄色视频| 国产精品91在线| 99国产在线观看免费视频| 国产精品一级a毛视频| 啪啪啪网址| 美女在线扣穴| 亚洲最大三级片| 九九九精品| 亚洲午夜剧场| 黄色在线免费观看| 精品人妻一区二区免费蜜桃视频| ThePorn日本无码| 中文无码日本一级A片人| 河南熟妇搡BBBB搡BBBB| 99久久国产热无码精品免费| 操屄在线视频| 2024男人天堂| 日韩美女在线视频| 中文成人在线| 69午夜| 午夜av免费在线| 操逼视频在线观看| 51福利视频| 婷婷99| 91在线无码精品秘入口动作| 91aaa在线观看| wwwxxx18| av岛国免费| 国产三级AV在线| 国产女主播在线| 久久大鸡巴| www俺来也com| 91精品久| AV天堂资源| 亚洲午夜无码久久久| 国语精品自拍| 午夜试看120秒体验区的特点 | av青青草| 国产8区| 日韩无码性爱视频| 中国免费XXXX18| 啪啪啪免费视频| 中文久久久| 国产精品你懂得| 多啪啪免费视频| 国产高清无码福利| 国产一级a免一级a免费| 国产免费AV在线观看| 成人免费啪啪视频| 妞干网国产| 中文免费高清在线| 北条麻妃九九九在线视频| 91av一区二区| 色综合社区| 婷婷五月六月| 91欧美精品成人AAA片| 大鸡吧草逼| 亚洲色伦| 无码观看视频| 人人操人人上| 欧一美一婬一伦一区?| 香蕉在线播放| 日韩三级黄色| 人人操人人妻人人爽| 国产精品人妻无码久久久郑州天气网| 亚洲福利在线免费观看| 中文字幕乱码视频| 人妻18无码人伦一区二区三区精品| 日本爱爱片| 麻豆91蜜桃传媒在线观看| 无码熟妇人妻无码AV在线天堂| 亚洲免费大片| 激情另类视频| 欧美成人一级片| 久久午夜无码鲁丝| 日韩美女免费视频| 国产一a毛一a免费观看| 91人人操人人爽| 欧美日韩免费视频| 国产8区| 黄色A片免费看| 精品久久ai| 亚洲精品成人在线| 嫩BBB搡BBB槡BBB小号| 特极西西444WWW大胆无码| 亚洲中文AV| 97人妻人人澡| 婷婷天堂| 成人自拍视频| 无码中文暮| 精品國產一區二區三區久久蜜月 | av福利电影在线| 狼人香蕉在线视频| 日韩一级乱伦| 日韩最新无码发布| 动漫人物插画动漫人物的视频软件| 亚洲午夜福利视频在线观看| 激情白浆| 婷婷五月天色播| 亚洲先锋影音| 欧美人妻中文字幕| 亚洲中文字幕在线看| 国产亚洲一区二区三区| 天天操狠狠操| 91亚洲视频在线观看| 日韩成人视频在线观看| 天天肏| 久操伊人大香蕉| 国产精品一品二区三区的使用体验 | 欧美成人大香蕉| 制服丝袜人妻| 天天干天天干天天| 秋霞久久日| 亚洲人操逼| 一区二区中文| 国产日韩一区二区三免费高清| a√天堂资源中文8| 好男人av| 国产精品午夜福利视频| 翔田千里中文字幕无码| 国产三级片91| 成人美女视频| 91色秘乱码一区二区| 日韩精品一区二区三区中文在线| 尤物在线| 五月婷丁香| 欧美a视频| 一级A片免费看| 中文字幕在线观看高清| 在线黄片视频| 国产裸体美女网站| 欧美高清在线综合| 麻豆videos| 国产日韩91| 大香蕉在线视频网| 日韩第1页| 色老板视频在线观看| 你懂的在线观看视频| 成人电影久久| 夜夜骚AV一二三区无码| AV三级片网站| gogogo免费高清在线偷拍| 欧美视频一| 亚洲视频五区| 国产迷奸视频| 日韩无码一区二区三区四区| 国产伦子伦一级A片免费看小说| 黄色一区二区三区| 免费AV观看| 亚洲精品日韩综合观看成人91| 中文无码高清视频| 三级片高清无码| 欧美不卡一区二区三区| 国产精品欧美7777777| 黄色无码视频| 欧美成人网站视频| 黄色视频在线观看大全| 国产一区一区| 黄色片视频| 人妻精品一区二区| 天天干天天操天天射| 欧美日韩男女淫乱一区二区| 国产激情精品视频| 中文激情网| 亚洲AV无码精品久久一区二区 | 无码一| 亚洲成人av在线| 淫乱骚穴| 色色色免费视频| 五月丁香婷婷啪啪| 黄片小视频在线观看| 内射极品美女| 欧美一区二区在线观看| 亚洲操逼无码| 精品久久久无码| 伊人天天日| 国产视频一区二区三区四区五区| 婷婷五月视频| 色色一区| 三级高清无码视频| 国产熟女在线| 俺也去五月婷婷| 极品无码| 亚洲无码久久久| 国产精品3| 亚洲理论| 狠狠色婷婷777| 免费看黃色AAAAAA片| 精品视频在线观看| 免费A级| 亚洲秘无码一区二区三区| 亚洲视频一区二区三区四区娇小视频在线观看视频 | 男人天堂手机在线| 亚洲精品视频无码| 天天操天天干欧美精品| 国产成人久久精品麻豆二区| 伊人天天日| 激情视频在线免费观看| xxx综合网| 亚洲国产精品成人网站| 蜜臀久久99精品久久| 大香蕉在线75| 一级A黄色片| 超碰69| 国产婷婷五月| 99精品国自产在线| 色呦呦一区二区三区| 伊人亚洲| 狠狠干,狠狠操| 99精品视频免费在线观看| 精品成人视频| 丰满的人妻一区二区三区果冻| 男女操逼视频网站免费观看 | 熟女视频一区二区| 大学生一级特黄大片| 农村少妇久久久久久久| 青娱乐大香蕉| 色五月婷婷五月天激情| 亚洲成人av无码| 亚洲无码精品久久| 五月丁香六月| 亚洲一级无码视频| 麻豆自拍偷拍视频| A级片在线观看| 久热久热| 欧美日韩免费观看视频| 无码伦理| 五月婷婷深深爱| 老司机狠狠干| 五月婷婷五月丁香| 91AV无码| 国产一级大片| 日本三级片免费| 天堂网av2025| 精品乱子伦一区二区三区免费播成 | 狠狠干天天日| 婷婷av在线| 午夜成人大片| 无码一区二区高清| AV片在线免费观看| 国产成人免费| 99在线观看视频在线高清| 精品一区二区三区免费| 亚洲国产中文字幕| 欧美精品久久久久久久久爆乳| 日日夜夜无码| 第四色激情网| 爽好紧别夹喷水欧美| 国产欧美一区二区三区特黄手机版| 91丨九色丨蝌蚪丨丝袜| 免费一级黄色视频| 三级无码av| 蜜桃视频日韩| 黄片视频在线免费观看| 一级A片免费黄色视频| 97免费视频在线观看| 日韩乱伦AV| 一区二区高清| a在线| 四个熟妇搡BBBB搡BBBB| 青娱乐成人| 欧一美一伦一A片| 少妇搡BBBB搡BBB搡造水多/| 熟妇槡BBBB槡BBBB| 啪啪人妻| 99国产在线观看免费视频| 国产h在线观看| 国产欧美一区二区三区国产幕精品 | 夜夜精品视频| 北条麻妃被躁57分钟视频在线 | 罗莉AV| 日韩99| 免费观看在线黄片| 亚洲成人AV在线播放| 日本黄色免费网站| 日韩精品无码人妻| 另类老太婆性BBWBBw| 一区二区三区av| 啪啪免费| 亚洲v欧美| 亚洲成人少妇老妇a视频在线| 日本一区二区在线视频| 91在线一区二区| 国精产品秘一区二区| 日本黄色色情视频| 17c.白丝喷水自慰| AV青草| 人人看人人摸人人草| 強姧伦一区二区三区在线播放| 亚洲AV无码成人精品久久久 | 夜夜操天天干| 国产精品九九视频| 人人看人人摸人人搞| 亚洲AV秘无码一区二三月夜| 东北奇淫老老妇| 亚洲无码成人片| 国产AV无码区亚洲| 国产av中文| 亚洲天堂免费观看| 少妇搡BBBB搡BBB搡毛片| 操屄网站| 人妻少妇精品视频| 国产永久在线| 无码插逼| 三级电影久久麻豆| 人成无码| 蜜桃久久99精品久久久酒店| 91视频大全| 手机在线观看AV| 天天日天天干天天操| 狠狠操婷婷| 麻豆国产精品| 永久免费不卡在线观看黄网站| 午夜AV福利| 亚洲AV成人无码网天堂| 亚洲熟妇在线观看| 欧美在线视频免费观看| 黄色免费a级片一级片| 成人网站无码|