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

使用Ballerina開發敏捷的ETL流程

譯文 精選
人工智能
本文討論了靈活的、類似微服務的ETL流的體系結構和Ballerina語言實現。考慮到大多數業務部門生成數據,并有著獨特的數據需求,Ballerina語言提供的數據處理能力、連接性和靈活的部署選項可能具有變革性。

譯者 | 布加迪

審校 | 重樓

提取、轉換和加載(ETL)的三個階段通常涉及多個任務,每個任務都可以獨立執行。你可以將每個任務作為微服務來開發。

公司企業每天從各種業務運營中生成大量數據。比如說,每當客戶在零售店結賬時,可以在銷售點(PoS)系統獲取諸如客戶標識符、零售店標識符、結賬時間、購買物品列表和總銷售額之類的數據。同樣,現場銷售人員可能會將潛在的銷售機會錄入到電子表格中。此外,大多數商業通信是通過電子郵件進行的,這使得電子郵件成為一個大有價值的數據源。為了在整個組織保持信息的一致性,并從這些數據中獲得業務洞察力,從這些分散的數據源中提取必要的細節并保持所有的相關信息集中化就顯得至關重要。

提取、轉換和加載(ETL)技術側重于這個問題:從多個數據源提取數據,將提取到的數據轉換成所需的格式,最后將其加載到相關的數據存儲或系統中。然而,由于業務和技術的進步,ETL應用生態也在迅速發生變化。其中面臨一些挑戰:

  • 使用人工智能從自然語言或非結構化數據源中提取信息。
  • 使用人工智能來轉換數據。
  • 與基于云的系統連接以提取或加載數據。
  • 在混合云環境中靈活部署ETL流。
  • ETL流的可擴展性。
  • 像微服務那樣敏捷和快速地部署ETL流。
  • 支持流式ETL操作。
  • 針對小規模用例的低成本ETL部署。

我們在下文將討論構建這種敏捷ETL流的體系結構以及快速部署這些ETL流的方法。

用于構建敏捷ETL流的體系結構

ETL的每個提取、轉換和加載階段通常涉及多個任務。比如說,提取階段可能涉及從CSV文檔和電子郵件中提取數據的任務。與之相仿,轉換階段可能涉及刪除缺失字段的數據項、連接字段、分類以及將數據從一種格式映射到另一種格式等任務。最后,加載階段可能涉及加載到數據倉庫、更新數據庫中的數據項或將數據插入不同系統中等任務。這樣的ETL流如下圖所示:

圖1

一旦提供了原始數據或另一個任務的輸出,這些任務中的每一個都可以獨立執行。因此,可以使用合適的技術實現這每一個任務,并將它們作為可獨立部署和擴展的集群加以執行。這使得我們可以將每個任務作為微服務來開發。

此外,任務之間存在依賴關系。比如說,“連接字段”任務依賴“從文件系統中提取”任務??梢允褂枚喾N方法在這類相關任務之間傳遞數據。一種簡單的方法就是使用REST API調用在這些任務之間進行聯系。然而,如果在任務之間使用消息傳遞系統,就可以促進解耦并提高可靠性。然后,每個任務使用來自消息傳遞系統中某個主題的數據,并在處理完成后將輸出數據發布到另一個主題。這種方法有諸多優點:

  • 每個任務可以以自己的速度工作,而不會被前一個任務的請求過載。
  • 如果任務失敗,數據不會丟失。
  • 可以將另外的任務添加到ETL流中,而不會影響當前任務。

將ETL任務作為微服務來實現并通過消息傳遞層方便其通信的體系結構如下所示:

圖2

將每個ETL任務分離為微服務可以視作邏輯體系結構。在實際的實現中,可以根據可擴展性、開發團隊和預期的可擴展性需求等因素,確定是將ETL任務作為單獨的微服務來實現,還是將多個任務組合成單個微服務。

實現ETL任務

下一步是實現單獨的ETL任務。因為這每一個任務都是微服務,任何技術都可以用于實現。ETL任務通常包括三個步驟:

  • 與本地數據中心和云端可用的數據存儲和外部端點集成。
  • 處理龐大且復雜的數據結構。
  • 通過多種格式和協議傳輸數據。

