日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

干货|Spring Cloud Bus 消息总线介绍

發布時間:2024/4/13 javascript 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 干货|Spring Cloud Bus 消息总线介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

繼上一篇?干貨|Spring Cloud Stream 體系及原理介紹?之后,本期我們來了解下 Spring Cloud 體系中的另外一個組件 Spring Cloud Bus (建議先熟悉 Spring Cloud Stream,不然無法理解 Spring Cloud Bus 內部的代碼)。

Spring Cloud Bus?對自己的定位是 Spring Cloud 體系內的消息總線,使用 message broker 來連接分布式系統的所有節點。Bus 官方的?Reference 文檔?比較簡單,簡單到連一張圖都沒有。

這是最新版的 Spring Cloud Bus 代碼結構(代碼量比較少):

Bus 實例演示

在分析 Bus 的實現之前,我們先來看兩個使用 Spring Cloud Bus 的簡單例子。

所有節點的配置新增

Bus 的例子比較簡單,因為 Bus 的 AutoConfiguration 層都有了默認的配置,只需要引入消息中間件對應的 Spring Cloud Stream 以及 Spring Cloud Bus 依賴即可,之后所有啟動的應用都會使用同一個 Topic 進行消息的接收和發送。

Bus 對應的 Demo 已經放到了 github 上:?https://github.com/fangjian0423/rocketmq-binder-demo/tree/master/rocketmq-bus-demo?。 該 Demo 會模擬啟動 5 個節點,只需要對其中任意的一個實例新增配置項,所有節點都會新增該配置項。

訪問任意節點提供的 Controller 提供的獲取配置的地址(key為hangzhou):

curl -X GET 'http://localhost:10001/bus/env?key=hangzhou'

所有節點返回的結果都是 unknown,因為所有節點的配置中沒有?hangzhou?這個 key。

Bus 內部提供了?EnvironmentBusEndpoint?這個 Endpoint 通過 message broker 用來新增/更新配置。

訪問任意節點該 Endpoint 對應的 url?/actuator/bus-env?name=hangzhou&value=alibaba?進行配置項的新增(比如訪問 node1 的url):

curl -X POST 'http://localhost:10001/actuator/bus-env?name=hangzhou&value=alibaba' -H 'content-type: application/json'

然后再次訪問所有節點?/bus/env?獲取配置:

$ curl -X GET 'http://localhost:10001/bus/env?key=hangzhou' unknown% ~ ? $ curl -X GET 'http://localhost:10002/bus/env?key=hangzhou' unknown% ~ ? $ curl -X GET 'http://localhost:10003/bus/env?key=hangzhou' unknown% ~ ? $ curl -X GET 'http://localhost:10004/bus/env?key=hangzhou' unknown% ~ ? $ curl -X GET 'http://localhost:10005/bus/env?key=hangzhou' unknown% ~ ? $ curl -X POST 'http://localhost:10001/actuator/bus-env?name=hangzhou&value=alibaba' -H 'content-type: application/json'~ ? $ curl -X GET 'http://localhost:10005/bus/env?key=hangzhou' alibaba% ~ ? $ curl -X GET 'http://localhost:10004/bus/env?key=hangzhou' alibaba% ~ ? $ curl -X GET 'http://localhost:10003/bus/env?key=hangzhou' alibaba% ~ ? $ curl -X GET 'http://localhost:10002/bus/env?key=hangzhou' alibaba% ~ ? $ curl -X GET 'http://localhost:10001/bus/env?key=hangzhou' alibaba%

可以看到,所有節點都新增了一個 key 為?hangzhou?的配置,且對應的 value 是?alibaba。這個配置項是通過 Bus 提供的?EnvironmentBusEndpoint?完成的。

這里引用?程序猿DD?畫的一張圖片,Spring Cloud Config 配合 Bus 完成所有節點配置的刷新來描述之前的實例(本文實例不是刷新,而是新增配置,但是流程是一樣的):

部分節點的配置修改

比如在 node1 上指定 destination 為 rocketmq-bus-node2 (node2 配置了 spring.cloud.bus.id 為?rocketmq-bus-node2:10002,可以匹配上) 進行配置的修改:

curl -X POST 'http://localhost:10001/actuator/bus-env/rocketmq-bus-node2?name=hangzhou&value=xihu' -H 'content-type: application/json'

訪問?/bus/env?獲取配置(由于在 node1 上發送消息,Bus 也會對發送方的節點 node1 進行配置修改):

~ ? $ curl -X POST 'http://localhost:10001/actuator/bus-env/rocketmq-bus-node2?name=hangzhou&value=xihu' -H 'content-type: application/json'~ ? $ curl -X GET 'http://localhost:10005/bus/env?key=hangzhou' alibaba% ~ ? $ curl -X GET 'http://localhost:10004/bus/env?key=hangzhou' alibaba% ~ ? $ curl -X GET 'http://localhost:10003/bus/env?key=hangzhou' alibaba% ~ ? $ curl -X GET 'http://localhost:10002/bus/env?key=hangzhou' xihu% ~ ? $ curl -X GET 'http://localhost:10001/bus/env?key=hangzhou' xihu%

可以看到,只有 node1 和 node2 修改了配置,其余的 3 個節點配置未改變。

Bus 的實現

Bus 概念介紹

事件

Bus 中定義了遠程事件?RemoteApplicationEvent,該事件繼承了 Spring 的事件?ApplicationEvent,而且它目前有 4 個具體的實現:

  • EnvironmentChangeRemoteApplicationEvent: 遠程環境變更事件。主要用于接收一個?Map<String, String>?類型的數據并更新到 Spring 上下文中?Environment?中的事件。文中的實例就是使用這個事件并配合?EnvironmentBusEndpoint?和?EnvironmentChangeListener?完成的。
  • AckRemoteApplicationEvent: 遠程確認事件。Bus 內部成功接收到遠程事件后會發送回?AckRemoteApplicationEvent?確認事件進行確認。
  • RefreshRemoteApplicationEvent: 遠程配置刷新事件。配合?@RefreshScope?以及所有的?@ConfigurationProperties?注解修飾的配置類的動態刷新。
  • UnknownRemoteApplicationEvent:遠程未知事件。Bus 內部消息體進行轉換遠程事件的時候如果發生異常會統一包裝成該事件。

