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

當當 Elastic-job 開源項目的十項特性

云計算
Elastic-job原本是當當Java應用框架ddframe的一部分,本名dd-job。ddframe包括編碼規范,開發框架,技術規范,監控以及分布式組件。ddframe規劃分為4個演進階段,目前處于第2階段。3、4階段涉及的技術組件不代表當當沒有使用,只是ddframe還未統一規劃。

張亮:當當網架構師、當當技術委員會成員、消息中間件組負責人。對架構設計、分布式、優雅代碼等領域興趣濃厚。目前主導當當應用框架ddframe研發,并負責推廣及撰寫技術白皮書。

一、為什么需要作業(定時任務)?

作業即定時任務。一般來說,系統可使用消息傳遞代替部分使用作業的場景。兩者確有相似之處。可互相替換的場景,如隊列表。將待處理的數據放入隊列表,然后使用頻率極短的定時任務拉取隊列表的數據并處理。這種情況使用消息中間件的推送模式可更好的處理實時性數據。而且基于數據庫的消息存儲吞吐量遠遠小于基于文件的順序追加消息存儲。

 

但在某些場景下則不能互換:

  1. 時間驅動 OR 事件驅動:內部系統一般可以通過事件來驅動,但涉及到外部系統,則只能使用時間驅動。如:抓取外部系統價格。每小時抓取,由于是外部系統,不能像內部系統一樣發送事件觸發事件。
  2. 批量處理 OR 逐條處理:批量處理堆積的數據更加高效,在不需要實時性的情況下比消息中間件更有優勢。而且有的業務邏輯只能批量處理,如:電商公司與快遞公司結算,一個月結算一次,并且根據送貨的數量有提成。比如,當月送貨超過1000則額外給快遞公司多1%優惠。
  3. 非實時性 OR 實時性:雖然消息中間件可以做到實時處理數據,但有的情況并不需要如的實時。如:VIP用戶降級,如果超過1年無購買行為,則自動降級。這類需求沒有強烈的時間要求,不需要按照時間精確的降級VIP用戶。
  4. 系統內部 OR 系統解耦。作業一般封裝在系統內部,而消息中間件可用于系統間解耦。

二、當當之前在使用什么作業系統?

當當之前使用的作業系統比較散亂,各自為戰,大致分為以下4種:

  1. Quartz:Java事實上的定時任務標準。但Quartz關注點在于定時任務而非數據,并無一套根據數據處理而定制化的流程。雖然Quartz可以基于數據庫實現作業的高可用,但缺少分布式并行執行作業的功能。
  2. TBSchedule:阿里早期開源的分布式任務調度系統。代碼略陳舊,使用timer而非線程池執行任務調度。眾所周知,timer在處理異常狀況時是有缺陷的。而且TBSchedule作業類型較為單一,只能是獲取/處理數據一種模式。還有就是文檔缺失比較嚴重。
  3. Crontab:Linux系統級的定時任務執行器。缺乏分布式和集中管理功能。
  4. Perl:遺留系統使用,目前已不符合公司的Java化戰略。

三、elastic-job的來歷

elastic-job原本是當當Java應用框架ddframe的一部分,本名dd-job。

ddframe包括編碼規范,開發框架,技術規范,監控以及分布式組件。ddframe規劃分為4個演進階段,目前處于第2階段。3、4階段涉及的技術組件不代表當當沒有使用,只是ddframe還未統一規劃。

 

ddframe由各種模塊組成,均已dd-開頭,如dd-container,dd-soa,dd-rdb,dd-job等。當當希望將ddframe的各個模塊與公司環境解耦并開源以反饋社區。之前開源的Dubbo擴展版本DubboX即是dd-soa的核心模塊。而本次介紹的elastic-job則是dd-job的開源部分,其中監控(但開源了監控方法)和ddframe核心接入等部分并未開源。