許多支持微服務風格部署的集成技術都可以用于實現ETL任務。適合此用途的一種技術是Ballerina編程語言,它是專門為集成而設計的。Ballerina直接支持服務開發、數據庫連接、通用協議、數據轉換以及多種數據類型(如JSON、XML、CSV和EDI)。此外,它還附帶大量連接件,以便與本地系統和SaaS系統集成。我們在下面將探討一些使用Ballerina開發ETL任務的示例。

數據提取

業務數據有可能放在數據庫、CSV文件、EDI文檔、電子表格或ERP應用軟件等各種企業系統中。因此,數據提取任務需要連接所有這些數據源,并使用它們支持的格式讀取數據。下面是使用Ballerina從數據庫、CSV文件和EDI文檔中提取數據的幾個示例。

  • 讀取數據庫
stream orders = dbClient->/orderdata;
check from var orderData in orders
   do {
       io:println(orderData);
   };
  • 讀取CSV文件
stream productDataStream = check io:fileReadCsvAsStream("product_data.csv");
check productDataStream.forEach(
   function(string[] productData) {
   io:println(productData);
});
  • 讀取EDI文檔
string ediText = check io:fileReadString("resources/purchase_order.edi");
PurchaseOrder simpleOrder = check fromEdiString(ediText);
io:println(string `Order Id: ${simpleOrder.header.orderId}`);

數據提取階段可能還需要從非結構化數據源中提取數據。這方面的一個典例是從電子郵件、留言和評論中提取結構化信息。下面的例子演示了使用Ballerina和OpenAI從評論中提取好評、差評和改進建議等信息。

