999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Spring Cloud的微服務(wù)架構(gòu)的應(yīng)用與實現(xiàn)

2021-04-03 23:46:40葛萌李闖男歐陽宏基
現(xiàn)代信息科技 2021年19期

葛萌 李闖男 歐陽宏基

摘? 要:傳統(tǒng)單體架構(gòu)存在著開發(fā)技術(shù)單一、系統(tǒng)耦合度高、錯誤隔離性差、可收縮性差等缺點。微服務(wù)架構(gòu)以分而治之、可收縮性強(qiáng)、模塊獨立開發(fā)、迭代周期短等優(yōu)點逐漸成為新一代軟件開發(fā)架構(gòu)用來彌補(bǔ)單體架構(gòu)的缺陷。介紹了微服務(wù)架構(gòu)的基本概念,以Spring Cloud微服務(wù)框架為基礎(chǔ),利用Java語言、中間件技術(shù)和MySQL數(shù)據(jù)庫設(shè)計并實現(xiàn)了一個教師教學(xué)評價系統(tǒng)。論述了微服務(wù)架構(gòu)實現(xiàn)的關(guān)鍵步驟和系統(tǒng)核心模塊的實現(xiàn)過程,為微服務(wù)架構(gòu)在應(yīng)用中的實現(xiàn)提供了一定的借鑒。

關(guān)鍵詞:微服務(wù)架構(gòu);Spring Cloud;中間件技術(shù);教學(xué)評價系統(tǒng)

中圖分類號:TP311? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼:A文章編號:2096-4706(2021)19-0023-04

Application and Implementation of Microservice Architecture Based on Spring Cloud

GE Meng, LI Chuangnan, OUYANG Hongji

(School of Computer Science, Xianyang Normal University, Xianyang 712000, China)

Abstract: The traditional monomer architecture has some disadvantages, such as single development technology, high system coupling, poor error isolation, poor scalability and so on. Microservice architecture has gradually become a new generation of software development architecture to make up for the defects of monomer architecture with the advantages of divide and rule, strong contractibility, independent module development and short iteration cycle. This paper introduces the basic concept of microservice architecture, designs and implements a teacher teaching evaluation system based on Spring Cloud microservice framework, Java language, middleware technology and MySQL database. It discusses the key steps of implementation of microservice architecture and the implementation process of system core modules, which provides a certain reference for the implementation of microservice architecture in application.

Keywords: microservice architecture; Spring Cloud; middleware technology; teaching evaluation system

0? 引? 言

傳統(tǒng)的單體應(yīng)用系統(tǒng)架構(gòu)會隨著軟件規(guī)模和業(yè)務(wù)的擴(kuò)大變得復(fù)雜且不易于擴(kuò)展和維護(hù),微服務(wù)架構(gòu)的出現(xiàn)很好地解決了這個問題[1]。微服務(wù)架構(gòu)是一種架構(gòu)模式,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),服務(wù)之間相互協(xié)調(diào)、互相配合,為用戶提供最終價值。每個服務(wù)運行在其獨立的進(jìn)程中,服務(wù)和服務(wù)之間采用輕量級的通信機(jī)制相互溝通。每個服務(wù)都圍繞著具體的業(yè)務(wù)進(jìn)行構(gòu)建,并且能夠被獨立的部署到生產(chǎn)環(huán)境、類生產(chǎn)環(huán)境等[2]。

本文以Spring Cloud為微服務(wù)架構(gòu)的實現(xiàn)框架[3],以教師教學(xué)評價為業(yè)務(wù)背景,綜合應(yīng)用Maven管理工具、Mycat中間件、SSM框架[4]、Docker容器等技術(shù),實現(xiàn)了微服務(wù)開發(fā)的基本流程,詳細(xì)描述了核心模塊的實現(xiàn)過程,Spring Clound框架的應(yīng)用與實現(xiàn)提供了一定的參考。

1? 微服務(wù)架構(gòu)相關(guān)技術(shù)概述

1.1? Spring Boot框架

Spring Boot是一個Java EE一站式開發(fā)框架,可以簡單、快速、零配置的創(chuàng)建基于Spring的項目[5]。Spring Boot提供了大量配置包,能夠自動識別查找依賴管理中提供的jar包并進(jìn)行配置。同時內(nèi)置了Servlet容器,服務(wù)器上無須安裝額外的軟件,只要具備Java Runtime環(huán)境即可運行。還內(nèi)置了健康檢查、度量指標(biāo),可方便接入既有運維監(jiān)控系統(tǒng),也可使用自身提供的Spring Boot Admin服務(wù)監(jiān)控。