四、elastic-job包含的功能

  • 分布式:最重要的功能,如果任務不能在分布式的環境下執行,那么直接使用Quartz就可以了。
  • 任務分片:是elastic-job中最重要也是最難理解的概念。任務的分布式執行,需要將一個任務拆分為n個獨立的任務項,然后由分布式的服務器分別執行某一個或幾個分片項。
  • 彈性擴容縮容:將任務拆分為n個任務項后,各個服務器分別執行各自分配到的任務項。一旦有新的服務器加入集群,或現有服務器下線,elastic-job將在保留本次任務執行不變的情況下,下次任務開始前觸發任務重分片。舉例說明:有3臺服務器,分為10個片。則分片項分配如下:{server1: [0,1,2], server2: [3,4,5], server3: [6,7,8,9]}。如果一臺服務器崩潰,則分片項分配如下:{server1: [0,1,2,3,4], server2: [5,6,7,8,9]}。如果新增一臺服務器,則分片項分配如下:{server1: [0,1], server2: [2,3] , server3: [4,5,6] , server4: [7,8,9]}。
  • 穩定性:在服務器無波動的情況下,并不會重新分片;即使服務器有波動,下次分片的結果也會根據服務器IP和作業名稱哈希值算出穩定的分片順序,盡量不做大的變動。
  • 高性能:elastic-job會將作業運行狀態的必要信息更新到注冊中心,但為了考慮性能問題,可以犧牲一些功能,而換取性能的提升。
  • 冪等性:elastic-job可犧牲部分性能用以保證同一分片項不會同時在兩個服務器上運行。
  • 失效轉移:彈性擴容縮容在下次作業運行前重分片,但本次作業執行的過程中,下線的服務器所分配的作業將不會重新被分配。失效轉移功能可以在本次作業運行中用空閑服務器抓取孤兒作業分片執行。同樣失效轉移功能也會犧牲部分性能。
  • 狀態監控:監控作業的運行狀態,可以監控數據處理功能和失敗次數,作業運行時間等。是冪等性,失效轉移必須的功能。
  • 多作業模式:作業可分為簡單和數據流處理兩種模式,數據流又分為高吞吐處理模式和順序性處理模式,其中高吞吐處理模式可以開啟足夠多的線程快速的處理數據,而順序性處理模式將每個分片項分配到一個獨立線程,用于保證同一分片的順序性,這點類似于kafka的分區順序性。
  • 其他一些功能,如錯過任務重執行,單機并行處理,容錯處理,Spring命名空間支持,運維平臺等。

五、elastic-job的部署和使用

將使用elastic-job框架的jar/war連接同一個基于Zookeeper的注冊中心即可。

 

作業框架執行數據并不限于數據庫,且作業框架本身是不對數據進行關聯的。作業可以用于處理數據,文件,API等任何操作。

使用elastic-job所需要關注的僅僅是將業務處理邏輯和框架所分配的分片項匹配并處理,如:如果分片項是1,則獲取id以1結尾的數據處理。所以如果是處理數據的話,***實踐是將作業分片項規則和數據中間層規則對應。

通過上面的部署圖可以看出來,作業分片只是個邏輯概念,分片和實際數據其實框架是不做任何匹配關系的。而根據分片項和實際業務如何關聯,是成功使用elastic-job的關鍵所在。為了不讓代碼寫起來很無聊,看起來像if(shardingItem == 1) {do xxx} else if (shardingItem == 2) {do xxx},elastic-job提供了自定義參數,可將分片項序號和實際業務做映射。比如設置為1=北京,2=上海。那么代碼中可以通過北京或是上海的枚舉,從業務中的北京倉庫或上海倉庫取數據。elastic-job更多的還是關注作業調度和分布式分配,處理數據還是交由數據中間層更好些。

誠如剛才所說,***實踐是將作業分片項規則和數據中間層規則對應,省去作業分片時,再次適配數據中間層的分片邏輯。

#p#

六、對開源產品的開發理念

為了讓感興趣的人放心使用,我想分享一下我們對開源產品的開發理念。

