精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产乱码在线| 国产精品久久不卡| 三级网站免费观看| 鲁大师影院一区二区三区| 日韩欧美成人激情| av免费观看国产| 国产福利第一视频在线播放| 激情偷乱视频一区二区三区| 国内精品中文字幕| 极品粉嫩小仙女高潮喷水久久 | 裸体女人亚洲精品一区| 性感美女一区二区三区| 日本精品在线一区| 一个色在线综合| 日韩av图片| 亚洲第一天堂在线观看| 秋霞电影一区二区| 久久久亚洲成人| 国产美女网站视频| 久久99国产精品久久99大师| 欧美日韩久久久久久| 轻点好疼好大好爽视频| 麻豆影视在线| 国产成人免费视频网站高清观看视频 | 午夜精品久久久久久久男人的天堂 | 午夜视频在线瓜伦| av免费不卡| 中文字幕亚洲综合久久菠萝蜜| 久久国产精品精品国产色婷婷| 国产毛片毛片毛片毛片毛片| 亚洲国产一区二区三区a毛片| 日韩一区在线视频| 亚洲精品91在线| 欧洲在线一区| 精品欧美乱码久久久久久1区2区| 黄色免费网址大全| 综合毛片免费视频| 午夜日韩在线电影| 日韩中文字幕亚洲精品欧美| 国产三级在线免费| 99久久久久免费精品国产| 国产精品亚洲综合天堂夜夜| www.伊人久久| 欧美精品首页| 九九久久综合网站| 翔田千里88av中文字幕| 国产精品国产三级国产在线观看| 亚洲偷欧美偷国内偷| 成年人的黄色片| 亚洲视频精选| 日韩女优电影在线观看| xx欧美撒尿嘘撒尿xx| 不卡亚洲精品| 欧美视频自拍偷拍| 玩弄japan白嫩少妇hd| 在线视频超级| 色婷婷综合久色| 男人日女人视频网站| 俄罗斯一级**毛片在线播放| 中文字幕一区二区三区不卡在线| 麻豆91av| аⅴ资源新版在线天堂| 天天综合网站| 经典一区二区| 日韩大片在线观看视频| 欧美xxxxx精品| 欧美重口另类| 亚洲人成在线观| 国产亚洲无码精品| 欧美一级本道电影免费专区| 日韩性生活视频| 亚洲不卡在线播放| 国产一区久久| 日本欧美一级片| 福利网址在线观看| 亚洲欧美成人综合| 日本高清不卡在线| 国产成人av免费| 毛片基地黄久久久久久天堂| 欧美一级黑人aaaaaaa做受| 亚洲av无码精品一区二区| 日本强好片久久久久久aaa| 国产日韩欧美夫妻视频在线观看 | 久久激情五月婷婷| 成人在线小视频| 黄色片一区二区| 久久夜色精品国产噜噜av| 美女一区视频| 免费黄色在线| 亚欧色一区w666天堂| 日本爱爱免费视频| 国产一区二区三区亚洲综合| 亚洲成色999久久网站| 久久只有这里有精品| 国产精品麻豆久久| 91国语精品自产拍在线观看性色| 久久人人爽人人爽人人| 久久久人人人| 成人激情春色网| 亚洲黄色a级片| 久久久不卡影院| 欧美另类videos| 老色鬼在线视频| 91精品国产综合久久婷婷香蕉| 亚洲av无一区二区三区久久| 大型av综合网站| 尤物精品国产第一福利三区| 日韩a级片在线观看 | 日韩av快播网址| 影音先锋国产资源| 99国产精品一区| 蜜臀在线免费观看| 是的av在线| 日韩久久久久久| a级黄色免费视频| 国产精品乱看| 91麻豆蜜桃| 9色在线视频| 亚洲制服丝袜在线| 日本黄色的视频| 国产精品xxx在线观看| 日韩在线视频导航| 日韩电影在线观看一区二区| 成人免费视频一区| 在线观看欧美激情| 成人在线黄色| 亚洲美女激情视频| 一级免费在线观看| 国产一区二区导航在线播放| 欧美一区二视频在线免费观看| 欧美三级理伦电影| 欧美三级在线视频| 先锋影音av在线| 99视频精品| 国产拍精品一二三| 超碰国产在线| 91黄色免费网站| 欧美老熟妇乱大交xxxxx| 亚洲黄色成人| 国产亚洲精品久久飘花| 欧美日韩色网| 日韩视频不卡中文| www.超碰在线观看| 精品亚洲porn| 黑人巨大国产9丨视频| 日韩一级二级| 亚洲精品国产美女| 久久视频免费在线观看| 国产一区二区三区国产| 福利网在线观看| 日日夜夜亚洲| 欧美超级免费视 在线| 国产精品爽爽久久久久久| 亚洲图片你懂的| 人人爽人人爽av| 中文精品电影| 99久久一区三区四区免费| 尤物视频在线看| 欧美视频日韩视频在线观看| 超碰97av在线| 精品一区二区av| 亚洲国产一区二区三区在线播| 成人交换视频| 一区二区欧美久久| 中文字幕黄色av| 国产精品天干天干在观线| 精品999在线| 亚洲啊v在线观看| 国产欧美精品日韩| 91香蕉在线观看| 亚洲国产精品久久久久秋霞不卡| 一级免费在线观看| 国产欧美日韩另类视频免费观看| 日日噜噜夜夜狠狠| 欧美极品一区二区三区| 国产精品播放| 向日葵视频成人app网址| 日韩视频欧美视频| 99久久精品免费看国产交换| 亚洲午夜羞羞片| 国产av自拍一区| 麻豆国产精品一区二区三区 | 人妻 丝袜美腿 中文字幕| 国产精品v日韩精品v欧美精品网站| 成人字幕网zmw| 福利影院在线看| 在线精品国产成人综合| 国产强伦人妻毛片| 岛国av一区二区三区| 在线观看日本黄色| 国产精品小仙女| 91丨porny丨探花| 久久不见久久见国语| 97婷婷大伊香蕉精品视频| 欧美日韩在线中文字幕| 欧美无人高清视频在线观看| 久久网一区二区| 国产清纯美女被跳蛋高潮一区二区久久w | av手机在线观看| 亚洲天堂av女优| 国产高潮在线观看| 一区二区三区精品在线| 久久久久国产精品区片区无码| 日韩vs国产vs欧美| 国产在线精品一区| 24小时成人在线视频| 欧美性视频精品| 国产福利片在线| 亚洲成色777777在线观看影院| 中文字幕乱码在线观看| 亚洲精品国产成人久久av盗摄 | 久久久久电影| 日本一区二区三区视频在线观看| 无人区乱码一区二区三区| 久久久女人电视剧免费播放下载| 97视频在线观看网站| 亚洲精品第一页| 国产黄色一级大片| 欧美日韩久久一区二区| 亚洲无码精品一区二区三区| 亚洲成av人在线观看| 岛国精品一区二区三区| 国模娜娜一区二区三区| 国产极品尤物在线| 韩日精品在线| 免费看日b视频| 999视频精品| 视频一区不卡| 国产探花一区二区| 91精品黄色| 久久丁香四色| 国产又爽又黄的激情精品视频| 欧美成人资源| 18一19gay欧美视频网站| 国产美女情趣调教h一区二区| 久久综合电影一区| 裸体xxxx视频在线| 亚洲乱码一区二区| 日本福利午夜视频在线| 精品中文字幕久久久久久| www.四虎在线观看| 日韩欧美国产麻豆| 在线观看免费高清视频| 欧美视频一区二区三区四区| 中文字幕在线视频第一页| 91成人免费电影| 国产免费a视频| 91久久精品一区二区| 四虎影院在线免费播放| 欧美视频完全免费看| 中文字幕一区二区三区四区免费看| 日本高清不卡视频| 国产一区二区视频免费| 亚洲免费伊人电影| 老司机成人免费视频| 中文字幕一区二区三区蜜月| 女人18毛片毛片毛片毛片区二| 亚洲人成精品久久久久久 | 日韩欧美国产视频| 69国产精品视频免费观看| 色8久久人人97超碰香蕉987| 久草视频在线免费| 欧美视频日韩视频在线观看| 国产精品视频在线观看免费| 精品伦理精品一区| 国产综合无码一区二区色蜜蜜| 亚洲国产精品小视频| 免费激情视频网站| 亚洲欧洲日产国产网站| a天堂中文在线88| 中文字幕av日韩| 国产精品久久麻豆| 欧美日本啪啪无遮挡网站| 成人黄色动漫| 欧美综合一区第一页| 999国产精品亚洲77777| 99久久国产免费免费| 欧美黄色网视频| 午夜精品美女久久久久av福利 | 国产在线播放观看| 99国产一区| 成人网站免费观看入口| 日韩成人免费看| 日本一本在线视频| 成人国产精品免费网站| 手机看片日韩av| 亚洲久草在线视频| 亚洲欧美偷拍一区| 欧美一二三四区在线| 手机看片1024日韩| 日韩在线观看高清| 国产亚洲成av人片在线观看| 国产精品麻豆va在线播放| 韩国三级大全久久网站| 欧美不卡三区| 欧美hd在线| 欧美韩国日本在线| 国产精品自在在线| 中文字幕免费视频| 亚洲大片免费看| 国产精品久久久久久久久毛片 | 亚洲一卡二卡区| 一本色道久久精品| www.亚洲自拍| 国产mv日韩mv欧美| 超碰人人干人人| 日韩欧美一区二区在线| 国产美女无遮挡永久免费| 日韩精品久久久久久久玫瑰园| 九色porny在线| 高清在线视频日韩欧美| 精品176极品一区| 久久综合九色99| 亚洲欧美一区在线| 日本黄xxxxxxxxx100| 久久精品观看| 免费看91视频| 久久久亚洲精品石原莉奈| 永久久久久久久| 日韩欧美国产激情| 手机看片福利在线观看| 欧美激情精品久久久久久蜜臀| 小黄鸭精品aⅴ导航网站入口| 99精品国产高清在线观看| blacked蜜桃精品一区| 久久久噜噜噜www成人网| aaa国产一区| 国产一级性生活| 精品日韩欧美在线| bestiality新另类大全| 日韩女优在线播放| 国产毛片久久久| www.欧美黄色| 国产不卡视频在线播放| 精品丰满少妇一区二区三区| 欧美日韩国产一区二区| 手机看片1024国产| 2023亚洲男人天堂| 亚洲另类av| 国产成人亚洲精品无码h在线| 91在线porny国产在线看| 国产无码精品在线观看| 欧美日韩一区二区在线观看| 成年女人的天堂在线| 国产精品久久久| 精品视频99| 不卡av免费在线| 国产精品久久久久久亚洲伦| 国产精品尤物视频| 中文字幕亚洲第一| 91综合国产| 中文字幕中文字幕99| 国产一区久久久| 国产中年熟女高潮大集合| 在线免费视频一区二区| 在线免费黄色| 亚洲一区久久久| 亚洲国产高清一区二区三区| 欧美xxxx×黑人性爽| 欧美性猛交xxxx免费看漫画| 高清毛片在线看| 国产精品黄色av| 日韩精品久久| 手机av在线网| 中文字幕欧美激情| 国产又大又长又粗| 欧美激情一级二级| 亚洲香蕉视频| 日本黄色的视频| 亚洲va韩国va欧美va| 欧美zozo| 国产日韩欧美黄色| 一区在线免费观看| 亚洲码无人客一区二区三区| 欧美日韩一区二区三区视频| 麻豆av在线导航| 91在线中文字幕| 午夜亚洲性色视频| 久久精品一区二区三区四区五区 | 国产精品久久久久影院老司| 91国内精品久久久| 久久久免费观看视频| 欧美精品系列| 韩国一区二区三区四区| 婷婷开心久久网| 无遮挡动作视频在线观看免费入口| 国产精品久久久久77777| 这里只有精品在线| 成人在线一级片| 日韩一级欧美一级| 黑人精品一区| 国产a级片免费看| 国产成人一级电影| 久久综合成人网| 一本大道久久加勒比香蕉| 韩国三级成人在线| 午夜激情福利在线| 欧美日韩国产综合视频在线观看中文 | 国产在线综合网| 中文字幕久久亚洲|