1.2? Spring Cloud框架

Spring Cloud是一款基于Java語言、采用Spring Boot開發(fā)的微服務(wù)框架。它提供了服務(wù)治理、分布式配置、分布式任務(wù)、服務(wù)跟蹤、消息總線、服務(wù)負(fù)載均衡、服務(wù)熔斷降級等一系列問題的解決方案[6]。其中包括的核心組件有:(1)Spring Cloud Consul Config是一個分布式配置中心,為注冊在同一Consul集群下的微服務(wù)下發(fā)配置。(2)Spring Cloud Consul Discovery將微服務(wù)注冊到Consul中。(3)Spring Cloud OpenFeign聲明式RestClient,通過接口方式調(diào)用其他微服務(wù),封裝了RestTemplate和負(fù)載均衡。(4)Spring Cloud LoadBalancer為微服務(wù)調(diào)用提供負(fù)載均衡。(5)Spring Cloud Hystrix斷路器避免將單個服務(wù)的故障擴(kuò)散到整個服務(wù)集群中。(6)Spring Data用于簡化Spring應(yīng)用對數(shù)據(jù)的訪問,包括關(guān)系型數(shù)據(jù)庫、非關(guān)系數(shù)據(jù)庫、Map-Reduce 框架和云數(shù)據(jù)服務(wù)等。

1.3? Mycat數(shù)據(jù)庫中間件

Mycat是一個開源的、面對大中型應(yīng)用的數(shù)據(jù)庫中間件[7]。使用Mycat的分庫分表技術(shù),可將大量記錄分散到不同的MySQL數(shù)據(jù)庫儲存。Mycat負(fù)責(zé)維護(hù)具體的表信息。還可以通過讀寫分離技術(shù)來分散讀寫請求,在高并發(fā)場景下降低單一MySQL服務(wù)器的訪問壓力。

1.4? OpenResty網(wǎng)關(guān)負(fù)載均衡

OpenResty是一款基于Nginx與Lua的高性能Web平臺,其內(nèi)部集成了大量優(yōu)秀的Lua庫、第三方模塊以及其依賴項,用于方便地搭建能夠處理高并發(fā)、高擴(kuò)展性的動態(tài)Web應(yīng)用、Web服務(wù)和動態(tài)網(wǎng)關(guān)[8]。當(dāng)擴(kuò)展微服務(wù)時,Nginx的配置文件并不能同步的發(fā)生變化[9],需要借助OpenResty中不同流程的指令加上Lua語言來實現(xiàn)動態(tài)配置,通過非阻塞的API來完成無感知的負(fù)載配置變更。

2? ?教學(xué)評價系統(tǒng)架構(gòu)與服務(wù)

2.1? 系統(tǒng)架構(gòu)

教學(xué)評價系統(tǒng)的架構(gòu)如圖1所示,其中包括15個業(yè)務(wù)微服務(wù)、網(wǎng)關(guān)微服務(wù)、網(wǎng)關(guān)負(fù)載均衡、服務(wù)監(jiān)控、服務(wù)治理中心、Mycat數(shù)據(jù)庫中間件。其中15個業(yè)務(wù)微服務(wù)、服務(wù)監(jiān)控和網(wǎng)關(guān)微服務(wù)都需要注冊到Consul中。Consul和服務(wù)監(jiān)控都會對微服務(wù)進(jìn)行健康檢查,將不可用的服務(wù)實例逐出實例列表。服務(wù)監(jiān)控檢查到服務(wù)狀態(tài)發(fā)生變化會在監(jiān)控頁面發(fā)出通知、并向預(yù)設(shè)的通知方式中發(fā)送模板信息。

2.2? 服務(wù)劃分

整個教師教學(xué)評價系統(tǒng)按功能模塊進(jìn)行服務(wù)劃分,各服務(wù)的名稱和含義如表1所示。

3? 微服務(wù)在教學(xué)評價系統(tǒng)中的實現(xiàn)

3.1? Maven工程

系統(tǒng)所有模塊均由Maven進(jìn)行管理。創(chuàng)建一個Maven工程打包類型設(shè)為POM,作為所有模塊的父工程。該工程用來約束全部微服務(wù)的Spring Boot版本、Spring Cloud版本。首先在該工程中引入Spring Boot的父工程作為Jar包依賴版本約束,然后再引入Spring Cloud依賴管理,最后再引入各個服務(wù)所需的依賴。