用心寫代碼。代碼是項目的唯一核心和產出,任何一行的代碼都需要用心思考優雅性,可讀性,合理性。優雅性看似簡單的幾個字,其實實現的難度非常大。每個人心中都有自己對代碼的理解,而elastic-job也好,ddframe也好,都不是出自一人之手。對代碼優雅性的權衡,是比較難把控的。后面幾項,可以理解為對***項的補充,或具體的實現思路。

代碼整潔干凈到***。簡單點說就是重度代碼潔癖患者。只有代碼漂亮整潔,其他開源愛好者才愿意閱讀代碼,進而找出項目中的bug和貢獻高質量代碼。

極簡代碼, 高度復用,無重復代碼和配置。Java生態圈的特點是高質量的開源產品極多。我們盡量考慮復用輪子,比如項目中大量用到lombok簡化代碼;但也不會無原則的使用開源產品,我們傾向于把開源產品分為積木類和大廈類。項目中一般只考慮使用積木類搭建屬于我們自己的大廈,而不會直接用其他已成型的大廈。java系的公司有兩種不同的聲音,擁抱開源,或完全不使用開源。我們的看法是既然選擇使用java,就應該遵循java的理念,去擁抱java這些年累積的成熟東西。java相比其他新興語言,在語法上可能沒什么優勢,但在廣度上還是少有其他生態圈可比擬。

單一需求可不考慮擴展性;兩個類似需求時再提煉。為了不盲目追求所謂的***,我們用這條規則,盡量提升交付的速度。

模塊抽象劃分合理。這點也很難用標準衡量。以elastic-job舉例:elastic-job核心代碼分為4塊,core,spring,console和example;分別用于放置核心,spring支持,控制臺和代碼示例。在項目級別上做拆分。而core中將包分為api,exception,plugin和internal。用于放置對外發布的接口、異常,向最終用戶提供的可擴展插件以及封裝好的內部實現。內部實現的任何改動,都不會影響對外接口的變動,用戶自定義的插件,也不會影響內部代碼的穩定性。

如無特殊理由, 測試需全覆蓋。elastic-job核心模塊的測試覆蓋率是95%以上。雖然單元測試覆蓋率在分布式的復雜環境中并無太大說服力,但至少證明項目中很少出現低級邏輯錯誤。

對質量的定義。代碼可讀性 > 代碼可測性 > 模塊解耦設計 > 功能正確性 > 性能 > 功能可擴展性。只有代碼可讀,可測試,可100%掌控,項目才可持續發展。功能有缺陷可以修復,性能不夠可以優化,而代碼不清晰則項目會漸漸變為黑盒。所以對于框架類產品,我們認為質量 > 時間 > 成本。

文檔清晰

七、未來展望

監控體系有待提高,目前只能通過注冊中心做簡單的存活和數據積壓監控。未來需要做的監控部分有:

1. 增加可監控維度,如作業運行時間等。

2. 基于JMX的內部狀態監控。

3. 基于歷史的全量數據監控,將所有監控數據通過flume等形式發到外部監控中心,提供實時分析功能。

增加任務工作流,如任務依賴,初始化任務,清理任務等。

失效轉移功能的實時性提升。

更多作業類型支持,如文件,MQ等類型作業的支持。

更多分片策略支持。

項目的開源地址:https://github.com/dangdangdotcom/elastic-job 希望大家多關注,共同貢獻代碼。

Q&A

Q1:請問失效轉移中如何判斷失效?對任務本身實現有什么限制?

失效轉移目前通過Zookeeper監聽分片項臨時節點判斷。elastic-job會經過注冊中心會話過期時間才能感知任務掛掉。失效轉移有兩種形式:1、任務掛掉,elastic-job會找空閑的作業服務器(可能是未分配任務的,也可能是完成執行本次任務執行的)執行。2、如果當時沒有空閑服務器,則將在某服務器完成分配的任務時抓取未分配的分片項。