chat:CreateChatCompletionRequest request = {
   model: "gpt-3.5-turbo",
   messages: [
       {
           role: "user",
           content: string `
               Extract the following details in JSON from the reviews given.
                   {
                       good_points: string,
                       bad_points: string,
                       improvement_points: string
                   }
               The fields should contain points extracted from all reviews
               Here are the reviews:
               ${string:'join(",", ...summaryRequest.reviews)}
           `
       }
   ]
};
chat:CreateChatCompletionResponse summary = check openAiChat->/chat/completions.post(request);
if summary.choices.length() > 0 {
   string content = check summary.choices[0].message?.content.ensureType();
   io:println(content);
chat:CreateChatCompletionRequest request = {
   model: "gpt-3.5-turbo",
   messages: [
       {
           role: "user",
           content: string `
               Extract the following details in JSON from the reviews given.
                   {
                       good_points: string,
                       bad_points: string,
                       improvement_points: string
                   }
               The fields should contain points extracted from all reviews
               Here are the reviews:
               ${string:'join(",", ...summaryRequest.reviews)}
           `
       }
   ]
};
chat:CreateChatCompletionResponse summary = check openAiChat->/chat/completions.post(request);
if summary.choices.length() > 0 {
   string content = check summary.choices[0].message?.content.ensureType();
   io:println(content);
}

數據轉換

提取的數據可能來自員工填寫的電子表格、從手寫文檔掃描而來的文本或操作員輸入到系統的數據。因此,這類數據可能含有拼寫錯誤、缺失字段、重復信息或無效數據。因此,轉換階段必須在將這些數據記錄加載到目標系統之前加以清潔。此外,可能需要在轉換階段將來自多個數據源的相關細節組合起來,以便豐富數據。下面的例子展示了使用Ballerina來完成這些任務。

  • 刪除重復信息
function removeDuplicates(SalesOrder[] orders) returns SalesOrder[] {
   return from var {itemId, customerId, itemName, quantity, date} in orders
       group by itemId, customerId, itemName
       select {
           itemId,
           customerId,
           itemName,
           quantity: [quantity][0],
           date: [date][0]
       };
}
  • 識別無效數據項
function isValidEmail(string inputString) returns boolean {
   string:RegExp emailPattern =  re `[A-Za-z0-9\._%+-]+@[A-Za-z0-9\.-]+\.[A-Za-z]{2,}`;
   return emailPattern.isFullMatch(inputString);
}
  • 數據豐富
CRMResponse response = check crmClient->/crm/api/customers/'json(customerId = customer.id);
if response.status == "OK" {
   customer.billingAddress = response.billingAddress;
   customer.primaryContact = response.telephone;
}

提取的數據常常需要在存儲到目標系統之前轉換成不同的格式。然而,ETL任務通常不得不處理由數百個字段組成的非常龐大的數據結構,這可能使數據映射成為一項乏味枯燥的任務。可以使用Ballerina的可視化數據映射功能簡化這項操作,如下所示:

圖3

數據加載

最后,數據加載階段的任務需要連接不同的目標系統,并通過所需的協議發送數據。使用TLS和OAuth2等技術實現安全連接到這些目標系統也很重要。Ballerina有大量的連接件,并內置支持所有常見的安全標準,因而實現此類數據加載任務變得容易。下面的示例展示了如何將數據插入到Google BigQuery中。

SalesData[] salesDataset = check io:fileReadCsv("./resources/sales_data.csv");
bigquery:TabledatainsertallrequestRows[] rows = from var salesData in salesDataset
   select {insertId: uuid:createType1AsString(), 'json: salesData};
bigquery:TableDataInsertAllRequest payload = {rows};
_ = check bigQueryClient->insertAllTableData(projectId, datasetId, tableId, payload);

有時候,業務用戶可能希望檢查某些數據記錄,比如缺失值或無效值的數據項。就微服務體系結構而言,引入這樣一個額外的任務只需要添加一個微服務來讀取相關主題,并將數據加載到電子表格之類的最終用戶系統中。下面是一個從主題中讀取數據并將其插入到Google Sheets的示例。

sheets:Spreadsheet sheet = check spreadsheetClient->createSpreadsheet(sheetName);
_ = check spreadsheetClient->
   appendValue(sheet.spreadsheetId, ["Product", "Sales", "Date"], {sheetName: workSheetName});
foreach var {product, sales, date} in salesSummary {
   _ = check spreadsheetClient->
       appendValue(sheet.spreadsheetId, [product, sales, date], {sheetName: workSheetName});
}

部署和測試ETL流

將單個ETL任務作為微服務來開發便于將整個ETL流部署到Kubernetes集群中。每個ETL任務都可以是Kubernetes部署環境中的一個pod,從而可以根據負載大小來增加或減少單個ETL任務的pod數量。然而,組織通常有多個ETL流,每個流又涉及許多任務。此外,這些ETL流可能歸不同的團隊擁有。因此,擁有適當的CI/CD管道、權限模型、監測功能以及用于開發、測試、性能驗證和生產的多個環境至關重要。

Ballerina可以與所有常見的CI/CD、監測和部署技術一起工作,從而無縫地將基于Ballerina的ETL流與組織的現有基礎設施集成在一起。比如說,Ballerina ETL源代碼可以在GitHub中加以維護,CI/CD操作可以使用Jenkins來實現,ETL流可以部署在Amazon EKS上,執行則可以使用Prometheus和Grafana加以監測。

另一個部署選項是Choreo平臺,該平臺默認情況下提供了所有這些功能。由于Choreo讓用戶無需構建平臺,因此可以通過部署一組選定的ETL流、進行測試并將它們轉移到生產環境中,立即開啟ETL之旅。然后可以對這些ETL流進行改動,或者可以在相應的數據源存儲庫中引入新的ETL流,新的ETL流由Choreo攝取后部署到開發環境中。

結語

本文討論了靈活的、類似微服務的ETL流的體系結構和Ballerina語言實現??紤]到大多數業務部門生成數據,并有著獨特的數據需求,Ballerina語言提供的數據處理能力、連接性和靈活的部署選項可能具有變革性。Ballerina團隊目前正在竭力改進工具支持,力求使構建集成和ETL流變得更簡單。

原文標題:Developing agile ETL flows with Ballerina,作者:Chathura Ekanayake

責任編輯:姜華 來源: 51CTO
相關推薦

2021-07-31 07:54:52

開發研發敏捷

2009-05-11 10:48:24

敏捷開發Agile架構

2009-07-16 09:52:00

Scrum流程

2011-01-14 08:35:03

iPhoneiPad敏捷設計流程

2019-12-06 11:14:57

Git開發系統

2012-10-30 09:44:33

敏捷開發

2023-09-04 15:31:54

軟件開發敏捷開發工具

2010-11-16 09:23:13

敏捷開發Visual Stud

2013-10-29 11:50:11

2020-10-22 10:34:04

APICloud開發平臺

2009-03-24 00:04:35

敏捷開發源代碼分析軟件質量

2022-06-07 08:19:30

gRPCBallerina微服務

2017-11-29 15:38:45

B端交互設計

2009-09-10 16:04:41

敏捷開發敏捷外包

2023-01-04 09:40:32

敏捷開發

2012-11-15 10:19:56

IBMdw

2010-09-10 09:35:59

Visual Stud

2013-03-01 10:15:43

敏捷開發敏捷

2010-10-15 10:31:00

2016-12-19 09:43:59

軟件開發架構
點贊
收藏

51CTO技術棧公眾號

亚洲精品色图| 亚洲人成网77777色在线播放| 亚洲欧美偷拍卡通变态| yy111111少妇影院日韩夜片| 日韩久久久久久久久| 色橹橹欧美在线观看视频高清| 欧美中文一区二区三区| 毛片av在线播放| 可以免费看污视频的网站在线| 蜜桃av一区二区三区| 欧美高清自拍一区| 阿v天堂2014| 国产精品视频首页| 色哟哟亚洲精品| 中文精品无码中文字幕无码专区 | 欧美亚洲系列| 国产日韩欧美电影| 成人av播放| 中文在线免费观看| 日韩一级网站| 欧美大片网站在线观看| 国产精品www爽爽爽| 国产精品对白| 91精品国产一区二区| 熟妇人妻va精品中文字幕| 四虎影视国产在线视频| 国产精品人妖ts系列视频| 精品国产一区二区三区麻豆小说| 亚洲 小说区 图片区| 亚洲精选一区| 欧美黑人一级爽快片淫片高清| 日本高清黄色片| 夜色77av精品影院| 精品国产91九色蝌蚪| 91福利免费观看| 国产精品字幕| 色悠悠久久综合| 极品粉嫩国产18尤物| 幼a在线观看| 久久久久9999亚洲精品| 精品综合久久| 天天射天天色天天干| 成人性生交大片免费看中文网站| 亚洲精品欧美一区二区三区| 国产一区二区女内射| 蜜臀va亚洲va欧美va天堂| 国产成一区二区| 手机在线看片1024| 久久精品首页| 日本成熟性欧美| 亚洲天堂一区在线| 亚洲三级影院| 欧美亚洲伦理www| 一区二区三区福利视频| 国产色综合网| 欧美在线一区二区视频| 成年人视频在线免费看| 国产精品亚洲欧美| 6080yy精品一区二区三区| 日韩欧美中文字幕一区二区| 亚洲美女视频在线免费观看| 91av视频在线免费观看| 四虎精品永久在线| 亚洲一区国产| 日本欧美国产在线| 午夜一区二区三区四区| 另类调教123区| 92看片淫黄大片看国产片| 国产精品久久久久久免费| 国产毛片一区二区| 成人永久免费| 神马精品久久| 国产婷婷色一区二区三区| 神马影院一区二区三区| 日本暖暖在线视频| 亚洲最大成人综合| 成人免费在线小视频| 性欧美1819sex性高清| 欧美天天综合网| 日本一区二区三区在线免费观看| 亚洲国产视频二区| 精品视频在线播放| 我想看黄色大片| 欧美激情日韩| 欧美一级在线播放| 91资源在线视频| 丁香六月久久综合狠狠色| 欧美日产一区二区三区在线观看| 成人午夜电影在线观看| 亚洲免费成人av| 国产精品免费入口| 四虎国产精品免费久久| 欧美精品一区二区在线播放| 免费观看a级片| 韩日成人在线| 国产精品无码专区在线观看| 亚洲国产成人精品一区二区三区| 久久久久久久久岛国免费| 影音先锋欧美资源| 欧亚av在线| 91精品在线观看入口| 日韩精品一区二区三区高清免费| 日韩欧美在线中字| 午夜精品福利在线观看| 亚洲天堂aaa| 99久久免费国产| 最新精品视频| 欧美1级2级| 欧美精品一区二区三区在线 | 国产精品国产一区| 2020欧美日韩在线视频| a天堂视频在线| 中文字幕免费观看一区| 青青草成人免费在线视频| 日韩美香港a一级毛片| 亚洲精选在线观看| 久久黄色免费网站| 国产在线播精品第三| 日本高清不卡一区二区三| 黄页在线观看免费| 91精品国产色综合久久ai换脸| 色婷婷在线影院| 亚洲精选成人| 俄罗斯精品一区二区| 日本三级视频在线播放| 91久久精品一区二区二区| 欧美一级片黄色| 欧美久久一级| 亚洲mm色国产网站| 日本美女高清在线观看免费| 日本韩国欧美一区二区三区| 噜噜噜在线视频| 影音先锋亚洲精品| 成人免费91在线看| av片在线观看永久免费| 69堂成人精品免费视频| 999久久久国产| 日本亚洲最大的色成网站www| 蜜桃导航-精品导航| 免费在线国产视频| 精品日韩欧美在线| 九九视频免费在线观看| 国产精品18久久久久久久久久久久| 亚洲精品乱码视频| 成人午夜亚洲| 最近2019中文字幕mv免费看| 日韩精选在线观看| 国产欧美综合色| 99视频免费播放| 精品国产视频| 国产免费观看久久黄| 午夜看片在线免费| 欧美丰满美乳xxx高潮www| 午夜成人亚洲理伦片在线观看| 日韩成人av影视| 亚洲国产一区二区三区在线 | 久久精品91| 牛人盗摄一区二区三区视频| 亚洲三级欧美| 亚洲色图在线观看| 亚洲天天综合网| 亚洲欧美一区二区三区孕妇| 精品国产一二区| 亚洲国产午夜| 欧洲亚洲一区二区| 韩国精品视频在线观看| 久久久精品日本| 日韩一区二区电影在线观看| 一区二区小视频| 最新成人av在线| 美女被爆操网站| 日韩午夜免费| 少妇特黄a一区二区三区| 日韩毛片免费视频一级特黄| 欧美成人免费在线视频| 人妻少妇精品无码专区久久| 欧美午夜精品久久久久久浪潮| 新91视频在线观看| 精品一区二区日韩| av免费看网址| av一区二区在线播放| 亚洲尤物视频网| av日韩亚洲| 久久久国产影院| 欧美一级在线免费观看| 色av一区二区| 色在线观看视频| 91蜜桃在线观看| 国内自拍第二页| 日韩图片一区| 免费在线观看污污视频| 极品国产人妖chinesets亚洲人妖| 国产成人精品久久亚洲高清不卡| 成人无遮挡免费网站视频在线观看| 欧美精品一区二区三区蜜臀| 中文字幕一区二区在线视频| 亚洲国产一区二区三区青草影视| www亚洲色图| 国产成人综合亚洲网站| 免费看a级黄色片| 亚洲一级高清| 日韩视频在线免费播放| 欧美猛男男男激情videos| 147欧美人体大胆444| 精品欧美一区二区三区在线观看 | 亚洲国产日韩精品在线| 中文字幕自拍偷拍| 精品久久久中文| 国产成人自拍网站| 国产日产欧美一区二区视频| 久久久久无码国产精品一区李宗瑞| 丝袜美腿亚洲一区| 日韩精品第1页| 久久中文亚洲字幕| 欧美日韩一区在线视频| www.神马久久| 亚洲影院色无极综合| 国产精品成人国产| 日韩av高清不卡| 黄色18在线观看| 欧美夫妻性生活视频| 欧美成人hd| 亚洲最新视频在线| 你懂的在线播放| 亚洲国产成人久久综合| www.麻豆av| 91麻豆精品国产91久久久久久| 正在播放木下凛凛xv99| 欧美性生交xxxxx久久久| 日本中文字幕免费观看| 亚洲最大的成人av| 免费又黄又爽又色的视频| 亚洲婷婷在线视频| 黑人操日本美女| 国产精品对白交换视频| 人妻视频一区二区| 久久精品人人做人人综合 | www.久久色| 日韩午夜av一区| a级黄色一级片| 91麻豆精品久久久久蜜臀 | 日本精品一二区| 日韩欧美国产不卡| 国产xxxx孕妇| 日韩欧美一级二级三级| 国产成人精品a视频| 337p亚洲精品色噜噜狠狠| 在线视频免费观看一区| 欧美色图12p| 91 中文字幕| 337p亚洲精品色噜噜噜| 精品人妻一区二区三区含羞草 | 怡红院一区二区| 懂色一区二区三区免费观看| 少妇伦子伦精品无吗| 成人一区二区三区中文字幕| 香港三级日本三级| 99精品视频一区| 亚洲天堂久久新| 欧美激情一区二区三区全黄| 中文字幕求饶的少妇| 亚洲天堂2014| 国产一级黄色av| 精品露脸国产偷人在视频| 欧产日产国产69| 欧美色老头old∨ideo| 91成年人视频| 精品久久久影院| 日韩精品一二| 中文字幕亚洲欧美日韩2019| 成人午夜在线影视| 午夜欧美不卡精品aaaaa| 裤袜国产欧美精品一区| 国产精品三级久久久久久电影| 999色成人| 国产亚洲精品美女久久久m| 蜜桃tv一区二区三区| 亚洲一区二区在线免费观看| 午夜精品偷拍| 欧在线一二三四区| 国产黄人亚洲片| 真实乱视频国产免费观看| 亚洲天堂网中文字| 青青青国产在线| 欧美一区永久视频免费观看| 欧美熟妇另类久久久久久不卡| 亚洲色图在线观看| 天堂8中文在线| 国产成人精品在线播放| 日本精品在线播放| 欧美亚洲免费高清在线观看| 亚洲精品在线观看91| 日韩精品―中文字幕| 久久99精品国产| 亚洲av成人片色在线观看高潮 | 国产一区二区三区在线免费| 久久精品亚洲一区二区| 岛国大片在线免费观看| 久久久久久久久99精品| 久久久久久久久精| 欧美日韩久久不卡| 香蕉视频国产在线| 久久影院模特热| 日韩在线免费| 国产综合 伊人色| 亚洲精品成人影院| 亚洲 欧美 另类人妖| 99国产精品视频免费观看| 殴美一级黄色片| 色8久久人人97超碰香蕉987| www.我爱av| 日韩亚洲国产中文字幕| 亚洲涩涩在线| 国产精品视频500部| 久久久精品久久久久久96| 国产一区二区视频免费在线观看| 成人免费视频一区二区| 午夜精品一区二区三区视频| 欧洲一区在线观看| 三级在线视频| 欧美激情欧美狂野欧美精品| 国产精品一站二站| 亚洲春色综合另类校园电影| 美女国产一区| 日本免费福利视频| 亚洲成人一区在线| www.热久久| 欧美大片va欧美在线播放| 日日夜夜亚洲| 亚洲欧洲久久| 日本女优在线视频一区二区| 懂色av粉嫩av蜜乳av| 亚洲a一区二区| 男人天堂av网| 久久久爽爽爽美女图片| 一区二区三区在线资源| 欧美一二三不卡| 国产成人欧美日韩在线电影| 91精品一区二区三区蜜桃| 欧美欧美欧美欧美首页| 91精品国产91久久久久游泳池 | 欧美一区三区三区高中清蜜桃| 成人知道污网站| 拔插拔插海外华人免费| 成人av在线资源| 青青草av在线播放| 日韩hd视频在线观看| 悠悠资源网亚洲青| 日本免费一区二区三区| 日韩不卡在线观看日韩不卡视频| 国产特级黄色录像| 欧美天堂一区二区三区| 无遮挡动作视频在线观看免费入口| 国产精品一香蕉国产线看观看| 欧美hentaied在线观看| 8x8x成人免费视频| 亚洲精品国产一区二区三区四区在线| 国产福利第一视频| 久久免费观看视频| 亚洲人成网www| 爱爱爱爱免费视频| 亚洲欧美日韩电影| 亚洲成人77777| 欧美在线日韩在线| jiujiure精品视频播放| 自拍偷拍21p| 亚洲激情欧美激情| 日韩一级片免费看| 青青精品视频播放| 天天综合一区| 超碰caoprom| 色综合色狠狠天天综合色| aaa在线观看| 97久久精品午夜一区二区| 亚洲区一区二| jizz18女人高潮| 精品少妇一区二区三区视频免付费 | 国产suv精品一区二区三区88区| 成人高清电影网站| 在线观看中文av| 五月天婷婷综合| 永久免费av在线| 狠狠色噜噜狠狠色综合久| 日本女优在线视频一区二区| 欧美成人手机视频| 亚洲女同精品视频| 国产一区精品二区| 99福利在线观看| 亚洲欧美日韩一区| 青青草视频在线免费观看| 成人免费激情视频| 在线视频免费在线观看一区二区| 嘿嘿视频在线观看| 亚洲第一av在线| 欧美成人家庭影院| 日本少妇高潮喷水视频| 日韩毛片高清在线播放| 四虎在线视频| 成人黄色在线免费观看| 日韩黄色片在线观看|