3.2? 管理服務(wù)

管理服務(wù)是邏輯上劃分的一組服務(wù),主要負(fù)責(zé)維護(hù)整個系統(tǒng)的基礎(chǔ)數(shù)據(jù)。該服務(wù)連接Mycat數(shù)據(jù)庫中間件,為管理服務(wù)、身份認(rèn)證服務(wù)、評價服務(wù)提供服務(wù)。以上服務(wù)在對數(shù)據(jù)修改后傳遞到這個服務(wù)保存數(shù)據(jù)。教師服務(wù)、數(shù)據(jù)字典服務(wù)、評價規(guī)則服務(wù)、指標(biāo)服務(wù)、學(xué)生服務(wù)、課程服務(wù)、學(xué)年服務(wù)。這些服務(wù)的工程結(jié)構(gòu)是相似的,采用經(jīng)典的三層架構(gòu)來實現(xiàn):利用Spring MVC實現(xiàn)控制層,利用Spring實現(xiàn)業(yè)務(wù)層,利用MyBatis實現(xiàn)持久層,利用Spring實現(xiàn)3層的整合。

3.3? 服務(wù)治理

Consul提供服務(wù)發(fā)現(xiàn)與配置,每個服務(wù)里都配置了Consul的地址。微服務(wù)啟動后會自動向Consul注冊,提供自己的服務(wù)名、IP地址、端口號、上下文路徑、健康檢查地址等信息。啟動Consul后,可通過8500端口查看UI界面,服務(wù)健康監(jiān)控如圖2所示。

3.4? API網(wǎng)關(guān)

Spring Cloud Gateway是高性能網(wǎng)關(guān),它提供了微服務(wù)請求統(tǒng)一入口。該微服務(wù)可以將指定URL或者匹配到URL的請求轉(zhuǎn)發(fā)到指定的微服務(wù)中去,同時當(dāng)轉(zhuǎn)發(fā)的微服務(wù)有多個實例時,自動對這些實例使用負(fù)載均衡算法轉(zhuǎn)發(fā)請求。指定的URL規(guī)則配置在bootstrap.yml文件中,如圖3所示。Routs表示路由的配置列表開始,id代表這條路由的名字,uri屬性配置轉(zhuǎn)發(fā)地址,可以使用服務(wù)名代替,lb://代表自動使用負(fù)載均衡。predicates代表轉(zhuǎn)發(fā)規(guī)則,配置為指定的路徑。filters屬性代表過濾器,此處配置為熔斷。當(dāng)轉(zhuǎn)發(fā)的微服務(wù)不可用時,轉(zhuǎn)發(fā)到熔斷地址fallback,相關(guān)代碼如圖3所示。

3.5? OpenResty網(wǎng)關(guān)負(fù)載均衡

通過OpenResty內(nèi)置的lua語言、lua-resty-redis、lua-cJSON和lua-resty-balancer模塊,結(jié)合Redis來動態(tài)配置網(wǎng)關(guān)。首先在init_by_lua_file中指定運行腳本init.lua,在init.lua中初始化cJSON、balancer模塊作為全局變量。同時初始全局變量請求計數(shù)器vtimes為-1,當(dāng)前服務(wù)列表下標(biāo)currentserver為1。默認(rèn)的網(wǎng)關(guān)地址serverlist初始為config.lua中配置的默認(rèn)網(wǎng)關(guān)地址。在access_by_lua_file中指定運行腳本access.lua,在access.lua中判斷請求計數(shù)器vtimes是否小于0,如果為真就重新賦值請求計數(shù)器并從Redis中獲取數(shù)據(jù)。成功獲得到數(shù)據(jù)就更新當(dāng)前服務(wù)器列表。vtimes初始化為-1就要求在第一次請求時刷新配置。在balancer_by_lua_file中指定運行腳本balancer.lua,在balancer.lua首先判斷當(dāng)前serverList的大小,當(dāng)列表大小等于1時表示只有一個網(wǎng)關(guān),這時候就無須再進(jìn)行負(fù)載均衡直接轉(zhuǎn)發(fā)便可以。大于1時,采用輪詢算法將每個請求分別轉(zhuǎn)發(fā)到不同的網(wǎng)關(guān)上。