Q2:Zookeeper的作用是保存任務信息嗎,如果Zookeeper掛了會影響任務執行嗎?

Zookeeper目前的znode分四類,config,servers,execution,leader。config用于保存分布式作業的全局控制,如,分多少片,要不要執行misfire,cron表達式。servers用于注冊作業服務器狀態和分片信息。execution以分片的維度存儲作業運行時狀態。leader用于存儲主節點。elastic-job作業執行是無中心化的,但主節點起到協調的作用,如:重分片、清理上次運行時信息等。

Q3:在任務處理上可以與spring batch集成嗎?

spring batch之前關注過,但目前elastic-job還沒有集成。elastic-job的spring支持是自定義了job的命名空間,更簡化了基于spring的配置,并且可以使用spring注入的bean。spring batch也是很好的作業框架,包括spring-quartz也很不錯,但分布式功能并不成熟。所以在這之上改動難度比較大,而且elastic-job更希望做一個不依賴于spring,而是能融入spring的綠色產品。

Q4:針對簡單和數據流,能夠說說具體分片是怎么處理的嗎?

簡單的作業就是未經過任何業務邏輯的封裝,只是提供了一個execute方法,定時觸發,但是增加了分布式分片功能。可以簡單理解為quartz的分布式版本。quartz雖然可以支持基于數據庫的分布式高可用,但不能分片。也就是說,兩臺服務器,只能一主一備,不能同時負載均衡的運行。數據流類型作業參照了阿里之前開源的TBSchedule,將數據處理分為fetchData和processData。先將數據從數據庫,文件系統,或其他數據源取出來,然后processData集中處理,可以逐條處理,可以批量處理(這塊未來將加上)。processData是多線程執行的,數據流類型作業可再細分為兩種,一種是高吞吐,一種是順序性。高吞吐可以開啟任意多的線程并行執行數據處理,而順序執行會根據每個分片項一個線程,保證分片項之中的數據有序,這點參照了kafka的實現。數據流類型作業有isStreaming這個參數,用于控制是否流式不停歇的處理數據,類似永動機,只要有數據,則一直處理。但這種作業不適合每次fetchData都對數據庫造成壓力很大的場景。

Q5:請問如何實現一個任務僅僅只在一個節點執行一次?

目前的冪等性,是在execution的znode中增加了對分片項狀態的注冊,如果狀態是運行中,即使有別的服務器要運行這個分片項,elastic-job也會拒絕運行,而是等待這個狀態變為非運行的狀態。每個作業分片項啟動時會更新狀態。服務器沒有波動的情況下,是不存在一個分片被分到兩個服務器的情況。但一旦服務器波動,在分片的瞬間有可能出現這種情況。關于分片,其實是比較復雜的實現。目前分片是發現服務器波動,或修改分片總數,將記錄一個狀態,而非直接分片。分片將在下次作業觸發時執行,只有主節點可以分片,分片中從節點都將阻塞。無調度中心式分布式作業***的一個問題是,無法保證主節點作業一定先于其他從節點觸發。所以很有可能從節點先觸發執行,而使用舊分片;然后主節點才重新分片,將造成這次作業分片可能不一致。這就需要execution節點來保證冪等性。下次執行時,只要無服務器波動,之前錯誤的分片自然會修正。

Q6:如果Zookeeper掛了,是否全部的任務都掛了不能運行包括已經運行過一次的,如果又恢復了,任務能正常運行嗎,還是業務應用服務也要重新啟動?

其實Zookeeper是不太容易掛的。畢竟Zookeeper是分布式高可用,一般不會是單臺。目前elastic-job做到的容錯是,連不上Zookeeper的作業服務器將立刻停止執行作業,防止主節點已重新分片,而腦裂的服務器還在執行。也就是說,Zookeeper掛掉,所有作業都將停止。而作業服務器一旦與Zookeeper恢復連接,作業也將恢復運行。所以Zookeeper掛掉不會影響數據,而Zookeeper恢復,作業會繼續跑,不用重啟。

