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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Dubbo服务暴露流程

發(fā)布時間:2023/12/20 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dubbo服务暴露流程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. 前言

DubboBootstrap啟動時,首先會通過initialize()方法完成初始化,裝配各種Config對象,為后續(xù)的服務(wù)暴露和引用準(zhǔn)備好環(huán)境。
?

ServiceConfig對象就是Dubbo對服務(wù)的描述對象,服務(wù)暴露的邏輯都在ServiceConfig#export()里面,Dubbo暴露服務(wù)也就是遍歷所有的ServiceConfig,挨個進(jìn)行暴露。

上圖是官方文檔給的圖,在Dubbo的架構(gòu)體系中,像集群容錯、負(fù)載均衡等邏輯都是客戶端實現(xiàn)的,所以服務(wù)暴露的過程相對會簡單很多。ServiceConfig描述了對外提供的服務(wù),ref屬性引用了具體的服務(wù)實現(xiàn)對象,當(dāng)Provider接收到Consumer發(fā)起的RPC調(diào)用時,會交給ref執(zhí)行,但是Dubbo不會直接使用ref,因為不管是Provider還是Consumer,Dubbo都在向Invoker靠攏。
Invoker在Dubbo體系中是一個非常重要的概念,它代表一個調(diào)用者,可能是本地調(diào)用、遠(yuǎn)程調(diào)用、甚至是集群調(diào)用。對于Provider而言就是本地調(diào)用了,生成Invoker非常簡單,字節(jié)碼技術(shù)動態(tài)生成Wrapper對象,底層調(diào)用的還是ref對象。
?

將ref包裝成Invoker后,接下來就是根據(jù)協(xié)議進(jìn)行服務(wù)暴露了,對應(yīng)的方法是Protocol#export(),會得到一個Exporter。Provider在接收到Consumer的RPC請求時,會根據(jù)Invocation參數(shù)映射到Exporter,然后獲取它關(guān)聯(lián)的Invoker,執(zhí)行本地調(diào)用,最后響應(yīng)結(jié)果。

2. 源碼分析