3.6? 服務(wù)調(diào)用

本系統(tǒng)微服務(wù)之間使用HTTP+JSON來實現(xiàn)通信。HTTP是通信的協(xié)議,JSON是通信時的數(shù)據(jù)格式[10],使用OpenFeign來隱藏遠(yuǎn)程調(diào)用的實現(xiàn)細(xì)節(jié)。首先在需要調(diào)用微服務(wù)的pom.xml中增加OpenFeign依賴,然后創(chuàng)建一個接口,添加@FeignClient注解。其中value的值是要調(diào)用的服務(wù)名,path是調(diào)用服務(wù)的上下文路徑,fallback是調(diào)用失敗時調(diào)用該接口的實現(xiàn)類。在調(diào)用時直接將注入到調(diào)用對象中,調(diào)用findAllDepartments()方法即可。

3.7? 服務(wù)熔斷

本系統(tǒng)的服務(wù)熔斷主要應(yīng)用在網(wǎng)關(guān)轉(zhuǎn)發(fā)和微服務(wù)間調(diào)用上,在這兩點上添加熔斷可以確保系統(tǒng)的穩(wěn)定運行。網(wǎng)關(guān)的熔斷配置在過濾器上的fallbackuri,當(dāng)網(wǎng)關(guān)轉(zhuǎn)發(fā)時發(fā)現(xiàn)此服務(wù)無實例可用或者應(yīng)答超時,將直接轉(zhuǎn)發(fā)到fallbackuri配置的地址上。因為微服務(wù)間調(diào)用使用了OpenFeign,其內(nèi)部已經(jīng)封裝熔斷。在Feign接口上配置fallback選項為接口指定一個實現(xiàn)類,在調(diào)用失敗后會使用這個類的方法作為此接口的默認(rèn)實現(xiàn)方法。

3.8? 公共模塊

公共模塊封裝了15個業(yè)務(wù)微服務(wù)的實體類、響應(yīng)請求的包裝類、身份認(rèn)證工具類,每個微服務(wù)都可以從該模塊中調(diào)用自己需要的類。不同的微服務(wù)之間會通過調(diào)用其他的微服務(wù)來獲取對象。定義CommonResponse類負(fù)責(zé)系統(tǒng)多數(shù)對外響應(yīng),需要考慮普適性、可重用性。該類提供了5種響應(yīng)狀態(tài):代碼code、操作結(jié)果消息message、實例數(shù)據(jù)對象data、實例數(shù)據(jù)對象集合table和請求號requestId。包含的方法包括:ok()/ok(String message)、error()/error(String message)、auth(String message)、bad()、busy()、data(Model data)和table(List table)。

3.9? 身份認(rèn)證服務(wù)

認(rèn)證服務(wù)涉及賬戶的登錄、注銷、維護(hù)登錄用戶信息、每個角色能訪問的指標(biāo)、修改密碼、系統(tǒng)訪問憑證下發(fā)等功能。所有的用戶在訪問任何服務(wù)時都必須在請求中攜帶身份認(rèn)證服務(wù)下發(fā)的訪問憑證。用戶的登錄、注銷、獲取的用戶信息等都需要將請求路由給該服務(wù)完成。由于HTTP是無狀態(tài)協(xié)議,本系統(tǒng)采用前后端分離技術(shù)開發(fā),不能像傳統(tǒng)的應(yīng)用一樣在瀏覽器端設(shè)置一個Cookie來維護(hù)會話信息。通過使用訪問憑證的方式,后端不需要維護(hù)會話只需要憑證,前端也只需要保存憑證。前端將訪問憑證保存在瀏覽器里,在請求后端時帶了此憑證完成身份校驗。所有的服務(wù)在操作時都必定會先驗證用戶賬戶的合法性,都會請求身份認(rèn)證服務(wù)檢查憑證。每次請求都驗證會大大降低性能,在請求量大時會可能直接導(dǎo)致身份認(rèn)證服務(wù)宕機(jī)。因為外部所有的請求都會通過網(wǎng)關(guān),所以在Spring Cloud Gateway上做請求的憑證檢查。統(tǒng)一放行無憑證但正在請求身份認(rèn)證的請求,攔截到其他服務(wù)的請求并檢查憑證。憑證有效放行請求,憑證無效不放行并返回憑證無效信息。

