国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Flink的實(shí)時(shí)數(shù)據(jù)集成與ETL

這篇具有很好參考價(jià)值的文章主要介紹了Flink的實(shí)時(shí)數(shù)據(jù)集成與ETL。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.背景介紹

1. 背景介紹

Apache Flink 是一個(gè)流處理框架,用于實(shí)時(shí)數(shù)據(jù)處理和分析。它支持大規(guī)模數(shù)據(jù)流處理,具有高吞吐量和低延遲。Flink 的 ETL(Extract、Transform、Load)功能可以用于實(shí)時(shí)數(shù)據(jù)集成,將數(shù)據(jù)從不同來源提取、轉(zhuǎn)換并加載到目標(biāo)系統(tǒng)。在本文中,我們將深入探討 Flink 的實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能,揭示其核心概念、算法原理和最佳實(shí)踐。

2. 核心概念與聯(lián)系

在 Flink 中,實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能主要包括以下幾個(gè)核心概念:

  • 數(shù)據(jù)源(Source):數(shù)據(jù)源是 Flink 流處理應(yīng)用程序中的起點(diǎn),用于從不同來源提取數(shù)據(jù)。常見的數(shù)據(jù)源包括 Kafka、Flume、TCP socket 等。
  • 數(shù)據(jù)接收器(Sink):數(shù)據(jù)接收器是 Flink 流處理應(yīng)用程序中的終點(diǎn),用于將處理后的數(shù)據(jù)加載到目標(biāo)系統(tǒng)。常見的數(shù)據(jù)接收器包括 HDFS、Elasticsearch、Kafka 等。
  • 數(shù)據(jù)流(Stream):數(shù)據(jù)流是 Flink 流處理應(yīng)用程序中的主要數(shù)據(jù)結(jié)構(gòu),用于表示從數(shù)據(jù)源提取到數(shù)據(jù)接收器的數(shù)據(jù)。數(shù)據(jù)流可以被視為一系列時(shí)間有序的數(shù)據(jù)記錄。
  • 數(shù)據(jù)轉(zhuǎn)換(Transformation):數(shù)據(jù)轉(zhuǎn)換是 Flink 流處理應(yīng)用程序中的核心功能,用于對(duì)數(shù)據(jù)流進(jìn)行各種操作,如過濾、聚合、窗口操作等。Flink 提供了豐富的數(shù)據(jù)轉(zhuǎn)換操作,如 map()、filter()、reduce() 等。

在 Flink 的實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能中,這些核心概念之間存在以下聯(lián)系:

  • 數(shù)據(jù)源 提供數(shù)據(jù),是實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能的起點(diǎn)。
  • 數(shù)據(jù)流 是數(shù)據(jù)源和數(shù)據(jù)接收器之間的橋梁,用于傳輸和處理數(shù)據(jù)。
  • 數(shù)據(jù)轉(zhuǎn)換 是在數(shù)據(jù)流中對(duì)數(shù)據(jù)進(jìn)行各種操作,以滿足實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能的需求。
  • 數(shù)據(jù)接收器 接收處理后的數(shù)據(jù),是實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能的終點(diǎn)。

3. 核心算法原理和具體操作步驟以及數(shù)學(xué)模型公式詳細(xì)講解

Flink 的實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能主要基于數(shù)據(jù)流計(jì)算模型,其核心算法原理如下:

  1. 數(shù)據(jù)分區(qū)(Partitioning):Flink 將數(shù)據(jù)源的數(shù)據(jù)劃分為多個(gè)分區(qū),每個(gè)分區(qū)對(duì)應(yīng)一個(gè)或多個(gè)任務(wù)實(shí)例。這樣做的目的是為了實(shí)現(xiàn)數(shù)據(jù)的并行處理和負(fù)載均衡。
  2. 數(shù)據(jù)流(Stream):Flink 將分區(qū)后的數(shù)據(jù)組織成數(shù)據(jù)流,數(shù)據(jù)流是一系列時(shí)間有序的數(shù)據(jù)記錄。數(shù)據(jù)流可以被視為一個(gè)有限或無(wú)限序列,用 $S = {s1, s2, ..., s_n}$ 表示。
  3. 數(shù)據(jù)轉(zhuǎn)換(Transformation):Flink 提供了豐富的數(shù)據(jù)轉(zhuǎn)換操作,如 map()、filter()reduce() 等。這些操作可以對(duì)數(shù)據(jù)流進(jìn)行各種操作,以滿足實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能的需求。
  4. 數(shù)據(jù)接收器(Sink):Flink 將處理后的數(shù)據(jù)加載到目標(biāo)系統(tǒng),這個(gè)過程稱為數(shù)據(jù)接收。數(shù)據(jù)接收器是 Flink 流處理應(yīng)用程序中的終點(diǎn)。