Q7:可以具體到業務層面嗎?比如有個任務,是一樣發送100w的用戶郵件,這時候應該怎么分片?針對分布式數據庫的分頁在咱們這里又是怎么處理的?

100W用戶的郵件,個人認為可以按照用戶id取模,比如分成100個分片,將整個userid % 100,然后每個分片發送userid結尾是取摸結果的郵件。詳細來說:分片1發送以01結尾的userid的郵件,…,分片99發送以99結尾的userid的郵件。分布式數據庫的分頁,理論上來說,不是作業框架處理的范疇,應由數據中間層處理。順便說下,ddframe的數據中間層部分,sharding-JDBC將于明年初開源。通過修改JDBC驅動實現分庫分表。非MyCat或cobar這種中間件方式;也非基于hibernate或mybatis這種ORM方式。sharding-JDBC相對輕量級,也更加容易適配各種數據庫和ORM

Q8:ddframe是由很多組件組成?支持多語言嗎?

ddframe是很多組件的總稱。分為核心模塊,分布式組件模塊和監控對接模塊等。核心模塊可以理解為spring-boot這種可快速啟動,快速搭建項目的東西。

分布式組件包括SOA調用的Dubbox,基于分布式作業的elastic-job,還有剛才提到的sharding-JDBC,以及近期暫無開源計劃的緩存、MQ、NoSQL等模塊。

監控模塊估計以后也不會開源,和公司本身的業務場景綁定太緊,不是不想開源,是無法開源。主要分為日志中心,流量分析和系統關系調用圖。監控部分目前也還在做,不是很強大。

多語言方面,SOA模塊支持,Dubbox的REST擴展就是為了支持其他語言的調用。剩下的暫時不行。比如sharing-JDBC,主要是基于java的JDBC,如果多語言,中間層是個更好的方法。

ddframe的模塊名字都是dd-*,dd-soa,dd-rdb,dd-job,dd-log之類。elastic-job,sharding-JDBC等,是為開源而從ddframe抽離并重新起的名字。

本文由張亮在高可用架構群所做的分享整理而來。轉載請注明高可用架構公眾號ArchNotes。

責任編輯:Ophira 來源: 高可用架構公眾號
相關推薦

2020-07-17 09:33:39

CPU內存調度

2025-05-23 07:31:08

2021-01-28 07:32:14

框架分布式調度

2019-11-12 09:32:39

分布式elastic-job分片

2025-01-06 08:53:37

2009-12-24 09:22:30

2025-08-19 08:25:02

2016-04-27 15:42:01

技巧構建SDK

2010-09-17 17:35:55

2009-12-25 09:34:54

袁萌Linux

2024-08-13 10:47:01

2016-10-28 14:01:22

DevOps自動化

2019-04-24 12:49:00

2012-06-28 11:26:22

2019-09-27 08:00:00

Visual StudVisual Stud開發技巧

2012-06-29 09:52:42

2015-06-01 16:58:43

布線

2021-06-25 10:15:14

大數據技術大數據新技術

2024-05-16 08:00:00

2021-04-12 10:04:42

數據庫安全漏洞網絡攻擊
點贊
收藏

51CTO技術棧公眾號