身份認(rèn)證服務(wù)依賴于管理服務(wù)中的學(xué)生服務(wù)和教師服務(wù),身份認(rèn)證服務(wù)只維護(hù)被發(fā)送過訪問憑證的用戶信息,并不維護(hù)數(shù)據(jù)庫中的用戶信息。身份認(rèn)證服務(wù)將接收的賬戶密碼根據(jù)請求的接口轉(zhuǎn)發(fā)到學(xué)生服務(wù)或者是教師服務(wù)。學(xué)生服務(wù)或教師服務(wù)在收到賬戶和密碼后會在數(shù)據(jù)庫中查詢比對用戶信息。查詢成功后返回給身份認(rèn)證服務(wù)用戶信息,認(rèn)證服務(wù)將根據(jù)用戶信息簽發(fā)憑證,同時將用戶信息緩存到Redis中,設(shè)置過期時間為1小時。用戶注銷時刪除Redis中緩存的用戶信息。

系統(tǒng)的憑證基于JSON Web Tokens(JWT)[11]設(shè)計,JWT非常適合無狀態(tài)的HTTP協(xié)議。當(dāng)用戶登錄成功后將獲得的用戶信息中的學(xué)工號加入JWT的sub字段、角色I(xiàn)D加入JWT的role字端、過期時間為當(dāng)前系統(tǒng)時間加一個小時,返回給用戶。用戶的下次請求會在HTTP頭部的Authorization字段添加下發(fā)的憑證,網(wǎng)關(guān)會負(fù)責(zé)檢查憑證。

3.10? 評價服務(wù)

評價服務(wù)分為學(xué)生評價服務(wù)和教學(xué)督導(dǎo)評價服務(wù),包含的功能如圖4所示。之所以拆分為兩個,是因為在實際業(yè)務(wù)中學(xué)生的人數(shù)遠(yuǎn)遠(yuǎn)大于教學(xué)督導(dǎo)的人數(shù)。那么學(xué)生評價服務(wù)接受的請求量也遠(yuǎn)遠(yuǎn)大于教學(xué)督導(dǎo)評價服務(wù)所接受的請求量,將兩個服務(wù)分離能更有效地在請求量增大時進(jìn)行動態(tài)擴(kuò)容處理。

4? 結(jié)? 論

Spring Cloud框架提供了微服務(wù)架構(gòu)應(yīng)用的“一站式”解決方案,簡化了微服務(wù)架構(gòu)在應(yīng)用系統(tǒng)的使用過程。首先介紹了Spring Cloud框架及其包括的核心組件,然后結(jié)合教學(xué)評價系統(tǒng)闡述了Spring Cloud框架的具體使用過程,重點描述了服務(wù)治理、API網(wǎng)關(guān)、負(fù)載均衡、服務(wù)調(diào)用、服務(wù)熔斷、業(yè)務(wù)服務(wù)等模塊的實現(xiàn)過程。為Spring Cloud框架的使用提供了一定的借鑒。

參考文獻(xiàn):

[1] 倪小璐,王旭英,邊俊凱,等.微服務(wù)軟件架構(gòu)設(shè)計模式及其應(yīng)用 [J].杭州師范大學(xué)學(xué)報(自然科學(xué)版),2021,20(4):442-448.

[2] 馮志勇,徐硯偉,薛霄,等.微服務(wù)技術(shù)發(fā)展的現(xiàn)狀與展望 [J].計算機(jī)研究與發(fā)展,2020,57(5):1103-1122.

[3] SUN X,CHEN H N,WANG Q Y,et al. Research and Design of Online Training Platform based on Spring Cloud Distributed System Structure and Computer Big Data [J/OL].Journal of Physics:Conference Series,2021,1952:1-7.[2021-09-03].https://iopscience.iop.org/article/10.1088/1742-6596/1952/4/042087.

[4] 王偉,常慶麗,吳朝霞.基于Springboot+Vue的精準(zhǔn)幫扶系統(tǒng)研究與實現(xiàn) [J].河南科技,2021,40(27):12-14.

[5] 朱瑞,曾勁濤,龍滿生.基于SSM框架的創(chuàng)業(yè)資訊發(fā)布系統(tǒng)的設(shè)計與實現(xiàn) [J].井岡山大學(xué)學(xué)報(自然科學(xué)版),2021,42(1):54-60.

[6] 歐陽宏基,楊鐸.基于微服務(wù)架構(gòu)的學(xué)位論文寫作輔助平臺 [J].計算機(jī)與現(xiàn)代化,2019(10):34-39.