具體操作步驟如下:

  1. 定義數(shù)據(jù)源,如 Kafka、Flume、TCP socket 等。
  2. 定義數(shù)據(jù)接收器,如 HDFS、Elasticsearch、Kafka 等。
  3. 定義數(shù)據(jù)流,包括數(shù)據(jù)記錄的數(shù)據(jù)結(jié)構(gòu)和時(shí)間有序關(guān)系。
  4. 定義數(shù)據(jù)轉(zhuǎn)換操作,如 map()、filter()reduce() 等。
  5. 啟動(dòng) Flink 流處理應(yīng)用程序,實(shí)現(xiàn)數(shù)據(jù)的提取、轉(zhuǎn)換和加載。

數(shù)學(xué)模型公式詳細(xì)講解:

  • 數(shù)據(jù)分區(qū)

$$ P(S) = {p1, p2, ..., p_n} $$

其中,$P(S)$ 表示數(shù)據(jù)分區(qū),$p_i$ 表示第 $i$ 個(gè)分區(qū)。

  • 數(shù)據(jù)流

$$ S = {s1, s2, ..., s_n} $$

其中,$S$ 表示數(shù)據(jù)流,$s_i$ 表示第 $i$ 個(gè)數(shù)據(jù)記錄。

  • 數(shù)據(jù)轉(zhuǎn)換

$$ T(S) = {t1, t2, ..., t_n} $$

其中,$T(S)$ 表示數(shù)據(jù)轉(zhuǎn)換后的數(shù)據(jù)流,$t_i$ 表示第 $i$ 個(gè)處理后的數(shù)據(jù)記錄。

  • 數(shù)據(jù)接收器

$$ R(T) = {r1, r2, ..., r_n} $$

其中,$R(T)$ 表示數(shù)據(jù)接收器,$r_i$ 表示第 $i$ 個(gè)加載到目標(biāo)系統(tǒng)的數(shù)據(jù)記錄。

4. 具體最佳實(shí)踐:代碼實(shí)例和詳細(xì)解釋說明

以下是一個(gè) Flink 的實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能的具體最佳實(shí)踐示例:

```python from pyflink.datastream import StreamExecutionEnvironment from pyflink.table import StreamTableEnvironment, DataTypes

定義數(shù)據(jù)源

datasource = ( StreamExecutionEnvironment.getexecutionenvironment() .addjars("path/to/your/flink-connector-kafka2.11-x.x.x.jar") .fromcollection([{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]) .key_by("name") )

定義數(shù)據(jù)接收器

datasink = StreamTableEnvironment.create(StreamExecutionEnvironment.getexecutionenvironment()) datasink.execute_sql(""" CREATE TABLE people (name STRING, age INT) WITH ( 'connector' = 'jdbc', 'url' = 'jdbc:mysql://localhost:3306/flink', 'table-name' = 'people', 'driver' = 'com.mysql.jdbc.Driver', 'username' = 'root', 'password' = 'password' ) """)

定義數(shù)據(jù)流

datastream = ( datasource .map(lambda record: {"name": record["name"], "age": record["age"] + 1}) .toappendstream(data_sink, "people") )

啟動(dòng) Flink 流處理應(yīng)用程序

data_stream.print() ```

在這個(gè)示例中,我們使用 Flink 的 Kafka 連接器作為數(shù)據(jù)源,從 Kafka 中提取數(shù)據(jù)。然后,我們使用 Flink 的 JDBC 連接器作為數(shù)據(jù)接收器,將處理后的數(shù)據(jù)加載到 MySQL 數(shù)據(jù)庫(kù)中。最后,我們使用 Flink 的 map() 操作對(duì)數(shù)據(jù)流進(jìn)行轉(zhuǎn)換,將每個(gè)記錄的 age 字段增加 1。

5. 實(shí)際應(yīng)用場(chǎng)景