久久久久久少妇| 五级黄高潮片90分钟视频| 视频一区二区三区不卡| 国内精品久久久久影院薰衣草| 欧美久久久精品| 六月婷婷七月丁香| 国产日韩中文在线中文字幕| 欧美日韩亚洲一区二区三区| 中文字幕精品一区日韩| 午夜视频福利在线| 狠狠色综合日日| 日本午夜在线亚洲.国产| 三级av在线免费观看| 国产精品乱战久久久| 欧美精品丝袜中出| 成年人小视频网站| 91资源在线观看| 亚洲特级片在线| 精品视频在线观看| 国产精品污视频| 亚洲一区网站| 欧美激情性做爰免费视频| 先锋影音av在线| 另类在线视频| 欧美大肚乱孕交hd孕妇| 性欧美1819| 亚洲精品永久免费视频| 亚洲综合在线观看视频| 99热这里只有精品7| 国产香蕉在线| 26uuu精品一区二区三区四区在线| 亚洲在线免费观看| 91成年人视频| 琪琪一区二区三区| 日本免费一区二区三区视频观看| 国产精品日日夜夜| 欧美久色视频| 超碰精品一区二区三区乱码| 中文字幕无码日韩专区免费| 成人一区不卡| 在线观看视频亚洲| xxxxx在线观看| 亚洲人成网77777色在线播放 | 日韩在线免费观看视频| 青青草福利视频| 欧美男人操女人视频| 精品福利在线导航| jjzz黄色片| 超碰成人福利| 亚洲第一天堂av| 美女久久久久久久久| 136导航精品福利| 日韩一区二区三区免费看 | 91丨九色丨海角社区| 亚洲欧美日韩在线观看a三区| 久久久久国产精品www| 国产精品美女毛片真酒店| 伊人精品在线| 国产91精品不卡视频| 欧美一级特黄视频| 肉色丝袜一区二区| 国产精品香蕉国产| 国产美女三级无套内谢| 国产乱对白刺激视频不卡| 91手机在线视频| 亚洲乱熟女一区二区| av电影在线观看一区| 久久福利电影| 国产黄色在线| 亚洲视频一区二区在线观看| 一本大道东京热无码aⅴ| 黄网站在线观| 色激情天天射综合网| 亚洲国产日韩欧美在线观看| 国产高清日韩| 亚洲第一区在线观看| 欧美成人午夜精品免费| 欧美成人直播| 国内精品免费午夜毛片| 狠狠人妻久久久久久| 蜜臀av在线播放一区二区三区| 成人网在线免费观看| 欧美熟妇另类久久久久久不卡| 91日韩在线专区| 亚洲开发第一视频在线播放| 日韩特级毛片| 日本高清免费不卡视频| 亚洲成人av免费观看| 欧美自拍视频| 久久久精品久久久久| avove在线播放| 久久大逼视频| 91免费欧美精品| 亚洲欧美丝袜中文综合| 国产精品久久久久aaaa| 日本xxxxxxxxxx75| 国产成人精品一区二区三区视频| 欧美tickling网站挠脚心| www..com.cn蕾丝视频在线观看免费版 | 亚洲人成久久| 91九色视频导航| 视频午夜在线| 亚洲乱码国产乱码精品精98午夜| 国产精品后入内射日本在线观看| 日日夜夜精品| 亚洲另类xxxx| 国产亚洲成人av| 久久综合伊人| 激情五月综合色婷婷一区二区| 99青草视频在线播放视| 午夜精品福利视频网站| 99中文字幕在线| 精品久久久久久久| 欧美另类极品videosbest最新版本| 国产一级18片视频| 丁香婷婷深情五月亚洲| 一级日韩一区在线观看| 亚洲少妇视频| 亚洲国内高清视频| 欧美老熟妇一区二区三区| 日韩国产高清影视| 久久伊人一区| 国产污视频在线播放| 日韩亚洲欧美在线| 北条麻妃在线观看视频| 日韩高清在线电影| 欧美一级日本a级v片| 超碰在线99| 精品国产成人系列| 青青草成人免费| 久久精品国产99久久6| 日韩伦理一区二区三区av在线| av资源中文在线| 日韩欧美成人激情| 欧美精品一区二区成人| 国产一区二区久久| 老汉色影院首页| 亚洲日本中文| 久久精品中文字幕电影| 中文字幕在线2018| 精品午夜av| 日韩另类在线| 欧美久久天堂| 精品久久久久一区二区国产| 男人在线观看视频| 久久国产精品无码网站| 亚洲精品一区二区三区av| 蜜桃精品在线| 中国人与牲禽动交精品| 波多野结衣视频在线观看| 久久久午夜精品| 久久久久久久少妇| 欧美精品久久久久久| 国产精品aaa| 国产永久免费高清在线观看| 色综合激情久久| 级毛片内射视频| 日本亚洲免费观看| 亚洲国产日韩综合一区| 欧美一级免费| 不卡av在线网站| 免费观看黄色一级视频| 欧美日韩一区二区免费视频| 能免费看av的网站| 免费人成黄页网站在线一区二区| 亚洲欧美国产不卡| 日本一区二区乱| 久久久久久久久久亚洲| 五月婷在线视频| 在线免费精品视频| 亚洲欧美卡通动漫| 国产精品中文字幕日韩精品| 日本香蕉视频在线观看| 欧美美女在线直播| 国产精品偷伦一区二区| 成人日日夜夜| 日韩精品电影网| 亚洲欧美日韩一区二区三区四区| 国产精品国产自产拍高清av| 肉色超薄丝袜脚交| 亚洲激情影院| 日韩精品无码一区二区三区| 亚洲欧洲专区| 性欧美xxxx视频在线观看| 九九热视频在线观看| 91精品国产综合久久小美女| 欧美成人精品欧美一级乱黄| 国产欧美精品一区二区三区四区 | 成人性做爰片免费视频| 国产精品香蕉| 国产精品久久久久久五月尺| 中文字幕中文字幕在线十八区| 精品偷拍一区二区三区在线看| 在线视频 中文字幕| 亚洲国产视频a| 久久久久99精品成人| 99久久夜色精品国产网站| 中文字幕av不卡在线| 亚洲国产一区二区三区a毛片| 亚洲国产精品日韩| 久久九九热re6这里有精品| 日韩免费av一区二区| 日本高清成人vr专区| 在线播放日韩专区| 无码精品视频一区二区三区| 欧美精品久久久久久久久老牛影院| 国产成人亚洲欧洲在线| 亚洲欧美在线观看| 免费视频91蜜桃| 成人动漫一区二区在线| 欧美日韩一区二区三区69堂| 国产欧美亚洲一区| www.99riav| 日韩在线二区| 欧美三级华人主播| 精品国内亚洲2022精品成人| 成人夜晚看av| 美女久久久久久| 国产97免费视| 亚洲欧美小说色综合小说一区| 久久777国产线看观看精品| 在线观看av的网站| 国产一区二区三区久久精品| 婷婷伊人综合中文字幕| 日韩免费成人网| 国产精品欧美亚洲| 欧美性做爰猛烈叫床潮| 日本天堂网在线| 香港成人在线视频| 久久久香蕉视频| 亚洲情趣在线观看| 国产一区在线观看免费| 欧美国产激情二区三区 | www.国产.com| 日韩一二三区不卡| 精品国产九九九| 欧美一级欧美三级在线观看| 国产又粗又猛又黄又爽| 欧美日韩美女一区二区| a片在线免费观看| 欧美亚洲日本一区| 波多野结衣电车痴汉| 91成人免费电影| 波多野结衣小视频| 欧美吞精做爰啪啪高潮| 中文字幕一区2区3区| 欧美日韩不卡在线| 亚洲影视一区二区| 91精品国产手机| 国产麻豆精品一区| 日韩欧美国产精品一区| 亚洲第一色视频| 亚洲高清久久网| 涩涩视频在线观看免费| 亚洲成年人在线播放| 人妻无码中文字幕| 日韩av在线播放资源| 日本电影一区二区在线观看| 亚洲丝袜一区在线| 97视频精彩视频在线观看| 日韩视频欧美视频| 中文字幕在线播放网址| 97碰在线观看| 校园春色亚洲色图| 国产精品网红直播| 亚洲电影一区| 欧美激情国产日韩| 欧美wwwww| 国产精彩视频一区二区| 久久xxxx| 欧美一级免费在线| av中文字幕一区| 性猛交娇小69hd| 亚洲精品视频一区二区| 久久久久久久久久免费视频| 91成人免费在线视频| 精品久久久无码中文字幕| 亚洲精品第一页| eeuss影院www在线观看| 久久国产天堂福利天堂| 嗯~啊~轻一点视频日本在线观看| 日本a级片电影一区二区| 久久天堂影院| 黑人巨大精品欧美一区二区小视频| 国产不卡一区| 国产专区在线视频| 久久综合婷婷| 国产老头和老头xxxx×| 久久先锋资源网| 中文字幕在线有码| 色噜噜狠狠色综合欧洲selulu| 国产精品一级视频| 亚洲码在线观看| 在线黄色网页| 国产精品一区专区欧美日韩| 国产精品jk白丝蜜臀av小说| 亚洲成人午夜在线| 一本久久知道综合久久| 岛国毛片在线播放| 久久久影视传媒| 久久国产一级片| 欧美美女bb生活片| 亚洲色欧美另类| 欧美精品在线第一页| 日韩精品一区二区三区av| 成人欧美一区二区| 91综合久久一区二区| 国产成人无码精品久久久性色| 狠狠色丁香久久婷婷综合_中| 中文字幕狠狠干| 亚洲国产精品影院| 国产女人高潮的av毛片| 中文字幕日韩高清| 在线观看爽视频| 国产伦精品一区二区三区四区视频| 国产精品国产一区| 成人黄色一区二区| 91亚洲国产成人精品一区二三| 波多野结衣不卡视频| 欧美色欧美亚洲另类二区| 欧美日韩国产综合视频| 久久久久久久久久久免费精品| 电影91久久久| 在线观看欧美激情| 欧美a级理论片| 中文字幕第20页| 精品久久香蕉国产线看观看gif| 国产 日韩 欧美 综合| 久久av红桃一区二区小说| 黑人一区二区三区| 亚洲精品美女久久7777777| 视频一区二区国产| 四虎永久免费影院| 欧美午夜片欧美片在线观看| 少妇精品视频一区二区 | 国产精品第九页| 日韩久久精品一区| 亚洲精品天堂| 99国产在线观看| 中文字幕免费一区二区三区| 国产性生活一级片| 亚洲欧美日韩国产成人精品影院| 国产又大又黑又粗| 久久av中文字幕| 香蕉大人久久国产成人av| 真实国产乱子伦对白视频| 粉嫩aⅴ一区二区三区四区五区| 亚洲欧美一区二区三区四区五区| 欧美一级艳片视频免费观看| 在线h片观看| 97中文在线观看| 亚洲三级毛片| www.久久av| 欧美日韩视频在线观看一区二区三区 | 色一区av在线| av在线精品| 免费看欧美一级片| 91丨porny丨最新| 波多野结衣在线观看一区| 伊人av综合网| crdy在线观看欧美| 日韩中文字幕在线不卡| 成人的网站免费观看| 毛片在线免费视频| 国产亚洲一区二区在线| 91麻豆精品| 给我免费播放片在线观看| 久久这里都是精品| 又色又爽又黄无遮挡的免费视频| 久久天天躁狠狠躁夜夜av| 超碰地址久久| 久久婷婷国产精品| 国产精品国产三级国产普通话三级 | 国产另类ts人妖一区二区| 国产视频91在线| 国产亚洲一级高清| 精品三级国产| 大肉大捧一进一出好爽视频| 国产欧美日韩不卡| 成人福利小视频| 国产99视频在线观看| 91九色精品| 精品无码在线视频| 欧美绝品在线观看成人午夜影视| heyzo在线播放| 亚洲欧美久久久久一区二区三区| 国产精品伊人色| 台湾佬中文在线| 欧美日韩成人在线观看| 九九综合久久| 女教师高潮黄又色视频| 在线免费观看一区| 女人黄色免费在线观看| 亚洲v国产v| www.亚洲人| 国产露脸国语对白在线| 91精品国产91久久| 91成人精品视频| 公肉吊粗大爽色翁浪妇视频| 亚洲国产成人91精品|