[7] 張瑩,鄭學(xué)智.基于Mycat的大數(shù)據(jù)存儲研究 [J].電子設(shè)計工程,2020,28(5):1-6.

[8] 溫馨,樊婧雯,王富強(qiáng).基于OpenResty平臺的API網(wǎng)關(guān)系統(tǒng)的設(shè)計與實現(xiàn) [J].信息化研究,2020,46(3):62-68.

[9] 許諾.大數(shù)據(jù)下基于Nginx負(fù)載均衡的教務(wù)系統(tǒng)優(yōu)化設(shè)計 [J].信息技術(shù)與信息化,2021(6):191-193.

[10] 劉家雨,王永生,劉愛東.基于JSON的防空武器系統(tǒng)應(yīng)用適配器 [J].兵工自動化,2021,40(7):1-4.

[11] SPIGA D,PRA S D,SALOMONI D,et al. Dynamic integration of distributed,Cloud-based HPC and HTC resources using JSON Web Tokens and the INDIGO IAM Service [J].EPJ Web of Conferences,2020,245:1-9.[2021-09-03].https://doi.org/10.1051/epjconf/202024507020.

作者簡介:葛萌(1980—),女,漢族,陜西咸陽人,講師,碩士,研究方向:軟件工程、企業(yè)級JavaEE應(yīng)用開發(fā);李闖男(1999—),男,漢族,陜西咸陽人,本科在讀,研究方向:軟件工程;歐陽宏基(1982—),男,漢族,陜西寶雞人,副教授,碩士,研究方向:軟件工程、軟件設(shè)計與體系結(jié)構(gòu)。

主站蜘蛛池模板: 久久精品国产国语对白| 国产精品亚欧美一区二区| 中国国产一级毛片| 国产丝袜第一页| 亚洲天堂网站在线| 天天做天天爱天天爽综合区| 国产jizzjizz视频| 亚洲人成电影在线播放| 97精品伊人久久大香线蕉| 亚洲中文字幕97久久精品少妇| 韩日午夜在线资源一区二区| 中文字幕永久在线观看| 国产区免费| 亚洲精品你懂的| 亚洲无码高清免费视频亚洲| 蜜芽国产尤物av尤物在线看| 欧美综合在线观看| 国产一二三区在线| 国产一区二区福利| 午夜天堂视频| 亚洲第一极品精品无码| 国产欧美日韩一区二区视频在线| 美女国内精品自产拍在线播放 | 欧美午夜视频| 熟妇无码人妻| 色哟哟国产成人精品| jizz在线免费播放| 天天综合网亚洲网站| 欧美日韩国产成人高清视频| 亚洲码一区二区三区| 亚洲日韩精品欧美中文字幕 | 国内精品视频| 无码啪啪精品天堂浪潮av| 九九视频免费看| 成人国产免费| 精品无码日韩国产不卡av| 亚洲自拍另类| vvvv98国产成人综合青青| 亚洲免费毛片| 中文无码伦av中文字幕| 91精品伊人久久大香线蕉| 丁香婷婷激情网| 99尹人香蕉国产免费天天拍| 免费xxxxx在线观看网站| 国产成人久久综合777777麻豆| 无码'专区第一页| 免费女人18毛片a级毛片视频| 少妇精品网站| 人妻无码中文字幕第一区| 成人免费一级片| 好吊色妇女免费视频免费| 麻豆精品在线| 亚洲精品无码AV电影在线播放| 91麻豆国产视频| 国产真实乱了在线播放| 91精品日韩人妻无码久久| 国产性生大片免费观看性欧美| 色呦呦手机在线精品| 中文字幕亚洲综久久2021| 亚洲区欧美区| www.日韩三级| 免费三A级毛片视频| 天堂成人在线| 成年人视频一区二区| 99热这里只有精品在线观看| 在线观看国产网址你懂的| 91小视频在线观看| 男女性午夜福利网站| 国产精品网址你懂的| 久久久久88色偷偷| 亚洲天堂网在线观看视频| 午夜丁香婷婷| 国产精品欧美日本韩免费一区二区三区不卡| 国产精品私拍在线爆乳| 中文字幕久久波多野结衣| 欧美激情一区二区三区成人| 在线无码九区| 中文字幕色在线| 国产区91| jizz国产视频| 欧美精品v日韩精品v国产精品| 特级毛片8级毛片免费观看|