Flink 的實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能可以應(yīng)用于以下場(chǎng)景:

  • 實(shí)時(shí)數(shù)據(jù)處理:Flink 可以實(shí)時(shí)處理大規(guī)模數(shù)據(jù),如日志分析、實(shí)時(shí)監(jiān)控、實(shí)時(shí)報(bào)警等。
  • 數(shù)據(jù)倉(cāng)庫(kù) ETL:Flink 可以用于實(shí)時(shí) ETL,將數(shù)據(jù)從不同來源提取、轉(zhuǎn)換并加載到數(shù)據(jù)倉(cāng)庫(kù)中,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步和更新。
  • 數(shù)據(jù)湖 ETL:Flink 可以用于實(shí)時(shí) ETL,將數(shù)據(jù)從不同來源提取、轉(zhuǎn)換并加載到數(shù)據(jù)湖中,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)分析和查詢。
  • 實(shí)時(shí)數(shù)據(jù)流分析:Flink 可以實(shí)時(shí)分析大規(guī)模數(shù)據(jù)流,如實(shí)時(shí)計(jì)算、實(shí)時(shí)聚合、實(shí)時(shí)預(yù)測(cè)等。

6. 工具和資源推薦

以下是一些 Flink 的實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能相關(guān)的工具和資源推薦:

  • Flink 官方文檔:https://flink.apache.org/docs/stable/
  • Flink 官方 GitHub 倉(cāng)庫(kù):https://github.com/apache/flink
  • Flink 官方社區(qū):https://flink.apache.org/community.html
  • Flink 官方教程:https://flink.apache.org/docs/stable/quickstart.html
  • Flink 官方示例:https://flink.apache.org/docs/stable/examples.html
  • Flink 官方博客:https://flink.apache.org/blog.html
  • Flink 社區(qū)博客:https://flink.apache.org/community.html#blogs
  • Flink 中文社區(qū):https://flink-cn.org/
  • Flink 中文文檔:https://flink-cn.org/docs/stable/
  • Flink 中文教程:https://flink-cn.org/tutorials/stable/
  • Flink 中文示例:https://flink-cn.org/examples/stable/

7. 總結(jié):未來發(fā)展趨勢(shì)與挑戰(zhàn)

Flink 的實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能已經(jīng)得到了廣泛應(yīng)用,但仍然存在一些挑戰(zhàn):

  • 性能優(yōu)化:Flink 需要進(jìn)一步優(yōu)化性能,以滿足大規(guī)模數(shù)據(jù)流處理的需求。
  • 容錯(cuò)性:Flink 需要提高容錯(cuò)性,以應(yīng)對(duì)故障和異常情況。
  • 易用性:Flink 需要提高易用性,以便更多開發(fā)者和數(shù)據(jù)工程師使用。
  • 生態(tài)系統(tǒng):Flink 需要擴(kuò)展生態(tài)系統(tǒng),以支持更多數(shù)據(jù)源和數(shù)據(jù)接收器。

未來,F(xiàn)link 的實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能將繼續(xù)發(fā)展,涉及到更多領(lǐng)域和場(chǎng)景,如大數(shù)據(jù)分析、人工智能、物聯(lián)網(wǎng)等。

8. 附錄:常見問題與解答

以下是一些 Flink 的實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能常見問題與解答:

Q1:Flink 如何處理數(shù)據(jù)分區(qū)?

A:Flink 使用分區(qū)器(Partitioner)來處理數(shù)據(jù)分區(qū)。分區(qū)器將數(shù)據(jù)劃分為多個(gè)分區(qū),每個(gè)分區(qū)對(duì)應(yīng)一個(gè)或多個(gè)任務(wù)實(shí)例。這樣做的目的是為了實(shí)現(xiàn)數(shù)據(jù)的并行處理和負(fù)載均衡。

Q2:Flink 如何處理數(shù)據(jù)流?

A:Flink 使用數(shù)據(jù)流計(jì)算模型來處理數(shù)據(jù)流。數(shù)據(jù)流是一系列時(shí)間有序的數(shù)據(jù)記錄。Flink 提供了豐富的數(shù)據(jù)轉(zhuǎn)換操作,如 map()filter()、reduce() 等,可以對(duì)數(shù)據(jù)流進(jìn)行各種操作,以滿足實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能的需求。

Q3:Flink 如何處理故障和異常?

A:Flink 具有自動(dòng)故障檢測(cè)和恢復(fù)功能。當(dāng)發(fā)生故障時(shí),F(xiàn)link 會(huì)自動(dòng)檢測(cè)并恢復(fù),以確保數(shù)據(jù)流的可靠性和持續(xù)性。

Q4:Flink 如何擴(kuò)展生態(tài)系統(tǒng)?

A:Flink 可以通過開發(fā)連接器(Connector)來擴(kuò)展生態(tài)系統(tǒng)。連接器負(fù)責(zé)將數(shù)據(jù)從不同來源提取并加載到 Flink 流處理應(yīng)用程序中。Flink 提供了連接器開發(fā)者指南,幫助開發(fā)者開發(fā)自定義連接器。