Bus 內部還存在一個非?RemoteApplicationEvent?事件 -?SentApplicationEvent?消息發送事件,配合 Trace 進行遠程消息發送的記錄。

這些事件會配合?ApplicationListener?進行操作,比如?EnvironmentChangeRemoteApplicationEvent配了?EnvironmentChangeListener?進行配置的新增/修改:

public class EnvironmentChangeListenerimplements ApplicationListener<EnvironmentChangeRemoteApplicationEvent> {private static Log log = LogFactory.getLog(EnvironmentChangeListener.class);@Autowiredprivate EnvironmentManager env;@Overridepublic void onApplicationEvent(EnvironmentChangeRemoteApplicationEvent event) {Map<String, String> values = event.getValues();log.info("Received remote environment change request. Keys/values to update "+ values);for (Map.Entry<String, String> entry : values.entrySet()) {env.setProperty(entry.getKey(), entry.getValue());}} }

收到其它節點發送來的?EnvironmentChangeRemoteApplicationEvent?事件之后調用?EnvironmentManager#setProperty?進行配置的設置,該方法內部針對每一個配置項都會發送一個?EnvironmentChangeEvent?事件,然后被?ConfigurationPropertiesRebinder?所監聽,進行 rebind 操作新增/更新配置。

Actuator Endpoint

Bus 內部暴露了 2 個 Endpoint,分別是?EnvironmentBusEndpoint?和?RefreshBusEndpoint,進行配置的新增/修改以及全局配置刷新。它們對應的 Endpoint id 即 url 是?bus-env?和?bus-refresh。

配置

Bus 對于消息的發送必定涉及到 Topic、Group 之類的信息,這些內容都被封裝到了?BusProperties中,其默認的配置前綴為?spring.cloud.bus,比如:

  • spring.cloud.bus.refresh.enabled?用于開啟/關閉全局刷新的 Listener。
  • spring.cloud.bus.env.enabled?用于開啟/關閉配置新增/修改的 Endpoint。
  • spring.cloud.bus.ack.enabled?用于開啟開啟/關閉?AckRemoteApplicationEvent?事件的發送。
  • spring.cloud.bus.trace.enabled?用于開啟/關閉消息記錄 Trace 的 Listener。

消息發送涉及到的 Topic 默認用的是?springCloudBus,可以配置進行修改,Group 可以設置成廣播模式或使用 UUID 配合 offset 為 lastest 的模式。

每個 Bus 應用都有一個對應的 Bus id,官方取值方式較復雜:

${vcap.application.name:${spring.application.name:application}}:${vcap.application.instance_index:${spring.application.index:${local.server.port:${server.port:0}}}}:${vcap.application.instance_id:${random.value}}

建議手動配置 Bus id,因為 Bus 遠程事件中的 destination 會根據 Bus id 進行匹配:

spring.cloud.bus.id=${spring.application.name}-${server.port}

Bus 底層分析

Bus 的底層分析無非牽扯到這幾個方面:

  • 消息是如何發送的;
  • 消息是如何接收的;
  • destination 是如何匹配的;
  • 遠程事件收到后如何觸發下一個 action;

BusAutoConfiguration?自動化配置類被?@EnableBinding(SpringCloudBusClient.class)?所修飾。

@EnableBinding?的用法在上期文章?干貨|Spring Cloud Stream 體系及原理介紹?中已經說明,且它的 value 為?SpringCloudBusClient.class,會在?SpringCloudBusClient?中基于代理創建出 input 和 output 的?DirectChannel:

public interface SpringCloudBusClient {String INPUT = "springCloudBusInput";String OUTPUT = "springCloudBusOutput";@Output(SpringCloudBusClient.OUTPUT)MessageChannel springCloudBusOutput();@Input(SpringCloudBusClient.INPUT)SubscribableChannel springCloudBusInput(); }

springCloudBusInput 和 springCloudBusOutput 這兩個 Binding 的屬性可以通過配置文件進行修改(比如修改 topic):

spring.cloud.stream.bindings:springCloudBusInput:destination: my-bus-topicspringCloudBusOutput:destination: my-bus-topic

消息的接收的發送:

// BusAutoConfiguration@EventListener(classes = RemoteApplicationEvent.class) // 1 public void acceptLocal(RemoteApplicationEvent event) {if (this.serviceMatcher.isFromSelf(event)&& !(event instanceof AckRemoteApplicationEvent)) { // 2this.cloudBusOutboundChannel.send(MessageBuilder.withPayload(event).build()); // 3} }@StreamListener(SpringCloudBusClient.INPUT) // 4 public void acceptRemote(RemoteApplicationEvent event) {if (event instanceof AckRemoteApplicationEvent) {if (this.bus.getTrace().isEnabled() && !this.serviceMatcher.isFromSelf(event)&& this.applicationEventPublisher != null) { // 5this.applicationEventPublisher.publishEvent(event);}// If it's an ACK we are finished processing at this pointreturn;}if (this.serviceMatcher.isForSelf(event)&& this.applicationEventPublisher != null) { // 6if (!this.serviceMatcher.isFromSelf(event)) { // 7this.applicationEventPublisher.publishEvent(event);}if (this.bus.getAck().isEnabled()) { // 8AckRemoteApplicationEvent ack = new AckRemoteApplicationEvent(this,this.serviceMatcher.getServiceId(),this.bus.getAck().getDestinationService(),event.getDestinationService(), event.getId(), event.getClass());this.cloudBusOutboundChannel.send(MessageBuilder.withPayload(ack).build());this.applicationEventPublisher.publishEvent(ack);}}if (this.bus.getTrace().isEnabled() && this.applicationEventPublisher != null) { // 9// We are set to register sent events so publish it for local consumption,// irrespective of the originthis.applicationEventPublisher.publishEvent(new SentApplicationEvent(this,event.getOriginService(), event.getDestinationService(),event.getId(), event.getClass()));} }
  • 利用 Spring 事件的監聽機制監聽本地所有的?RemoteApplicationEvent?遠程事件(比如?bus-env會在本地發送?EnvironmentChangeRemoteApplicationEvent?事件,bus-refresh?會在本地發送?RefreshRemoteApplicationEvent?事件,這些事件在這里都會被監聽到)。
  • 判斷本地接收到的事件不是?AckRemoteApplicationEvent?遠程確認事件(不然會死循環,一直接收消息,發送消息...)以及該事件是應用自身發送出去的(事件發送方是應用自身),如果都滿足執行步驟 3。
  • 構造 Message 并將該遠程事件作為 payload,然后使用 Spring Cloud Stream 構造的 Binding name 為 springCloudBusOutput 的 MessageChannel 將消息發送到 broker。
  • @StreamListener?注解消費 Spring Cloud Stream 構造的 Binding name 為 springCloudBusInput 的 MessageChannel,接收的消息為遠程消息。
  • 如果該遠程事件是?AckRemoteApplicationEvent?遠程確認事件并且應用開啟了消息追蹤 trace 開關,同時該遠程事件不是應用自身發送的(事件發送方不是應用自身,表示事件是其它應用發送過來的),那么本地發送?AckRemoteApplicationEvent?遠程確認事件表示應用確認收到了其它應用發送過來的遠程事件,流程結束。
  • 如果該遠程事件是其它應用發送給應用自身的(事件的接收方是應用自身),那么進行步驟 7 和 8,否則執行步驟 9。
  • 該遠程事件不是應用自身發送(事件發送方不是應用自身)的話,將該事件以本地的方式發送出去。應用自身一開始已經在本地被對應的消息接收方處理了,無需再次發送。
  • 如果開啟了?AckRemoteApplicationEvent?遠程確認事件的開關,構造?AckRemoteApplicationEvent?事件并在遠程和本地都發送該事件(本地發送是因為步驟 5 沒有進行本地?AckRemoteApplicationEvent?事件的發送,也就是自身應用對自身應用確認; 遠程發送是為了告訴其它應用,自身應用收到了消息)。
  • 如果開啟了消息記錄 Trace 的開關,本地構造并發送?SentApplicationEvent?事件
  • bus-env?觸發后所有節點的?EnvironmentChangeListener?監聽到了配置的變化,控制臺都會打印出以下信息:

    o.s.c.b.event.EnvironmentChangeListener : Received remote environment change request. Keys/values to update {hangzhou=alibaba}

    如果在本地監聽遠程確認事件?AckRemoteApplicationEvent,都會收到所有節點的信息,比如 node5 節點的控制臺監聽到的?AckRemoteApplicationEvent?事件如下:

    ServiceId [rocketmq-bus-node5:10005] listeners on {"type":"AckRemoteApplicationEvent","timestamp":1554124670484,"originService":"rocketmq-bus-node5:10005","destinationService":"**","id":"375f0426-c24e-4904-bce1-5e09371fc9bc","ackId":"750d033f-356a-4aad-8cf0-3481ace8698c","ackDestinationService":"**","event":"org.springframework.cloud.bus.event.EnvironmentChangeRemoteApplicationEvent"} ServiceId [rocketmq-bus-node5:10005] listeners on {"type":"AckRemoteApplicationEvent","timestamp":1554124670184,"originService":"rocketmq-bus-node1:10001","destinationService":"**","id":"91f06cf1-4bd9-4dd8-9526-9299a35bb7cc","ackId":"750d033f-356a-4aad-8cf0-3481ace8698c","ackDestinationService":"**","event":"org.springframework.cloud.bus.event.EnvironmentChangeRemoteApplicationEvent"} ServiceId [rocketmq-bus-node5:10005] listeners on {"type":"AckRemoteApplicationEvent","timestamp":1554124670402,"originService":"rocketmq-bus-node2:10002","destinationService":"**","id":"7df3963c-7c3e-4549-9a22-a23fa90a6b85","ackId":"750d033f-356a-4aad-8cf0-3481ace8698c","ackDestinationService":"**","event":"org.springframework.cloud.bus.event.EnvironmentChangeRemoteApplicationEvent"} ServiceId [rocketmq-bus-node5:10005] listeners on {"type":"AckRemoteApplicationEvent","timestamp":1554124670406,"originService":"rocketmq-bus-node3:10003","destinationService":"**","id":"728b45ee-5e26-46c2-af1a-e8d1571e5d3a","ackId":"750d033f-356a-4aad-8cf0-3481ace8698c","ackDestinationService":"**","event":"org.springframework.cloud.bus.event.EnvironmentChangeRemoteApplicationEvent"} ServiceId [rocketmq-bus-node5:10005] listeners on {"type":"AckRemoteApplicationEvent","timestamp":1554124670427,"originService":"rocketmq-bus-node4:10004","destinationService":"**","id":"1812fd6d-6f98-4e5b-a38a-4b11aee08aeb","ackId":"750d033f-356a-4aad-8cf0-3481ace8698c","ackDestinationService":"**","event":"org.springframework.cloud.bus.event.EnvironmentChangeRemoteApplicationEvent"}

    那么回到本章節開頭提到的 4 個問題,我們分別做一下解答:

    • 消息是如何發送的: 在?BusAutoConfiguration#acceptLocal?方法中通過 Spring Cloud Stream 發送事件到?springCloudBus?topic 中。
    • 消息是如何接收的: 在?BusAutoConfiguration#acceptRemote?方法中通過 Spring Cloud Stream 接收?springCloudBus?topic 的消息。
    • destination 是如何匹配的: 在?BusAutoConfiguration#acceptRemote?方法中接收遠程事件方法里對 destination 進行匹配。
    • 遠程事件收到后如何觸發下一個 action: Bus 內部通過 Spring 的事件機制接收本地的?RemoteApplicationEvent?具體的實現事件再做下一步的動作(比如?EnvironmentChangeListener?接收了?EnvironmentChangeRemoteApplicationEvent?事件,?RefreshListener?接收了?RefreshRemoteApplicationEvent?事件)。

    總結

    Spring Cloud Bus 自身內容還是比較少的,不過還是需要提前了解 Spring Cloud Stream 體系以及 Spring 自身的事件機制,在此基礎上,才能更好地理解 Spring Cloud Bus 對本地事件和遠程事件的處理邏輯。

    目前 Bus 內置的遠程事件較少,大多數為配置相關的事件,我們可以繼承?RemoteApplicationEvent并配合?@RemoteApplicationEventScan?注解構建自身的微服務消息體系。


    原文鏈接
    本文為云棲社區原創內容,未經允許不得轉載。

    轉載于:https://my.oschina.net/u/1464083/blog/3036942

    總結

    以上是生活随笔為你收集整理的干货|Spring Cloud Bus 消息总线介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    久久免费av电影 | 亚洲人av免费网站 | 免费精品 | 深爱开心激情网 | 久久久在线 | 国产视频一级 | 色片网站在线观看 | 久久久久久久久影院 | 久久久久国产精品一区二区 | 1000部18岁以下禁看视频 | 日韩电影中文,亚洲精品乱码 | 91av视频在线播放 | 免费看片网页 | 国产手机视频在线播放 | 性色av香蕉一区二区 | 日韩av福利在线 | 狠狠插狠狠干 | 天天综合成人网 | 日本最新中文字幕 | 国产精品久久毛片 | 黄色精品一区二区 | 色吊丝在线永久观看最新版本 | 美女免费黄视频网站 | 精品免费久久久久久 | 九九九九热精品免费视频点播观看 | 精品一区二区日韩 | 国产二区精品 | 九九热精品视频在线播放 | 91亚洲精品久久久蜜桃网站 | 香蕉视频导航 | 伊人精品影院 | 久久黄色网址 | 成人一区二区三区在线 | 亚洲午夜精品久久久久久久久久久久 | 在线色资源 | 久久99免费观看 | 色5月婷婷 | 日韩精品在线免费观看 | 天天操伊人 | 成人在线视频一区 | 中文字幕 国产 一区 | 人人爱天天操 | 成年人在线观看 | 狠狠的干狠狠的操 | 亚洲人成精品久久久久 | 国产精品美女999 | 欧美日韩精品区 | 国产日本在线 | 欧美精品三级在线观看 | 808电影免费观看三年 | 天天视频色版 | 美女免费电影 | 亚洲综合色站 | 天天干天天操天天做 | 免费a现在观看 | 久人人 | 久久久国产一区二区三区四区小说 | 综合久久久久久 | 91精品在线免费 | 一本一本久久aa综合精品 | 黄色一区三区 | 日本黄色免费在线观看 | 国产精品少妇 | 日韩午夜网站 | 69精品视频在线观看 | 四虎永久网站 | 久久一区二区免费视频 | 国产成人精品国内自产拍免费看 | 欧美做受高潮电影o | 久草在线手机视频 | 黄色影院在线免费观看 | 国产精品综合久久久 | 国产va饥渴难耐女保洁员在线观看 | 友田真希x88av | 免费情缘 | 高清精品在线 | 手机看片1042 | 午夜成人免费影院 | 中字幕视频在线永久在线观看免费 | 00av视频| 中文字幕人成乱码在线观看 | 97超碰在线播放 | 日本视频精品 | 亚洲人成网站精品片在线观看 | 91精品免费在线视频 | 欧美黑人性爽 | 国产精品久久久久久麻豆一区 | 精品在线观看一区二区三区 | 日韩理论电影在线观看 | 狠狠综合网 | 天天干天天干天天干天天干天天干天天干 | a成人v | 国产麻豆果冻传媒在线观看 | 国产 视频 高清 免费 | 亚洲成人av在线播放 | 亚洲特级毛片 | 免费午夜在线视频 | 亚洲欧美视频一区二区三区 | 久久精品男人的天堂 | 天天爽夜夜爽人人爽曰av | 精品久久久久久久久久久院品网 | 国产精彩视频一区二区 | 中文字幕在线观看免费高清电影 | 久草免费电影 | 久久y | 91夫妻视频 | 免费在线观看中文字幕 | 日韩欧美中文 | 日韩精品视频久久 | 一色av | 在线观看日韩视频 | 国产精品正在播放 | 午夜视频播放 | av高清在线 | 亚洲麻豆精品 | 黄色国产在线观看 | 黄色三级网站在线观看 | 欧美在线视频日韩 | 国产1区在线 | 天堂av在线网址 | 黄色精品久久久 | 亚洲免费a| 美女国产 | 色视频网站在线 | 亚洲成人高清在线 | 中文字幕乱码电影 | 天天干亚洲 | www·22com天天操| 婷婷丁香花五月天 | 久久成人免费 | 国产精品久久久久婷婷 | 狠狠干夜夜操天天爽 | 欧美性极品xxxx娇小 | 九精品 | 日本黄色一级电影 | 欧美在线视频精品 | 91爱看片 | 麻豆91小视频 | 天天色成人 | 国产精品视频永久免费播放 | 久久久亚洲成人 | 色香蕉视频 | 久一久久 | 国产成人久久av免费高清密臂 | 日韩在线视频网站 | 欧美精品在线观看免费 | 美女视频免费一区二区 | 久久久官网 | 久久草网| 在线黄av | 中文字幕最新精品 | 手机在线永久免费观看av片 | 欧美极品在线播放 | 日韩三级免费观看 | 六月丁香婷婷在线 | 久久色在线观看 | 国产一区二区日本 | 超级碰碰免费视频 | 麻豆传媒视频在线免费观看 | 国产美女免费 | 免费a视频在线观看 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 久久国产精品视频 | 在线看日韩 | 欧美日韩在线视频免费 | 日韩免费视频观看 | 成年人免费看 | 在线观看91久久久久久 | 国产三级久久久 | 日韩高清无线码2023 | 免费特级黄毛片 | av看片网| 成在人线av| 成人免费看片网址 | 视频二区在线 | 久久这里只有精品久久 | 婷婷丁香色综合狠狠色 | 亚洲一区动漫 | 国产精品理论视频 | 高清精品在线 | 免费在线观看av电影 | 成年人电影免费在线观看 | 人人操日日干 | 国产a级免费| 亚洲精品高清一区二区三区四区 | 日韩在线视频线视频免费网站 | 国产午夜精品av一区二区 | 日韩免费电影网 | 欧美日韩不卡一区 | 久久综合久色欧美综合狠狠 | 激情av在线资源 | 日日夜夜精品网站 | 国产黄色视 | 国产精品久久久久久久久久直播 | 五月婷在线视频 | 国产精品ⅴa有声小说 | 国产精品国产三级国产aⅴ入口 | 色婷婷在线播放 | 国产精品久久久777 成人手机在线视频 | 免费在线国产精品 | 国产99色 | 人人草在线视频 | 精品久久一二三区 | 91精品久久久久久综合乱菊 | 四虎伊人 | 国产精品观看在线亚洲人成网 | 国产精品免费成人 | 一区二区 不卡 | 一区二区精品视频 | 成人午夜黄色影院 | 国产精品一区二区在线播放 | 久久精品96 | www亚洲视频 | 四虎免费在线观看视频 | 在线观看91 | 美女在线观看网站 | 日韩女同一区二区三区在线观看 | 91成人免费观看视频 | 免费看久久久 | av丝袜美腿 | 激情av一区二区 | 美女视频黄频 | 色爱区综合激月婷婷 | 黄色小说在线观看视频 | 日韩精品资源 | 日韩视频专区 | 久草视频在线免费播放 | 久久亚洲综合国产精品99麻豆的功能介绍 | 中文字幕亚洲欧美日韩2019 | 久久免费观看视频 | 亚洲精品国产精品国自产 | 99精品久久只有精品 | 在线日韩视频 | 久久久久国产一区二区三区四区 | 色综合天天视频在线观看 | 在线观看精品一区 | 天天干天天搞天天射 | 日韩视频免费在线观看 | 国产亚洲成av片在线观看 | 国产玖玖视频 | 日韩视频在线不卡 | 久久96国产精品久久99软件 | 欧美专区国产专区 | 99久久精品国产观看 | 日韩中出在线 | 成人一级免费电影 | 中文乱幕日产无线码1区 | 日韩免费观看视频 | 亚洲精品午夜久久久久久久 | 中文字幕一区二区三区精华液 | 免费看国产曰批40分钟 | 亚洲第一伊人 | 日韩久久精品一区二区 | 四虎影视成人永久免费观看视频 | 麻豆91精品视频 | 久久涩视频 | 日韩精品一区二区三区水蜜桃 | 黄色福利网站 | 精品一区二区电影 | .精品久久久麻豆国产精品 亚洲va欧美 | av在线免费在线观看 | 久久久久久国产精品久久 | 久久久免费网站 | 干干夜夜| 伊人一级 | 欧美精品二区 | 啪啪免费视频网站 | 五月婷网 | 免费成人av网站 | 黄色性av | av在线成人 | 欧美伦理一区二区三区 | 久久久综合九色合综国产精品 | 91精品国产综合久久福利 | 亚洲精品电影在线 | 成人免费色 | 91精品久久久久久久91蜜桃 | av成人在线电影 | 黄色电影在线免费观看 | 久久美女免费视频 | 亚洲,播放 | 四虎影视成人 | 在线看片一区 | 一区二区三区精品在线视频 | 国产69精品久久99不卡的观看体验 | 久久69av| 国产精品日韩精品 | 国产精久久久久久妇女av | 视频 天天草| av色图天堂网| 日韩在线网址 | 97视频免费在线观看 | 开心色插 | 爱射综合 | 成人在线播放网站 | 国产玖玖在线 | 亚洲人久久| 伊人色综合久久天天网 | 人人狠| 91精品日韩 | 成人av免费在线看 | 精品国产乱码 | 久久三级视频 | 亚洲高清在线视频 | 成人性生爱a∨ | 美国av大片 | 美女国产精品 | 五月天色丁香 | 国产精品成人av久久 | 久久在线免费观看视频 | 精品特级毛片 | 亚洲精品午夜久久久久久久久久久 | 久久久久久免费毛片精品 | 久久五月婷婷丁香 | 日本免费久久高清视频 | 五月丁婷婷 | 在线欧美中文字幕 | 欧美日韩中文在线视频 | 黄色av高清 | 中文字幕在线观看一区二区 | 在线观看完整版 | 亚洲天堂毛片 | av在线精品| av国产网站 | 国产高清小视频 | 亚洲免费资源 | 欧美资源 | 成人黄色片在线播放 | 中文字幕亚洲在线观看 | 日韩a在线看 | 婷婷六月天丁香 | 日韩中文在线视频 | 五月天久久综合 | 人人干人人干人人干 | 人人看人人做人人澡 | 97成人在线 | 欧美性受极品xxxx喷水 | 亚洲国产成人高清精品 | 夜夜天天干| 午夜精品久久久久99热app | 国产免费久久精品 | 久久精品欧美一区二区三区麻豆 | 最新中文在线视频 | 人人干,人人爽 | 国产专区在线视频 | 99色人| 亚洲欧洲在线视频 | 久久成人国产精品 | 国产精品伦一区二区三区视频 | 日韩在线高清 | 菠萝菠萝蜜在线播放 | 色综合国产 | 黄色网在线免费观看 | 99国产视频| 黄色毛片视频免费观看中文 | 国产爽视频| 97人人超碰在线 | 久久久久久国产精品免费 | 中文亚洲欧美日韩 | 综合久久网站 | 西西4444www大胆无视频 | 免费观看视频的网站 | h动漫中文字幕 | 97人人视频 | 麻豆影视网站 | 国产成人久久精品77777 | 一本一道久久a久久精品蜜桃 | 就要干b| 五月激情五月激情 | 99理论片 | 97成人精品视频在线观看 | 亚洲网久久 | 97人人爽人人| 久久大视频 | 黄毛片在线观看 | 96精品视频 | 国产精品99免视看9 国产精品毛片一区视频 | 久久,天天综合 | 黄色精品国产 | 热久久免费视频 | 激情五月看片 | 91免费观看网站 | 国产精品一区二区三区免费看 | 天天操夜夜想 | 国产黄色视| 精品久久久久久久久中文字幕 | 麻豆 free xxxx movies hd| 51精品国自产在线 | 久久久免费在线观看 | 五月天精品视频 | 久久,天天综合 | 亚洲一级二级 | 久久免费看视频 | 中文字幕国产在线 | 日韩videos高潮hd | 国产九九精品视频 | 91资源在线免费观看 | 久久婷五月| 免费三级骚 | 国产精品久久久久久久久久久杏吧 | 久久婷婷丁香 | 天天操综| 色天天 | 黄色av电影一级片 | 欧美在线视频一区二区三区 | 顶级bbw搡bbbb搡bbbb| 国产黄色片在线 | 手机av电影在线 | 黄在线免费看 | 久久嗨| 国产精品12 | 黄色91在线 | 亚洲欧美日韩精品一区二区 | 欧美精品天堂 | 国产成人在线免费观看 | 国产精品不卡一区 | 国产成人精品综合 | 久久理论电影 | 国产黄色视 | 亚洲午夜在线视频 | 亚洲精品在线资源 | 自拍超碰在线 | 免费久久99精品国产 | 国产福利91精品一区 | 久久久在线视频 | 人人揉人人揉人人揉人人揉97 | 日韩精品久久久久久中文字幕8 | 日韩欧美视频在线免费观看 | 九九久久在线看 | 久久精品亚洲综合专区 | 91精品久久久久久粉嫩 | 久草网站在线 | 精品国自产在线观看 | 狠狠色狠狠色合久久伊人 | 免费高清影视 | 午夜视频免费 | 狠狠色丁香九九婷婷综合五月 | 日韩在线视频一区二区三区 | 日韩精品视频久久 | 一级久久精品 | 国产日韩欧美在线观看 | 国产精品久久久久高潮 | 丁香婷婷久久 | 亚洲va欧美va人人爽 | 国产资源在线观看 | 国内成人精品2018免费看 | 日韩免费区 | 中国黄色一级大片 | 成人免费在线观看入口 | 成人黄色大片 | 日韩天堂在线观看 | 日日草天天草 | 国产无区一区二区三麻豆 | 永久免费精品视频 | 日本中文字幕在线免费观看 | av先锋中文字幕 | 日韩综合视频在线观看 | 国产一区精品在线 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 国内成人精品2018免费看 | 日韩精品在线免费观看 | 欧美人牲 | 日韩黄色av网站 | 国内精品视频在线 | 欧美一级片免费播放 | 国产色婷婷精品综合在线手机播放 | 久久伊人爱 | 麻花豆传媒mv在线观看 | 亚洲欧洲国产精品 | 99精品热视频 | 美女网站在线看 | 97超级碰碰碰视频在线观看 | 碰超在线97人人 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 欧美激情在线网站 | 亚洲精品网址在线观看 | 中文字幕在线免费看 | 精品日韩视频 | 激情五月开心 | 黄色官网在线观看 | 黄色一级大片在线免费看国产一 | 粉嫩av一区二区三区四区在线观看 | 欧美一区二区三区在线 | 久久久精品欧美一区二区免费 | 夜夜躁日日躁狠狠久久av | 91麻豆免费视频 | 中文 一区二区 | 欧美精品久久天天躁 | 高潮久久久久久久久 | 天天摸天天操天天爽 | 国产在线久草 | 91人人人 | 亚洲国产视频a | 久久精精品视频 | 五月天中文字幕mv在线 | 久久久精品福利视频 | 最新国产精品久久精品 | 国产视频欧美视频 | 五月开心激情网 | 美女网站黄在线观看 | av成人在线观看 | 午夜精品久久久久久久99婷婷 | 激情动态 | 天天色天天搞 | 高清久久久久久 | 狠狠色噜噜狠狠狠狠2021天天 | 日本韩国欧美在线观看 | 一区二区三区四区精品 | 欧美日韩一区二区在线观看 | 91麻豆精品国产91久久久久 | 西西444www大胆高清图片 | 天天做天天爱天天爽综合网 | 亚洲香蕉在线观看 | 精品国产福利在线 | 成人国产精品一区 | 国产免费激情久久 | 国产精品久久片 | 亚洲 成人 一区 | 国产成人免费精品 | 91漂亮少妇露脸在线播放 | 久久伊人八月婷婷综合激情 | 国产专区在线看 | 国产免费一区二区三区网站免费 | 免费看毛片网站 | 成人a级黄色片 | 一区二区三区电影在线播 | 在线看的av网站 | 在线观看中文av | 亚洲日本va午夜在线电影 | 伊人五月天婷婷 | 美女精品在线观看 | 中文字幕av全部资源www中文字幕在线观看 | 天天草综合 | 亚洲精品色婷婷 | 亚洲免费精品一区二区 | 98超碰在线观看 | 免费精品国产va自在自线 | 日韩网站在线播放 | 亚洲成人av影片 | 五月天狠狠操 | 色在线亚洲 | 首页av在线 | 不卡中文字幕在线 | 免费十分钟 | 久久久久久久久久久久久国产精品 | 成人网看片 | 免费日韩 精品中文字幕视频在线 | 久久久国产精华液 | 亚洲精品乱码久久久久久高潮 | 亚洲精品午夜视频 | 国产在线一卡 | 国产免费久久久久 | 免费国产在线精品 | 日韩免费在线观看网站 | 在线观看成人一级片 | 午夜 在线 | 美女国内精品自产拍在线播放 | 国产精品一区电影 | 亚洲精品国偷拍自产在线观看 | 国产成人99久久亚洲综合精品 | 婷婷日 | 草久在线视频 | 亚洲永久精品在线观看 | 国产精品6999成人免费视频 | 成人三级网址 | 色哟哟国产精品 | www.国产视频| 91视频啊啊啊 | 国产福利91精品 | 国产黄色免费看 | 成年人在线电影 | 午夜精品av在线 | www.久艹| 日韩激情在线 | 久久久精品电影 | 精品福利视频在线观看 | 国产黄色看片 | 91av中文| 欧美一级性 | 久久久久国产一区二区 | 色永久免费视频 | 国产一级高清 | 亚洲国产剧情av | 毛片一级免费一级 | 国内外激情视频 | 免费国产一区二区 | 视频二区在线视频 | 久久久久99精品国产片 | av解说在线 | 精品视频9999| 久久电影国产免费久久电影 | 91视频免费国产 | 欧美午夜寂寞影院 | 狠狠色丁香婷婷综合视频 | bayu135国产精品视频 | 日韩午夜高清 | 日日操夜| 91福利国产在线观看 | 国产日韩欧美在线 | 色av资源网 | 国产1级视频| 日韩精品一区二区在线视频 | 色婷婷精品 | 奇米网网址 | 欧美一区二区在线免费观看 | 9999激情 | 激情丁香综合五月 | 欧美热久久 | 国产 av 日韩| 91精品一区二区三区蜜桃 | 色狠狠综合天天综合综合 | 国产青春久久久国产毛片 | 国内精品中文字幕 | 久久久18 | 国内精品在线一区 | 欧美一级久久久久 | 国产一二区免费视频 | 97电影手机| 欧美一区二区三区在线播放 | 99久热| 久久精品一级片 | 亚洲久在线 | 久久人人爽人人片 | 深爱开心激情网 | 91超碰免费在线 | 欧美成人在线网站 | 99视频在线精品国自产拍免费观看 | 国产亚洲一区二区三区 | 国产又黄又爽又猛视频日本 | av片在线看 | 亚洲一区精品人人爽人人躁 | 欧美在线18 | 久久精品亚洲一区二区三区观看模式 | 91精品在线观看入口 | 激情久久综合 | 久久久精品亚洲 | 免费视频网 | www欧美日韩 | 成年人网站免费观看 | 亚洲精品h| 国产高清不卡一区二区三区 | 婷婷六月天综合 | 日韩av一区二区三区四区 | 人人超碰免费 | 探花视频免费在线观看 | 麻豆果冻剧传媒在线播放 | 91在线免费播放 | 欧美一级片免费播放 | 日韩欧美在线高清 | 国产色妞影院wwwxxx | 中文字幕视频网站 | 精品福利片 | 中文字幕免费看 | 毛片久久久 | 色多多视频在线观看 | 国产成人高清 | 国内精品在线观看视频 | 永久免费在线 | 欧美一级日韩三级 | 在线看小早川怜子av | 激情久久小说 | 成年人在线电影 | 97在线观视频免费观看 | 最新日韩在线观看 | 亚洲国产美女精品久久久久∴ | 国产人免费人成免费视频 | 国产精品国产三级在线专区 | 在线观看91 | 久久精品免视看 | 国产一级在线视频 | 国产一级片毛片 | 亚洲国产经典视频 | 又黄又刺激又爽的视频 | 国产成人精品一区二区三区福利 | 久久久久99精品国产片 | 久久精品美女视频网站 | 久久精品视频在线播放 | 天天操夜夜操 | 成年在线观看 | 激情九九 | 免费a v视频 | 综合网在线视频 | 91精品视频在线看 | 国产美女无遮挡永久免费 | 91麻豆高清视频 | 日韩欧美精品一区二区三区经典 | 国产999久久久 | 美女视频一区二区 | 国产中文字幕国产 | 久久夜色精品国产欧美乱极品 | 91在线影院 | 一级国产视频 | 欧美激情精品久久久久久 | 亚洲精品动漫成人3d无尽在线 | 日本色小说视频 | 亚洲国产精品一区二区久久,亚洲午夜 | 中文字幕av网站 | 五月婷婷色丁香 | 91亚洲综合 | 国产精品网红直播 | 黄色一级大片免费看 | 久久久国产精品一区二区三区 | 国产精品日韩高清 | 国内精品在线看 | 天天操狠狠操 | 日韩色在线观看 | 美女久久久久久 | 日韩美女黄色片 | 久久国产精品99精国产 | 激情欧美一区二区三区免费看 | 国产精品videossex国产高清 | 免费三级av | www.福利视频 | 亚洲色图美腿丝袜 | 国产成人av免费在线观看 | 高清精品久久 | 毛片精品免费在线观看 | 成人一级片免费看 | 久久人人爽人人爽人人片av免费 | 开心激情五月婷婷 | 成年人在线观看免费视频 | 亚洲人成免费 | 国产欧美精品一区二区三区四区 | 免费久久精品视频 | 成人中心免费视频 | 久久视讯 | 高清国产在线一区 | 欧美网站黄色 | 久久综合中文字幕 | 亚洲japanese制服美女 | 天天操夜夜干 | 国内精品视频一区二区三区八戒 | 99热在线精品观看 | 久久人人爽人人片av | 成人禁用看黄a在线 | 国产日产在线观看 | 亚洲 欧洲 国产 精品 | ,午夜性刺激免费看视频 | 日韩欧美精品在线视频 | 久久成人视屏 | 色七七亚洲影院 | 久久久国产精华液 | 亚洲美女免费精品视频在线观看 | 国产成人三级三级三级97 | 国产福利一区二区三区在线观看 | 久久亚洲私人国产精品va | 欧美福利在线播放 | www.av小说 | 国产色视频一区 | 欧美日韩久久不卡 | 国产高清精品在线 | 日色在线视频 | 91中文字幕在线观看 | 欧美日本在线视频 | av网站在线免费观看 | 欧美成人猛片 | 中文在线免费观看 | 国产精品久久久久久一区二区三区 | 欧美精品乱码久久久久久按摩 | 亚洲97在线 | 久久婷婷国产 | 久久精品三| 激情久久久久 | 久久综合狠狠 | 一 级 黄 色 片免费看的 | 一区二区三区电影在线播 | 日韩在线观看的 | 九九久久精品 | 91av大全| 日韩中文字幕视频在线观看 | 国产精品久久中文字幕 | 亚洲天堂精品视频在线观看 | 成人一级片免费看 | 99久久久国产精品美女 | 麻豆视频在线看 | 免费日韩一区二区三区 | 亚洲欧美日韩在线看 | 最新中文字幕视频 | 国产视频不卡 | 国产性xxxx| 97视频播放| 精品亚洲欧美一区 | 久久人人爽人人爽人人片av软件 | 中文区中文字幕免费看 | 最新成人在线 | 日韩大片免费在线观看 | 日本h在线播放 | 91视频在线观看大全 | 草久视频在线 | 亚洲天堂网在线视频观看 | 日韩综合在线观看 | 麻豆传媒在线视频 | 中文字幕 国产专区 | 久久男人视频 | 黄色一级片视频 | 特级毛片在线观看 | 久久这里有 | 日韩视频一区二区三区在线播放免费观看 | 欧美天天干| 一区二区伦理 | 麻豆视频www | 国产精品久久久久av免费 | 国产精品久久99综合免费观看尤物 | 中文理论片 | 日韩专区中文字幕 | 99精品视频在线 | 精品视频免费观看 | www视频在线播放 | 日韩一级黄色片 | 激情五月婷婷丁香 | 色视频在线免费 | 97成人精品视频在线观看 | 91九色综合 | 久久久久久久久久久久影院 | 国产精品成人久久久久久久 | 午夜精品久久久久久久爽 | 成x99人av在线www| 成人免费视频网站 | 中文字幕av在线播放 | 日韩久久精品一区二区三区下载 | 二区三区av | 国产精品自产拍在线观看蜜 | 日韩一级黄色片 | 欧美日韩久久久 | 成人在线视频论坛 | 国内精品久久久久 | 在线国产一区二区三区 | 久久久久高清毛片一级 | 国产亚洲亚洲 | 成人毛片在线观看视频 | 日韩精品视频在线观看免费 | av成人在线观看 | 国产精品福利在线 | 精品av在线播放 | 日本二区三区在线 | 日韩欧美视频二区 | 久久不射网站 | 国产精品美女久久久久久久网站 | 天天天在线综合网 | 国产精品国产三级国产 | 天天摸天天舔 | 一区二区三区免费网站 | 亚洲人人精品 | 免费精品视频在线观看 | 精品一区二区在线观看 | 日韩va欧美va亚洲va久久 | 日日爽天天爽 | 久久伊人精品天天 | 一区在线播放 | 91亚洲精品乱码久久久久久蜜桃 | 欧美亚洲国产精品久久高清浪潮 | 丁香5月婷婷久久 | 国产一级二级在线播放 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产在线免费av | 在线免费试看 | 黄色亚洲免费 | 精品久久久成人 | 国产精品美女www爽爽爽视频 | 99久久精品国产观看 | 高清不卡一区二区三区 | av看片网址 | 国产成人一区二区啪在线观看 | 99久久久成人国产精品 | www国产一区 | a在线观看国产 | 激情欧美日韩一区二区 | 日韩三级中文字幕 | 国产黄色一级片在线 | 国产精品亚洲a | 在线视频观看成人 | 日日干,天天干 | 国产精品电影一区二区 | 一级做a爱片性色毛片www | 欧美在线aaa| 久久久久久国产精品久久 | 成年人免费看av | 欧美精品国产综合久久 | 国产亚洲aⅴaaaaaa毛片 | 九色免费视频 | 日本久久成人中文字幕电影 | 日韩欧美一区二区在线观看 | 波多野结衣在线观看一区二区三区 | 911精品美国片911久久久 | 激情综合网在线观看 | 日产乱码一二三区别在线 | 日韩精品视频在线观看网址 | 2019中文字幕第一页 | 黄色成人影院 | 国产精国产精品 | 九色91在线 | 色妞色视频一区二区三区四区 | 国产伦精品一区二区三区免费 | 在线观看中文字幕 | 波多野结衣亚洲一区二区 | 成人在线一区二区三区 | 国产一级二级三级在线观看 | 精品国产伦一区二区三区观看体验 | a天堂中文在线 | 国产男女无遮挡猛进猛出在线观看 | 国产一区二区不卡视频 | 久久久久欠精品国产毛片国产毛生 | 精品久久综合 | 欧美黑吊大战白妞欧美 | 国产在线综合视频 | 亚洲美女视频在线观看 | 天天干天天干天天射 | 免费视频成人 | av线上免费看 | 欧美日韩久久不卡 | 久草精品视频在线看网站免费 | 日韩国产精品久久久久久亚洲 | 色99中文字幕 | 国产乱视频 | 色偷偷网站视频 | 久久国产精品一区二区 | 久久久国产精品免费 | www免费黄色 | 成人国产精品一区二区 | 亚洲三级网站 | 日韩精品 在线视频 | 久久一区二区免费视频 | 午夜久久久久 | 国产精品video爽爽爽爽 | 97在线成人 | 欧美aa在线观看 | av直接看 | 日韩电影一区二区三区 | 99精彩视频在线观看免费 | 一区二区欧美在线观看 | 久久久久免费精品视频 | 欧洲精品码一区二区三区免费看 | 欧美精品中文 | 国产日本在线观看 | 久久精品艹 | 国产精品成人在线 | 欧美a性| 91福利试看| 久久久天堂 | 国产小视频在线免费观看 | 一区二区三区国产欧美 | 国产小视频精品 | 在线97| 久久黄视频 | 五月天久久久久久 | 国产真实在线 | 久久久精品视频网站 | 九九热只有这里有精品 | 丁香婷婷久久久综合精品国产 | 麻豆久久久久 | 99国产精品久久久久久久久久 | 玖玖精品在线 | www国产亚洲精品久久麻豆 | 久久精品中文字幕 | wwwwww国产 | 国内精品久久久久久久久久久久 | 日韩午夜一级片 | 久久99精品久久久久久久久久久久 | 久久久精品国产免费观看一区二区 | 欧美在线视频一区二区三区 | 性色xxxxhd | 日韩免费av在线 | 欧美 另类 交 | 夜夜躁狠狠躁日日躁视频黑人 | 丝袜av网站 | 亚洲婷久久 | 国产黄色免费电影 | 中文字幕在线日亚洲9 | 国产在线免费av | 久久久久久久久爱 | 成人在线电影观看 | 在线观看精品视频 | 在线观看网站黄 | 久久人人干 | 欧美日韩伦理一区 | 久久国产亚洲 | 久久久久影视 | 国产精品 欧美 日韩 | 麻豆视频免费入口 | 国产黄在线 | 国产精品一区二区你懂的 | 91桃色在线观看视频 | 91在线看视频 | 天天操天天色天天射 | 久久丝袜视频 | 国产亚洲精品av | 狠狠色伊人亚洲综合成人 | 伊人天堂av | 成人欧美一区二区三区黑人麻豆 | 亚洲美女精品区人人人人 | 中文字幕精品一区二区三区电影 | 激情久久一区二区三区 | 国产精品一区二区av麻豆 | 91看片淫黄大片一级在线观看 | 午夜精品久久久久久久久久久久久久 | av网址aaa | 精品久久久久久亚洲综合网 | 色噜噜日韩精品一区二区三区视频 |