Dubbo服務(wù)暴露的入口在ServiceConfig#export()方法,主要做了三件事:

  • 配置的校驗和更新
  • 暴露服務(wù)
  • 分發(fā)服務(wù)暴露事件
  • 代碼精簡后,如下:

    public synchronized void export() {// 檢查和更新配置checkAndUpdateSubConfigs();if (shouldDelay()) {// 延遲暴露DELAY_EXPORT_EXECUTOR.schedule(this::doExport, getDelay(), TimeUnit.MILLISECONDS);} else {// 暴露服務(wù)doExport();}// 分發(fā)暴露事件exported(); }

    2.1 checkAndUpdateSubConfigs()

    該方法主要是對ServiceConfig對象做一些配置的校驗和自動更新。例如使用ProviderConfig的全局默認(rèn)配置、將protocolIds轉(zhuǎn)換成ProtocolConfig對象、自身的屬性按照優(yōu)先級進(jìn)行刷新等等。配置更新完了,接下來就是做服務(wù)暴露的前置Check,例如注冊中心是否有效、ref對象是否符合要求等等。

    private void checkAndUpdateSubConfigs() {// 使用ProviderConfig默認(rèn)配置completeCompoundConfigs();// ProviderConfig不存在則自動創(chuàng)建checkDefault();// protocolIds轉(zhuǎn)換checkProtocol();if (!isOnlyInJvm()) {// 服務(wù)注冊,還要檢查配置中心checkRegistry();}// 自身屬性根據(jù)優(yōu)先級刷新this.refresh();checkStubAndLocal(interfaceClass);ConfigValidationUtils.checkMock(interfaceClass, this);ConfigValidationUtils.validateServiceConfig(this);postProcessConfig();代碼有精簡... }

    2.2 doExport()

    最終會調(diào)用doExportUrls()方法多注冊中心多協(xié)議暴露服務(wù),Dubbo暴露服務(wù)除了會向注冊中心注冊一份,本地也會注冊到ServiceRepository。
    ServiceRepository保存了當(dāng)前應(yīng)用提供了哪些服務(wù)、引用了哪些服務(wù),后續(xù)Consumer服務(wù)引用時,如果自身已經(jīng)提供了該服務(wù),就會通過ServiceRepository直接引用本地提供的服務(wù),跳過網(wǎng)絡(luò)傳輸。

    ServiceRepository repository = ApplicationModel.getServiceRepository(); // 注冊Service ServiceDescriptor serviceDescriptor = repository.registerService(getInterfaceClass()); // 注冊Provider repository.registerProvider(getUniqueServiceName(),ref,serviceDescriptor,this,serviceMetadata);

    接下來,獲取當(dāng)前服務(wù)需要注冊到哪些注冊中心,加載對應(yīng)的URL。

    // 加載配置中心URL List<URL> registryURLs = ConfigValidationUtils.loadRegistries(this, true);

    在Check那一步,就已經(jīng)解析了服務(wù)需要通過哪些協(xié)議進(jìn)行暴露,所以接下來會遍歷protocols,進(jìn)行單協(xié)議多注冊中心暴露。

    for (ProtocolConfig protocolConfig : protocols) {String pathKey = URL.buildKey(getContextPath(protocolConfig).map(p -> p + "/" + path).orElse(path), group, version);repository.registerService(pathKey, interfaceClass);serviceMetadata.setServiceKey(pathKey);// 單協(xié)議多注冊中心暴露doExportUrlsFor1Protocol(protocolConfig, registryURLs); }

    服務(wù)暴露需要用到各種參數(shù),用于構(gòu)建后續(xù)的服務(wù)暴露URL,這里會使用HashMap存儲。Dubbo的配置粒度是到方法級別的,對應(yīng)的類是MethodConfig,如果有方法級別的配置,也需要解析到Map中。

    // 服務(wù)暴露的各種參數(shù),用于組裝服務(wù)暴露URL Map<String, String> map = new HashMap<String, String>(); map.put(SIDE_KEY, PROVIDER_SIDE); // 運行時參數(shù) ServiceConfig.appendRuntimeParameters(map); AbstractConfig.appendParameters(map, getMetrics()); AbstractConfig.appendParameters(map, getApplication()); AbstractConfig.appendParameters(map, getModule()); ......

    參數(shù)組裝完畢,解析出服務(wù)暴露的host和port,然后構(gòu)建URL。

    // 查找服務(wù)暴露的host和port String host = findConfigedHosts(protocolConfig, registryURLs, map); Integer port = findConfigedPorts(protocolConfig, name, map); // 構(gòu)建URL URL url = new URL(name, host, port, getContextPath(protocolConfig).map(p -> p + "/" + path).orElse(path), map);

    服務(wù)暴露的范圍可以通過scope屬性配置,none代表不暴露、local僅暴露到本地JVM、remote會暴露到遠(yuǎn)程。Dubbo在服務(wù)暴露前會進(jìn)行判斷,默認(rèn)情況下會同時暴露到本地JVM和遠(yuǎn)程。

    2.2.1 服務(wù)本地暴露

    exportLocal()方法用來本地暴露,本地暴露非常的簡單,就是injvm協(xié)議暴露,創(chuàng)建InjvmExporter存儲到Map。不監(jiān)聽本地端口,不走網(wǎng)絡(luò)傳輸,但是會走Filter和Listener。

    private void exportLocal(URL url) {// 改寫協(xié)議為injvm,port為-1,不開啟端口監(jiān)聽,不走網(wǎng)絡(luò)傳輸URL local = URLBuilder.from(url).setProtocol(LOCAL_PROTOCOL).setHost(LOCALHOST_VALUE).setPort(0).build();Exporter<?> exporter = PROTOCOL.export(PROXY_FACTORY.getInvoker(ref, (Class) interfaceClass, local));exporters.add(exporter); }

    2.2.2 服務(wù)遠(yuǎn)程暴露

    暴露完本地,接下來就是遠(yuǎn)程暴露了。遠(yuǎn)程暴露前會先將ref包裝成Invoker,對應(yīng)的方法是ProxyFactory#getInvoker(),Invoker會根據(jù)methodName調(diào)用ref的方法。
    有兩種方式,一種是利用Java自帶的反射,另一種是利用字節(jié)碼技術(shù)動態(tài)生成代理對象。Dubbo默認(rèn)會選擇第二種方式,利用javassist動態(tài)創(chuàng)建Class對應(yīng)的Wrapper對象,動態(tài)生成的Wrapper類會根據(jù)方法名和參數(shù)直接調(diào)用ref對應(yīng)的方法,避免Java反射帶來的性能問題。

    public <T> Invoker<T> getInvoker(T proxy, Class<T> type, URL url) {// 提升反射效率final Wrapper wrapper = Wrapper.getWrapper(proxy.getClass().getName().indexOf('$') < 0 ? proxy.getClass() : type);return new AbstractProxyInvoker<T>(proxy, type, url) {@Overrideprotected Object doInvoke(T proxy, String methodName,Class<?>[] parameterTypes,Object[] arguments) throws Throwable {return wrapper.invokeMethod(proxy, methodName, parameterTypes, arguments);}}; }

    ref包裝成了Invoker,然后就可以開始根據(jù)協(xié)議來暴露服務(wù)了。如果服務(wù)要注冊到注冊中心,解析出來的URL協(xié)議部分會被改寫為registry,這樣SPI觸發(fā)的就是RegistryProtocol#export()方法。registry本身是個偽協(xié)議,它只是在原有協(xié)議暴露的基礎(chǔ)上,增加了服務(wù)注冊到注冊中心的功能。
    ?

    首先從URL中分別提取出注冊中心URL和服務(wù)暴露的真實URL。

    // 注冊中心URL,前面改寫過協(xié)議,真實協(xié)議放到參數(shù)里去了,這里會還原 URL registryUrl = getRegistryUrl(originInvoker); // 服務(wù)提供者URL,這里會將協(xié)議改為dubbo URL providerUrl = getProviderUrl(originInvoker); // 獲取訂閱的URL,URL變更服務(wù)會重新發(fā)布 final URL overrideSubscribeUrl = getSubscribedOverrideUrl(providerUrl); // 創(chuàng)建URL監(jiān)聽器 final OverrideListener overrideSubscribeListener = new OverrideListener(overrideSubscribeUrl, originInvoker); overrideListeners.put(overrideSubscribeUrl, overrideSubscribeListener); // Configurator配置URL providerUrl = overrideUrlWithConfig(providerUrl, overrideSubscribeListener);

    providerUrl才是服務(wù)暴露的真實協(xié)議地址,然后通過doLocalExport()方法開始根據(jù)指定的協(xié)議來暴露服務(wù)。

    要區(qū)分服務(wù)的暴露和注冊,暴露一般是指開始監(jiān)聽本地端口,對外提供服務(wù)。注冊是指將服務(wù)注冊到注冊中心,讓Consumer可以感知到。

    private <T> ExporterChangeableWrapper<T> doLocalExport(final Invoker<T> originInvoker, URL providerUrl) {// 協(xié)議://host:port/interfaceName?參數(shù)String key = getCacheKey(originInvoker);return (ExporterChangeableWrapper<T>) bounds.computeIfAbsent(key, s -> {Invoker<?> invokerDelegate = new InvokerDelegate<>(originInvoker, providerUrl);// 這里才是真實的 根據(jù)URL協(xié)議加載Protocol服務(wù)暴露return new ExporterChangeableWrapper<>((Exporter<T>) protocol.export(invokerDelegate), originInvoker);}); }

    在進(jìn)行具體的協(xié)議暴露服務(wù)前,需要先經(jīng)過Protocol的兩個Wrapper類,這個是由SPI的自動包裝特性支持的。首先是ProtocolFilterWrapper,它的目的就是對Invoker封裝一層過濾器鏈FilterChain,在執(zhí)行目標(biāo)方法前先執(zhí)行Filter。然后是ProtocolListenerWrapper,它的目的是在服務(wù)unexport時觸發(fā)事件。
    ?

    經(jīng)過上面兩個包裝類后,SPI的自適應(yīng)調(diào)用,根據(jù)URL的協(xié)議加載對應(yīng)的Protocol實現(xiàn),以dubbo協(xié)議為例,對應(yīng)的就是DubboProtocol#export方法。Dubbo協(xié)議暴露服務(wù),首先自然還是創(chuàng)建DubboExporter,但Dubbo服務(wù)是要供Consumer調(diào)用的,不開啟網(wǎng)絡(luò)服務(wù),Consumer如何調(diào)用呢?所以openServer()方法會開啟服務(wù)。

    public <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {URL url = invoker.getUrl();// 生成服務(wù)唯一標(biāo)識String key = serviceKey(url);DubboExporter<T> exporter = new DubboExporter<T>(invoker, key, exporterMap);exporterMap.put(key, exporter);// 開啟服務(wù)openServer(url);// 優(yōu)化序列化效率optimizeSerialization(url);return exporter; }

    同一個address,不管暴露多少服務(wù),都只會也只能開啟一個服務(wù),所以會用address作為Key,將服務(wù)端緩存到Map容器,address不存在時,才會調(diào)用createServer()創(chuàng)建ProtocolServer。
    創(chuàng)建服務(wù)需要綁定本地端口,最終調(diào)用的是Exchanger#bind()。Exchanger實現(xiàn)類會通過SPI自適應(yīng)加載,目前只有一種實現(xiàn)類HeaderExchanger。

    public class HeaderExchanger implements Exchanger {public static final String NAME = "header";@Overridepublic ExchangeServer bind(URL url, ExchangeHandler handler) throws RemotingException {return new HeaderExchangeServer(Transporters.bind(url, new DecodeHandler(new HeaderExchangeHandler(handler))));} }

    ExchangerServer依賴Transporter,Transporter是Dubbo對網(wǎng)絡(luò)傳輸層的抽象接口,默認(rèn)使用Netty,其他還有如Mina、Grizzly等,Transporter實現(xiàn)也是通過SPI自適應(yīng)加載的,可以通過參數(shù)server或transporter指定,這里我們只看Netty。
    NettyTransporter開啟服務(wù)很簡單,就是創(chuàng)建了NettyServer實例,在它的構(gòu)造函數(shù)中,會開啟Netty服務(wù)端。

    public class NettyTransporter implements Transporter {public static final String NAME = "netty";@Overridepublic RemotingServer bind(URL url, ChannelHandler handler) throws RemotingException {return new NettyServer(url, handler);} }

    在NettyServer的構(gòu)造函數(shù)中,最終會調(diào)用doOpen()開啟服務(wù),熟悉Netty的同學(xué)應(yīng)該很眼熟下面的代碼。創(chuàng)建ServerBootstrap,設(shè)置EventLoopGroup,編配ChannelHandlerPipeline,最終調(diào)用bind()綁定本地端口。

    protected void doOpen() throws Throwable {bootstrap = new ServerBootstrap();bossGroup = NettyEventLoopFactory.eventLoopGroup(1, "NettyServerBoss");workerGroup = NettyEventLoopFactory.eventLoopGroup(getUrl().getPositiveParameter(IO_THREADS_KEY, Constants.DEFAULT_IO_THREADS),"NettyServerWorker");final NettyServerHandler nettyServerHandler = new NettyServerHandler(getUrl(), this);channels = nettyServerHandler.getChannels();bootstrap.group(bossGroup, workerGroup).channel(NettyEventLoopFactory.serverSocketChannelClass()).option(ChannelOption.SO_REUSEADDR, Boolean.TRUE).childOption(ChannelOption.TCP_NODELAY, Boolean.TRUE).childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT).childHandler(new ChannelInitializer<SocketChannel>() {@Overrideprotected void initChannel(SocketChannel ch) throws Exception {// FIXME: should we use getTimeout()?int idleTimeout = UrlUtils.getIdleTimeout(getUrl());NettyCodecAdapter adapter = new NettyCodecAdapter(getCodec(), getUrl(), NettyServer.this);if (getUrl().getParameter(SSL_ENABLED_KEY, false)) {ch.pipeline().addLast("negotiation",SslHandlerInitializer.sslServerHandler(getUrl(), nettyServerHandler));}ch.pipeline().addLast("decoder", adapter.getDecoder()).addLast("encoder", adapter.getEncoder()).addLast("server-idle-handler", new IdleStateHandler(0, 0, idleTimeout, MILLISECONDS)).addLast("handler", nettyServerHandler);}});ChannelFuture channelFuture = bootstrap.bind(getBindAddress());channelFuture.syncUninterruptibly();channel = channelFuture.channel();}

    至此,Provider就開始監(jiān)聽網(wǎng)絡(luò)請求了,服務(wù)的暴露就完成了。

    2.2.3 服務(wù)注冊

    服務(wù)暴露完了,接下來就是注冊,讓Consumer可以感知到。先根據(jù)注冊中心URL加載對應(yīng)的注冊中心實現(xiàn)類。

    protected Registry getRegistry(final Invoker<?> originInvoker) {// 注冊中心URLURL registryUrl = getRegistryUrl(originInvoker);// SPI加載Registry實現(xiàn)return registryFactory.getRegistry(registryUrl); }

    解析出需要注冊到注冊中心的URL,然后調(diào)用RegistryService#register()完成服務(wù)注冊。

    final Registry registry = getRegistry(originInvoker); // 注冊到注冊中心的URL final URL registeredProviderUrl = getUrlToRegistry(providerUrl, registryUrl); // 是否立即注冊 boolean register = providerUrl.getParameter(REGISTER_KEY, true); if (register) {register(registryUrl, registeredProviderUrl); }

    這里以Nacos為例,最終操作如下:

    public void doRegister(URL url) {final String serviceName = getServiceName(url);final Instance instance = createInstance(url);// 注冊服務(wù),最終調(diào)用 NamingService#registerInstance()execute(namingService -> namingService.registerInstance(serviceName,getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP), instance)); }

    3. 總結(jié)

    Dubbo服務(wù)暴露,先將ref封裝成Invoker,Invoker會根據(jù)Consumer的Invocation參數(shù)對ref發(fā)起調(diào)用,Dubbo默認(rèn)使用javassist字節(jié)碼技術(shù)動態(tài)生成Wrapper類,避免了Java反射帶來的性能問題。
    有了Invoker就可以通過Protocol根據(jù)協(xié)議進(jìn)行服務(wù)暴露,如果服務(wù)需要注冊,Dubbo會改寫URL協(xié)議為registry,這是個偽協(xié)議,只是在原服務(wù)暴露的基礎(chǔ)上,增加了服務(wù)注冊的功能。
    在根據(jù)協(xié)議暴露服務(wù)前,還需要關(guān)注兩個包裝類:ProtocolFilterWrapper和ProtocolListenerWrapper,前者用于構(gòu)建Filter鏈,后者用于服務(wù)取消暴露時觸發(fā)事件。
    以dubbo協(xié)議為例,除了創(chuàng)建DubboExporter,還會根據(jù)服務(wù)暴露的address創(chuàng)建ProtocolServer。Transporter是dubbo對網(wǎng)絡(luò)傳輸層的抽象接口,以Netty為例,底層其實就是創(chuàng)建了ServerBootstrap,然后bind本地接口監(jiān)聽網(wǎng)絡(luò)請求。

    總結(jié)

    以上是生活随笔為你收集整理的Dubbo服务暴露流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    av电影中文字幕在线观看 | 亚洲精品综合欧美二区变态 | 九九九九热精品免费视频点播观看 | 日韩激情综合 | 精品免费 | 亚洲国产一区av | 91九色综合 | 日韩中文字幕免费看 | 亚洲另类视频在线观看 | 亚洲精品网站 | 国产亚洲精品bv在线观看 | 国产免费久久 | 国产精品不卡视频 | 国产精品18久久久久久不卡孕妇 | 黄色一级大片在线观看 | 一区二区视频在线播放 | 色网址99 | 中文字幕av在线播放 | 97超碰超碰| 午夜.dj高清免费观看视频 | 欧美大片大全 | 亚洲另类视频在线观看 | 激情五月婷婷 | 91九色porn在线资源 | 国产不卡视频在线 | 国内精品久久久久影院日本资源 | 亚洲精品乱码久久久久 | 在线免费观看视频 | 久草在线高清 | 亚洲电影久久久 | a天堂一码二码专区 | 日日躁夜夜躁xxxxaaaa | 九九在线高清精品视频 | 国产97免费 | 精品国产乱子伦一区二区 | 伊人视频 | 久久久九色精品国产一区二区三区 | 97在线影院 | 九九热精品视频在线观看 | a午夜在线| 国产精品久久三 | 久久免费视频6 | 免费手机黄色网址 | 不卡电影一区二区三区 | 一区二区视频播放 | 国产亚洲综合性久久久影院 | 99久久精品国产系列 | 国产精品免费看久久久8精臀av | 午夜视频在线观看一区二区三区 | 超碰人人av | 久久久麻豆视频 | 狠狠操.com | 成人全视频免费观看在线看 | 69视频国产 | 美女视频网 | 欧美精品一区二区免费 | 韩国av一区二区三区在线观看 | 国产精品av在线免费观看 | 天天干天天摸天天操 | 三上悠亚一区二区在线观看 | 网站你懂的 | 久久久成人精品 | 91麻豆精品国产自产在线游戏 | 成人一级电影在线观看 | 亚洲精品国产第一综合99久久 | 久久免费毛片视频 | 精品久操| 国产精品手机在线 | 日韩精品久久久久久久电影竹菊 | 成人午夜电影免费在线观看 | 中文字幕精品视频 | 午夜a区| 在线观看成人一级片 | 极品美女被弄高潮视频网站 | 亚洲第一香蕉视频 | 在线成人免费电影 | 久久视频免费在线 | 久久艹免费 | 五月婷婷开心 | 婷婷免费在线视频 | 日韩欧美综合在线视频 | 综合影视 | 黄视频色网站 | 亚洲国产免费网站 | 久久成人一区二区 | 色婷婷播放 | 国产区欧美 | 99在线视频精品 | 亚洲欧美一区二区三区孕妇写真 | 国产精品成人免费一区久久羞羞 | 2024国产精品视频 | 99视频精品 | 久久深爱网 | 一区二区三区四区五区六区 | 久久久久久国产一区二区三区 | 亚洲精品在线一区二区 | 国产精品免费观看国产网曝瓜 | 日韩大片在线播放 | 欧美在线99 | 免费观看国产精品 | 91av免费在线观看 | 伊人久久在线观看 | 综合天堂av久久久久久久 | 97人人澡人人添人人爽超碰 | 免费在线观看国产精品 | 99热官网 | 亚洲精品美女久久久 | av黄色大片| 国产精品成人av在线 | 黄色在线观看www | 天天干天天干天天色 | 欧美日韩国产区 | 欧美激情视频一区 | 91视频在线观看免费 | 99热国内精品 | 成人国产一区二区 | 99久久夜色精品国产亚洲96 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 亚洲香蕉视频 | 婷婷丁香在线视频 | 九九热99视频| 午夜av大片 | 92国产精品久久久久首页 | 精品久久久999 | 高清国产一区 | 2000xxx影视 | 免费看v片| 午夜私人影院 | 色婷婷久久一区二区 | 亚洲一二三区精品 | 日p视频 | 91亚洲精品国偷拍自产在线观看 | av午夜电影 | 国内小视频在线观看 | 国产在线观看地址 | 91看片看淫黄大片 | 人人澡人人澡人人 | 天天操月月操 | 成人国产精品入口 | 成人毛片久久 | 91成人精品一区在线播放 | 国产精品高清av | 黄色成人av| 国外调教视频网站 | 色偷偷人人澡久久超碰69 | 亚洲涩涩一区 | 国产视频精品久久 | 国产手机视频在线播放 | 成人性生活大片 | 五月婷婷丁香网 | 午夜少妇一区二区三区 | 日韩精品亚洲专区在线观看 | 在线视频日韩精品 | 国产一区在线免费观看 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 国产一区二区三区高清播放 | 欧美日韩精品在线免费观看 | 欧美日韩啪啪 | 免费久久网 | 99视频这里只有 | www.av小说 | 91精品国产综合久久福利 | 一区二区三区免费在线观看视频 | 毛片视频电影 | 亚洲日本在线一区 | 深夜福利视频一区二区 | 日韩激情久久 | 亚洲一区二区三区在线看 | 五月综合久久 | 久草在在线 | 又湿又紧又大又爽a视频国产 | 国产一级电影网 | 亚洲另类视频在线观看 | 丁香综合网 | 99欧美视频| 日韩91精品 | 91看片黄色| 亚洲国产三级在线 | 午夜视频久久久 | 99久免费精品视频在线观看 | 91在线一区二区 | 伊人影院得得 | 六月丁香久久 | 国产区 在线 | 亚洲精品自拍视频在线观看 | 亚洲国内精品在线 | 日韩免费视频播放 | 日韩视频中文字幕在线观看 | 大型av综合网站 | 中文字幕久久精品亚洲乱码 | 午夜视频在线观看一区二区三区 | 五月婷网 | 国产精品资源网 | 黄色99视频 | 97精品超碰一区二区三区 | 国产精品久久久久久久午夜 | 久久伊人八月婷婷综合激情 | 美女很黄免费网站 | 亚在线播放中文视频 | 国产精品久久久久久久久毛片 | 亚洲国产经典视频 | av888av.com| 欧洲不卡av | 欧美亚洲专区 | 免费亚洲视频在线观看 | 亚洲免费精品一区二区 | 91av小视频 | 亚洲一区久久久 | 国产精美视频 | 成人小视频在线观看免费 | 久久精品人人做人人综合老师 | 丁香六月av | 91视频网址入口 | 欧美analxxxx| 永久免费毛片在线观看 | 黄色亚洲免费 | 午夜av网站 | 91精品免费视频 | 在线看一区二区 | 成人av电影在线 | 国产在线播放一区二区三区 | 日本黄色免费大片 | a级黄色片视频 | 狠狠色丁婷婷日日 | 99久久爱 | www.国产精品 | 人人讲| 久久av网| 国产小视频网站 | 香蕉影视app | 超碰久热 | 国产免费成人 | 欧美福利在线播放 | 99精品一级欧美片免费播放 | 精品99在线 | 不卡中文字幕av | 美女久久 | 日韩欧美一二三 | 97在线影院 | aⅴ精品av导航 | 国产亚洲人 | 人人玩人人添人人澡超碰 | 最近中文字幕 | 一区二区三区免费 | 日韩黄色在线观看 | 九草在线视频 | 精品免费久久久久久 | 波多野结衣视频一区二区三区 | 99久久久国产精品免费观看 | 国产女人18毛片水真多18精品 | 中文字幕 91| 成人三级视频 | 天天操夜夜干 | 天天操夜夜摸 | 五月婷香蕉久色在线看 | 97精品超碰一区二区三区 | 一区二区三区免费播放 | 欧美一级片在线播放 | 久久美女视频 | 亚洲国产精品va在线看黑人动漫 | 免费观看成年人视频 | 在线天堂中文www视软件 | 久久伊人操 | 免费视频久久 | 五月婷婷欧美 | 成人免费视频网站 | 欧美美女视频在线观看 | 日韩精品久久久 | 亚州日韩中文字幕 | 精品国产免费人成在线观看 | 狠狠网 | 国产视频在线观看免费 | 999色视频| 国产免费xvideos视频入口 | 91亚洲精品国产 | 国产福利91精品一区 | 国产黄色片一级 | 国产黄色免费观看 | 日本午夜免费福利视频 | 欧美精品做受xxx性少妇 | 国产区免费在线 | 热99久久精品 | 国产亚洲欧美在线视频 | 91天天视频 | 日本丶国产丶欧美色综合 | 97视频总站 | 国产精品美女视频网站 | 三级黄色在线 | 日本大尺码专区mv | 91热| 国产一区精品在线观看 | 久久精品精品电影网 | 久久久久视 | 天天色天天爱天天射综合 | 天天艹天天干天天 | 午夜在线免费视频 | 中文字幕亚洲精品在线观看 | 国产成人在线观看 | 国产剧情一区在线 | 免费一级片在线观看 | 人人爽久久久噜噜噜电影 | 国产精品成人av在线 | 久久免费毛片 | 91豆花在线 | 午夜av免费在线观看 | 免费看一级黄色 | 一级黄色片在线免费观看 | 久久免费视频2 | 狠狠色噜噜狠狠狠狠2021天天 | 超碰国产在线观看 | 亚洲高清av在线 | 久久99视频 | 国产精品永久免费 | 插插插色综合 | 99精品国产一区二区三区不卡 | 成人av电影免费在线播放 | 在线一区电影 | 国产精品 亚洲精品 | 一区二区三区精品久久久 | 91在线视频免费观看 | 欧美午夜激情网 | 黄色a三级 | 成人在线观看免费 | a级片久久久 | 五月天婷婷免费视频 | 久久99精品久久久久久秒播蜜臀 | 97精品一区二区三区 | 亚洲精品资源在线观看 | 99久久er热在这里只有精品66 | 中文国产在线观看 | 高清视频一区 | 亚洲成人av免费 | 九九免费精品视频 | 国产一级黄色免费看 | 欧美日韩国产一二三区 | 玖玖精品视频 | 久久亚洲影视 | 国产特黄色片 | 国产免费三级在线观看 | 色诱亚洲精品久久久久久 | 国产精品久久久久免费观看 | 岛国av在线 | www.国产精品 | 国产网站色 | 国产日韩欧美在线看 | 国产精品岛国久久久久久久久红粉 | 国产精品一区二区久久久 | 久久经典国产 | 色婷婷狠狠五月综合天色拍 | 天天色天天草天天射 | 国产999精品视频 | 免费a现在观看 | 亚洲综合色激情五月 | 91禁看片 | 久久综合给合久久狠狠色 | 成人免费观看网站 | 天天玩天天操天天射 | 国产黄色高清 | 韩国av在线 | 亚洲在线精品 | 亚洲黄色小说网址 | 中文字幕久久精品 | 国产小视频福利在线 | 美女网站视频免费黄 | 国模精品一区二区三区 | 一级黄色a视频 | 欧美少妇xxxxxx | 国产香蕉视频在线播放 | 久久欧美视频 | 国产不卡在线观看视频 | 日韩av电影中文字幕在线观看 | 久久不色 | 亚洲视频www | 视频一区二区视频 | 狠狠狠狠狠色综合 | 涩涩在线 | 99久久婷婷国产一区二区三区 | 亚洲黄色激情小说 | 久久字幕精品一区 | 98涩涩国产露脸精品国产网 | 久久免费精品 | 久草免费色站 | 热久久在线视频 | 久久特级毛片 | 91污视频在线| 国产精品18videosex性欧美 | www.日韩免费 | 久久9精品 | 国产成人免费网站 | 一区二区中文字幕在线 | 欧美成亚洲 | 色福利网 | 久久久久欠精品国产毛片国产毛生 | 毛片黄色一级 | 久久综合爱 | 欧美成人h版电影 | 天天操天天射天天爱 | 亚洲一级理论片 | 免费观看一级视频 | 国产香蕉视频在线播放 | 久久夜夜操 | 在线日韩av| 激情五月婷婷激情 | 久草视频在线观 | 五月婷香蕉久色在线看 | 麻豆视频免费在线观看 | 亚洲最新av在线网站 | 色综合久久悠悠 | 视频91| 中文字幕日韩国产 | 亚洲dvd | 日本aa在线 | 国产成人久久精品77777 | 免费av大片| 国产成人专区 | www.com久久| 精品一区二区在线免费观看 | 日韩欧美69 | 久久 地址 | 超碰成人免费电影 | 五月天电影免费在线观看一区 | 麻豆视频在线免费观看 | 午夜视频欧美 | 中文字幕在线影视资源 | 国产理论一区二区三区 | 久久国产精品第一页 | 国产综合福利在线 | 国产伦精品一区二区三区高清 | 一区二区三区韩国免费中文网站 | a黄在线观看 | 成人av在线直播 | 国产一区二区播放 | 碰超在线观看 | 精品国产伦一区二区三区观看方式 | 高潮久久久 | 香蕉视频免费在线播放 | 国内精品视频在线 | 日韩欧美精品一区二区 | 五月天六月丁香 | 国产一区黄色 | 中文字幕一区二区三区四区 | 国产一区国产二区在线观看 | 亚洲经典视频在线观看 | 国产精品久免费的黄网站 | 一区二区三区在线观看免费视频 | 一区二区三区在线观看 | 亚洲精品免费在线观看视频 | 中文字幕乱视频 | 成人av在线影视 | 免费看三级黄色片 | 亚洲视频免费在线观看 | 欧美在线视频一区二区 | 免费久久网 | 永久免费精品视频网站 | 91av视频播放 | 婷婷色在线资源 | 国产18精品乱码免费看 | 韩日色视频 | 欧美一区在线看 | 色七七亚洲影院 | 亚洲精品在线观看视频 | 亚洲综合色婷婷 | 最新中文字幕在线资源 | 国产精品麻豆欧美日韩ww | 久久经典视频 | 免费观看视频的网站 | 国产精品av久久久久久无 | 四虎国产精品永久在线国在线 | 亚洲五月花 | 一区二区三区中文字幕在线 | 狠狠色噜噜狠狠狠狠2021天天 | 亚洲区另类春色综合小说 | 亚洲人成人天堂h久久 | 色婷婷综合视频在线观看 | 热热热热热色 | 国产精品福利小视频 | 97在线免费| 天天射天天射天天 | 91九色蝌蚪 | 国产精品一区二区久久国产 | 亚洲va天堂va欧美ⅴa在线 | 日韩精品一区不卡 | 亚洲少妇久久 | 在线播放日韩av | 干干日日| 国产视频一区二区在线播放 | 亚洲91中文字幕无线码三区 | 日p视频在线观看 | 色视频成人在线观看免 | 国产在线久草 | 人人插人人玩 | 免费在线观看国产精品 | 亚洲在线视频播放 | 国产精品毛片久久蜜 | 亚洲一区av | adn—256中文在线观看 | av免费网站观看 | 婷婷久久综合九色综合 | 欧美激情精品久久久久久变态 | 免费精品视频在线观看 | 伊人黄 | 波多野结衣视频一区 | 国产在线一区二区三区播放 | 久久国产高清视频 | 婷婷六月天丁香 | 国产精品久久一区二区无卡 | 97成人在线观看 | 国产免费又粗又猛又爽 | 日韩三级在线观看 | 丁香婷婷激情五月 | 国产亚洲视频中文字幕视频 | 色小说在线 | 亚洲视频1区2区 | 中文字幕中文字幕在线中文字幕三区 | 17婷婷久久www| 国产精品video爽爽爽爽 | 91精品视频观看 | 国产成人精品一区二 | 国产美女精品在线 | 91精品视频网站 | 精品国产一区二区三区四 | japanesexxxhd奶水 91在线精品一区二区 | 国产群p| av 一区二区三区 | 久久草草影视免费网 | 久久亚洲欧美 | 911久久香蕉国产线看观看 | 夜夜夜影院 | v片在线播放 | 在线免费观看黄色大片 | 国产1区在线观看 | 亚洲综合在线五月天 | 国产精品国产三级国产aⅴ无密码 | 久久艹久久 | 激情av在线播放 | 四虎影视精品成人 | 欧美aaa视频 | 人人舔人人爱 | 国产一区在线观看视频 | 五月婷婷六月丁香 | 成人免费共享视频 | 在线午夜电影神马影院 | 玖草在线观看 | 丝袜美女在线观看 | 成人av在线一区二区 | jizzjizzjizz亚洲| 色网站免费在线观看 | 三级在线国产 | 国产福利av在线 | 人人澡视频| 成人永久在线 | 精品一区二区三区四区在线 | 在线观看av的网站 | 一区二区三区免费网站 | 久青草视频 | 国产精华国产精品 | 91秒拍国产福利一区 | 在线观看视频一区二区三区 | 夜夜躁狠狠躁日日躁视频黑人 | 日批视频在线播放 | 在线看毛片网站 | 精品一二三四五区 | 欧美日韩国产xxx | 国产+日韩欧美 | 国产又粗又猛又色又黄网站 | 亚在线播放中文视频 | 中文 一区二区 | 毛片一区二区 | 天天干,天天插 | 色天天| 欧美福利视频一区 | www.久久免费视频 | 成年人视频在线免费 | 久久免费成人 | 国产麻豆精品95视频 | 欧美日韩国产伦理 | 欧美黄网站 | 五月天婷亚洲天综合网鲁鲁鲁 | www色网站 | 国产精品网站一区二区三区 | 久久桃花网 | 欧美 高跟鞋交 xxxxhd | 久久精品视频观看 | 96在线| 在线中文字幕网站 | 91久久精品一区二区三区 | 久久精品毛片 | 丝袜av网站| 在线观看色视频 | 在线国产视频 | 九色视频自拍 | 国产午夜三级 | 99av在线视频 | 96av在线视频 | 玖玖玖国产精品 | 在线免费黄色av | 欧美日韩国产综合一区二区 | 69精品视频 | 国产精品久久久久国产精品日日 | 成人在线网站观看 | 日本精品视频免费 | 亚洲成av片人久久久 | 国产色婷婷精品综合在线手机播放 | 欧美久久精品 | 99色在线| 欧美aa一级片 | 久久不卡电影 | 欧美天堂视频在线 | 五月婷婷黄色网 | 超碰资源在线 | 日本久久精 | 欧美一级片免费观看 | 男女精品久久 | 99九九视频 | 免费成人在线电影 | 成人h电影 | 日本黄色黄网站 | 黄色免费网 | 99热99re6国产在线播放 | 97人人精品 | aa一级片 | 日韩免费视频线观看 | 亚洲激情网站免费观看 | 日本一区二区三区免费看 | 在线观看免费视频 | 91麻豆精品国产91久久久久久久久 | 亚洲国产影院 | 国产午夜视频在线观看 | 在线观看黄网 | 成人免费视频在线观看 | 国产福利一区二区在线 | 免费亚洲视频 | 久久综合一本 | 色吧av色av | 久久99国产精品久久99 | 国产生活一级片 | 亚洲天堂精品视频在线观看 | 久久99国产精品久久 | 99久久超碰中文字幕伊人 | 日本三级在线观看中文字 | 国产成人福利片 | 三三级黄色片之日韩 | 亚洲综合黄色 | 久久久免费高清视频 | 国产成人精品一区二区三区福利 | a级片韩国| 人人插人人艹 | 天天操网站 | 三级av网 | 狠狠黄 | 激情婷婷色 | 日本婷婷色 | 不卡视频一区二区三区 | 日韩免费三级 | 黄色成人影视 | 精油按摩av| 欧美成人手机版 | www.天天综合| 欧美a视频 | 欧美永久视频 | 亚洲精品99久久久久中文字幕 | 在线精品视频在线观看高清 | 国产高清成人 | 久久av观看| 国产又粗又猛又黄视频 | 中文在线www | 久久一区二区三区超碰国产精品 | 成人黄色小说在线观看 | 国产精品免费看久久久8精臀av | 久久久久看片 | 激情偷乱人伦小说视频在线观看 | 国产免费中文字幕 | 一本一道久久a久久精品 | 中文在线www | 久久国产精品久久久 | 欧美成年人在线视频 | 91精品国自产在线偷拍蜜桃 | 在线亚洲午夜片av大片 | 日韩视频免费在线观看 | 丁香综合网 | 国产精品久久久久久久毛片 | 欧美一级看片 | 菠萝菠萝在线精品视频 | 91日韩免费 | 国产99精品在线观看 | 久久精品婷婷 | 成人av网址大全 | 中文字幕在线观看视频免费 | 中文字幕在线资源 | 狠狠干中文字幕 | 黄色一级大片在线观看 | 天天色图 | 91九色免费视频 | 国产中文字幕视频在线 | 4p变态网欧美系列 | 亚洲高清视频在线观看 | 国产在线一区二区 | 欧美日韩国产一区 | 国外调教视频网站 | 国产精品一区二区av | 国内精品视频免费 | 国内精品视频久久 | 午夜久久久久久久久久久 | 天天曰夜夜操 | 日日爽天天 | 日本一区二区三区视频在线播放 | 国产精品成人aaaaa网站 | 最新久久免费视频 | 天天综合网在线观看 | 日韩电影一区二区三区 | 欧美视频xxx| 亚洲蜜桃在线 | 亚洲精品黄色片 | 成人免费xxxxxx视频 | 午夜精品av | 日韩,中文字幕 | 国产精品美女www爽爽爽视频 | 久久久精选 | 超碰在线9 | 亚洲成aⅴ人片久久青草影院 | 精品免费| 99久久精品午夜一区二区小说 | 国产成人综合在线观看 | 中文不卡视频在线 | 中文字幕视频三区 | 久久有精品| 久久久久美女 | 国产在线高清精品 | 国产日韩精品在线观看 | 国产精品欧美一区二区三区不卡 | 日韩电影在线一区二区 | 久久成人18免费网站 | 欧美精品久久久久久久久久 | 久久99免费| 精品国产电影一区二区 | 国产在线观看中文字幕 | 久久精品播放 | 久久免费视频精品 | 国产精品自产拍在线观看中文 | 人人玩人人添人人 | 草久在线观看 | 日韩专区中文字幕 | 国产色在线视频 | 国产精品一区二区久久精品爱涩 | 97超碰色 | 亚洲精品国偷拍自产在线观看蜜桃 | 久久国产乱 | 毛片网在线 | 久久久久免费观看 | 欧美国产高清 | 亚洲精品乱码久久久久久蜜桃91 | 五月开心色 | 亚洲精品视频在线免费播放 | 狠狠干我 | 五月婷婷综合久久 | 中文在线a∨在线 | 国产精品成人免费 | 精品国模一区二区 | 日韩视频图片 | 在线免费试看 | 日韩精品视频免费专区在线播放 | 亚洲区精品 | 免费观看一级成人毛片 | 在线欧美小视频 | 天天干 夜夜操 | 国产视频1区2区3区 久久夜视频 | 成人性生爱a∨ | 国产精品色在线 | 亚洲电影第一页av | 一区二区三区高清不卡 | 日日碰狠狠添天天爽超碰97久久 | 国产精品白丝jk白祙 | 免费亚洲黄色 | 麻豆成人小视频 | freejavvideo日本免费 | 国产1级毛片| 成人黄色电影在线播放 | 午夜av在线播放 | 久久这里有精品 | 日韩在线观看电影 | 精品国产一区二区三区男人吃奶 | 亚洲国产欧美一区二区三区丁香婷 | 久久伊人八月婷婷综合激情 | 精品视频 | 91精品视频一区二区三区 | 九九九在线 | 婷婷色狠狠 | 99免费国产 | 亚洲欧洲国产精品 | 欧美精品在线一区 | 免费成人av网站 | 国产综合在线视频 | 91激情小视频 | 精品久久久影院 | 日韩激情中文字幕 | 二区三区在线观看 | av 在线观看 | 在线色资源 | 丝袜美腿在线视频 | 色视频在线 | 五月综合激情网 | 四虎国产精品成人免费4hu | 最新国产视频 | 国产无遮挡猛进猛出免费软件 | 成人久久精品视频 | 久久久久久久久久久久久国产精品 | 国产精品网在线观看 | 伊人久久精品久久亚洲一区 | 日韩视频欧美视频 | 天天弄天天操 | 亚洲午夜大片 | 精品国产乱码久久久久久1区二区 | 久久艹人人 | 婷婷色网 | 97久久精品午夜一区二区 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 欧美日韩a视频 | 日韩专区中文字幕 | 九九免费在线观看视频 | 在线视频 91| 狠狠插天天干 | 日韩欧美在线国产 | av成人动漫在线观看 | 久久久精品国产一区二区三区 | 91成人破解版 | 成人免费影院 | 伊人电影在线观看 | 免费下载高清毛片 | 国内精品久久久久久久影视麻豆 | 天天天射| 免费在线观看av的网站 | 人人澡人人干 | 日韩国产欧美在线播放 | 久久久久亚洲精品国产 | 亚洲精品成人av在线 | 九九免费在线观看 | 五月天久久久久 | av电影免费| 狠狠色丁香婷婷综合基地 | 日狠狠| 99国产情侣在线播放 | 国产黄色免费观看 | 在线免费观看av网站 | 久久久久久久久久免费视频 | 亚洲午夜av久久乱码 | 日韩在线三区 | 久久精彩视频 | 波多野结衣日韩 | 在线播放国产一区二区三区 | 国产第页 | 91日韩精品| 国内丰满少妇猛烈精品播 | 亚洲天天 | 国产精品av久久久久久无 | 五月天六月丁香 | 婷婷丁香国产 | 色婷婷av一区 | 丁香五香天综合情 | 成人h动漫在线看 | 中文字幕在线视频国产 | 999超碰| 在线国产中文 | 国产精品2018 | 国产专区在线 | 97国产在线 | 激情电影在线观看 | 欧美日韩国产高清视频 | 天天av在线播放 | 免费看一级特黄a大片 | 日韩av一区在线观看 | 婷久久| 免费看污污视频的网站 | 欧美日韩免费网站 | 日本久久99| 黄色aaa毛片| 精品国产一区二区三区蜜臀 | www.久热 | 成人久久久久久久久久 | 色九色 | 97成人资源 | 国产成人免费在线 | 久久久久国 | 永久免费av在线播放 | 人人舔人人射 | 九九九九精品九九九九 | 久草在线观 | www.看片网站 | 日日麻批40分钟视频免费观看 | 色综合天天干 | 亚洲区色 | 自拍超碰在线 | 亚洲国产婷婷 | 亚洲www天堂com| 91高清视频在线 | 色多多在线观看 | 亚洲区二区 | 国产精品久久久久久久婷婷 | 日韩视频1区 | 日韩精品中文字幕在线 | 中文字幕丝袜一区二区 | 66av99精品福利视频在线 | 日韩资源在线观看 | 99久久精品免费看国产麻豆 | 国产午夜免费视频 | 激情久久一区二区三区 | 久久这里只有精品1 | 黄色一及电影 | 久久不射电影院 | 在线播放日韩 | www.成人久久 | 欧美视频18 | 天天爱天天舔 | 久久久久美女 | 五月花丁香婷婷 | 色www精品视频在线观看 | 国产精品一区二区久久精品爱涩 | 国产成人福利在线观看 | 亚洲午夜久久久久 | 久久免费看| 99久久99久久精品国产片果冰 | 看片网站黄色 | 天天插天天射 | 欧美日韩免费在线观看视频 | 免费在线观看av电影 | 草久视频在线 | 久久理论片 | 一级成人免费视频 | 国语自产偷拍精品视频偷 | www夜夜操| 国产一区二区手机在线观看 | 久久综合五月天 | 欧美坐爱视频 | 怡红院av久久久久久久 | 天天干天天玩天天操 | 免费日韩 精品中文字幕视频在线 | 亚洲精品日韩在线观看 | 狠狠干夜夜操 | 亚洲理论在线观看电影 | 又爽又黄在线观看 | 亚洲最大成人免费网站 | 草久久精品 | 亚洲国产日韩欧美 | 天天操天天摸天天射 | 亚洲精品乱码久久久久久按摩 | 亚洲一区视频免费观看 | 久福利 | 国产中文字幕在线视频 | 国产在线91在线电影 | 精品一区中文字幕 | av看片在线 | 亚洲欧美少妇 | av中文字幕在线电影 | 欧美先锋影音 | 天天操天天操天天操天天操天天操 | 狠狠做深爱婷婷综合一区 | 国产精品午夜久久 | 伊人天堂网 | 亚洲毛片视频 | 日本色小说视频 | 天天色宗合 | 国产韩国精品一区二区三区 | 精品久久久久久国产 | 成人久久久精品国产乱码一区二区 | 中文字幕传媒 | 亚洲黄网站 | 中国成人一区 | 99国产成+人+综合+亚洲 欧美 | 久热只有精品 | 国产精品999久久久 久产久精国产品 | 天天天射| 欧美日韩在线第一页 | 国产精品电影一区 | 国产精品九九久久99视频 | 中文字幕精品三区 | 操操操日日日干干干 | 黄色av电影免费观看 | 中国一级片在线 | 中文字幕的| 亚洲综合小说电影qvod | 久久久久久毛片精品免费不卡 | 欧美一级性生活片 | 久久国产一区二区 | 欧美黑人性爽 | 在线观看的av | 九九在线免费视频 | 人人爱在线视频 | 天天激情综合 | 亚洲成人精品国产 | 日韩精品不卡在线 | 99精品视频免费全部在线 | 国产精品免费久久久久久久久久中文 | 中文字幕 国产视频 | 在线视频 国产 日韩 | 欧美一区二区在线 | 91少妇精拍在线播放 | 丝袜美腿av| 91九色网址 | 久久五月婷婷丁香 |