Q5:Flink 如何優(yōu)化性能?

A:Flink 可以通過以下方法優(yōu)化性能:

  • 使用合適的數(shù)據(jù)結(jié)構(gòu)和算法。
  • 調(diào)整并行度和任務(wù)并發(fā)度。
  • 使用緩存和狀態(tài)管理。
  • 優(yōu)化網(wǎng)絡(luò)傳輸和序列化。
  • 使用 Flink 的性能調(diào)優(yōu)指南。

以上就是 Flink 的實(shí)時(shí)數(shù)據(jù)集成與 ETL 功能的一篇專業(yè)的技術(shù)博客文章。希望對(duì)您有所幫助。文章來源地址http://www.zghlxwxcb.cn/news/detail-826863.html

到了這里,關(guān)于Flink的實(shí)時(shí)數(shù)據(jù)集成與ETL的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 大數(shù)據(jù)_面試_ETL組件常見問題_spark&flink

    問題列表 回答 spark與flink的主要區(qū)別 flink cdc如何確保冪等與一致性 Flink SQL CDC 實(shí)踐以及一致性分析-阿里云開發(fā)者社區(qū) spark 3.0 AQE動(dòng)態(tài)優(yōu)化 hbase memorystore blockcache sparksql如何調(diào)優(yōu) 通過webui定位那個(gè)表以及jobid,jobid找對(duì)應(yīng)的執(zhí)行計(jì)劃 hdfs的常見的壓縮算法 hbase的數(shù)據(jù)傾斜 spark數(shù)據(jù)處

    2024年02月16日
    瀏覽(25)
  • 【大數(shù)據(jù)】基于 Flink CDC 構(gòu)建 MySQL 和 Postgres 的 Streaming ETL

    【大數(shù)據(jù)】基于 Flink CDC 構(gòu)建 MySQL 和 Postgres 的 Streaming ETL

    這篇教程將展示如何基于 Flink CDC 快速構(gòu)建 MySQL 和 Postgres 的流式 ETL。本教程的演示都將在 Flink SQL CLI 中進(jìn)行,只涉及 SQL,無(wú)需一行 Java / Scala 代碼,也無(wú)需安裝 IDE。 假設(shè)我們正在經(jīng)營(yíng)電子商務(wù)業(yè)務(wù),商品和訂單的數(shù)據(jù)存儲(chǔ)在 MySQL 中,訂單對(duì)應(yīng)的物流信息存儲(chǔ)在 Postgres 中。

    2024年02月03日
    瀏覽(16)
  • 數(shù)據(jù)倉(cāng)庫(kù)與ETL:數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)和ETL流程

    數(shù)據(jù)倉(cāng)庫(kù)與ETL:數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)和ETL流程 數(shù)據(jù)倉(cāng)庫(kù)是一種用于存儲(chǔ)、管理和分析大量歷史數(shù)據(jù)的系統(tǒng)。它通常用于企業(yè)、組織和政府等機(jī)構(gòu),以支持決策過程。數(shù)據(jù)倉(cāng)庫(kù)的核心是ETL(Extract、Transform、Load)流程,它包括數(shù)據(jù)提取、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)加載三個(gè)階段。本文將深入探討數(shù)

    2024年03月08日
    瀏覽(19)
  • 基于 Flink CDC 構(gòu)建 MySQL 和 Postgres 的 Streaming ETL

    基于 Flink CDC 構(gòu)建 MySQL 和 Postgres 的 Streaming ETL

    官方網(wǎng)址:https://ververica.github.io/flink-cdc-connectors/release-2.3/content/%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B/mysql-postgres-tutorial-zh.html官方教程有些坑,經(jīng)過自己實(shí)測(cè),記錄個(gè)筆記。 服務(wù)器環(huán)境: VM虛擬機(jī):CentOS7.9 docker版本:Docker version 24.0.5, build ced0996 docker compose 版本:2.19 jdk 1.8 虛擬機(jī)IP:

    2024年02月09日
    瀏覽(22)
  • 基于 Flink CDC 構(gòu)建 MySQL 的 Streaming ETL to MySQL

    基于 Flink CDC 構(gòu)建 MySQL 的 Streaming ETL to MySQL

    CDC 的全稱是 Change Data Capture ,在廣義的概念上,只要是能捕獲數(shù)據(jù)變更的技術(shù),我們都可以稱之為 CDC 。目前通常描述的 CDC 技術(shù)主要面向數(shù)據(jù)庫(kù)的變更,是一種用于捕獲數(shù)據(jù)庫(kù)中數(shù)據(jù)變更的技術(shù)。CDC 技術(shù)的應(yīng)用場(chǎng)景非常廣泛: ? 數(shù)據(jù)同步:用于備份,容災(zāi); ? 數(shù)據(jù)分發(fā):

    2024年02月03日
    瀏覽(26)
  • 大數(shù)據(jù)掃盲(1): 數(shù)據(jù)倉(cāng)庫(kù)與ETL的關(guān)系及ETL工具推薦

    大數(shù)據(jù)掃盲(1): 數(shù)據(jù)倉(cāng)庫(kù)與ETL的關(guān)系及ETL工具推薦

    在數(shù)字化時(shí)代,數(shù)據(jù)成為了企業(yè)決策的關(guān)鍵支持。然而,隨著數(shù)據(jù)不斷增長(zhǎng),有效地管理和利用這些數(shù)據(jù)變得至關(guān)重要。數(shù)據(jù)倉(cāng)庫(kù)和ETL工具作為數(shù)據(jù)管理和分析的核心,將幫助企業(yè)從龐雜的數(shù)據(jù)中提取有價(jià)值信息。 ETL代表“Extract, Transform, Load”,是一種用于數(shù)據(jù)集成和轉(zhuǎn)換的

    2024年02月13日
    瀏覽(27)
  • ETL詳解--數(shù)據(jù)倉(cāng)庫(kù)技術(shù)

    ? 一、ETL簡(jiǎn)介 ETL ,是英文Extract-Transform-Load的縮寫,用來描述將數(shù)據(jù)從來源端經(jīng)過抽?。╡xtract)、轉(zhuǎn)換(transform)、加載(load)至目的端的過程,是數(shù)據(jù)倉(cāng)庫(kù)的生命線。它是一種數(shù)據(jù)處理過程,用于從不同的數(shù)據(jù)源中提取數(shù)據(jù)、對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換和清洗,并將處理后的數(shù)據(jù)加

    2024年02月02日
    瀏覽(18)
  • 數(shù)據(jù)倉(cāng)庫(kù)的ELT/ETL

    數(shù)據(jù)倉(cāng)庫(kù)的ELT/ETL

    ETL 和 ELT 有很多共同點(diǎn),從本質(zhì)上講,每種集成方法都可以將數(shù)據(jù)從源端抽取到數(shù)據(jù)倉(cāng)庫(kù)中,兩者的區(qū)別在于數(shù)據(jù)在哪里進(jìn)行轉(zhuǎn)換。 ETL – 抽取、轉(zhuǎn)換、加載 從不同的數(shù)據(jù)源抽取信息,將其轉(zhuǎn)換為根據(jù)業(yè)務(wù)定義的格式,然后將其加載到其他數(shù)據(jù)庫(kù)或數(shù)據(jù)倉(cāng)庫(kù)中。另一種 ETL 集

    2024年04月16日
    瀏覽(32)
  • 數(shù)據(jù)倉(cāng)庫(kù)—ETL工具與技術(shù):數(shù)據(jù)倉(cāng)庫(kù)的堅(jiān)實(shí)基石

    作為一名長(zhǎng)期從事數(shù)據(jù)倉(cāng)庫(kù)領(lǐng)域的專業(yè)人士,我深知ETL(Extract, Transform, Load)工具和技術(shù)在構(gòu)建和維護(hù)數(shù)據(jù)倉(cāng)庫(kù)中的核心作用。ETL不僅是數(shù)據(jù)流動(dòng)的橋梁,更是確保數(shù)據(jù)質(zhì)量和支持業(yè)務(wù)智能決策的關(guān)鍵環(huán)節(jié)。在這篇文章中,我將分享對(duì)ETL工具和技術(shù)的深入理解,以及它們?cè)趯?shí)

    2024年04月13日
    瀏覽(14)
  • ETL簡(jiǎn)介:數(shù)據(jù)集成與應(yīng)用

    在當(dāng)今大數(shù)據(jù)時(shí)代,組織和企業(yè)需要處理和分析龐大的數(shù)據(jù)量。ETL(Extract, Transform, Load)是一種重要的數(shù)據(jù)集成和處理方法,它在數(shù)據(jù)管理和決策支持中起著關(guān)鍵作用。本文將介紹ETL的基本概念、作用和關(guān)鍵組成部分,以幫助讀者了解ETL的重要性和應(yīng)用領(lǐng)域。 ETL是指數(shù)據(jù)提取

    2024年02月12日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包