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

什么是 doris,為什么幾乎國內(nèi)大廠都會使用它

這篇具有很好參考價值的文章主要介紹了什么是 doris,為什么幾乎國內(nèi)大廠都會使用它。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

轉(zhuǎn)載至我的博客 https://www.infrastack.cn ,公眾號:架構(gòu)成長指南

今天給各位分享一個非常牛的實(shí)時分析型數(shù)據(jù)庫Apache Doris,幾乎國內(nèi)的一二線大廠都在使用它做數(shù)據(jù)分析,如下圖,這只是一小部分

同時我司也在使用它,他目前支撐了我們億級業(yè)務(wù)數(shù)據(jù)的多維實(shí)時查詢分析,而且性能很不錯

Doris 介紹

官方地址:https://doris.apache.org/

Apache Doris源于百度2008年啟動的產(chǎn)品Palo在2018年捐獻(xiàn)給Apache基金會,是一個基于 MPP 架構(gòu)的高性能、實(shí)時的分析型數(shù)據(jù)庫,他非常簡單易用,而且性能還不錯,僅需亞秒級響應(yīng)時間即可獲得查詢結(jié)果,不僅支持高并發(fā)的查詢場景,也可以支持高吞吐的復(fù)雜分析場景,比如你可以基于它做用戶行為分析、日志檢索平臺、用戶畫像分析、訂單分析等應(yīng)用。

Doris的架構(gòu)非常簡潔,易于運(yùn)維,并且可以支持10PB以上的超大數(shù)據(jù)集

特性

這里特性很多,但是如果沒接觸過大數(shù)據(jù)的同學(xué),可能不是特別了解,但是注意這個特性,支持SQL 語言,兼容MySQL,比如:通過Mybatis 寫好 sql,就可以調(diào)用查詢,而且他能支持億級數(shù)據(jù)檢索響應(yīng),以前還是想分庫分表呢,現(xiàn)在有了它可以在考慮一下它了,看分庫分表有必要嗎,但是這里要注意下,它是一個 OLAP 引擎與 OLTP還是有點(diǎn)區(qū)別,如果業(yè)務(wù)場景,新增多后期更新少,同時查詢場景多,那么可以在 mysql 中保存一段時間的熱點(diǎn)數(shù)據(jù),來進(jìn)行相關(guān)業(yè)務(wù)操作,而報表查詢都走Doris

這里可能有些人員不懂什么是 OLAP,下面是一個OLAP與OLTP對比圖

架構(gòu)

Doirs只有兩個主進(jìn)程模塊。一個是 Frontend(FE),另一個是Backend(BE)

Frontend(FE)

主要負(fù)責(zé)用戶請求的接入、查詢計劃的解析、元數(shù)據(jù)的存儲和集群管理相關(guān)工作, Doris采用Paxos協(xié)議以及Memory + Checkpoint + Journal的機(jī)制來確保元數(shù)據(jù)的高性能及高可靠。

Leader、follower和 observer它們?nèi)齻€構(gòu)成一個可靠的服務(wù),保證單節(jié)點(diǎn)宕機(jī)的情況下,元數(shù)據(jù)能夠?qū)崟r地在線恢復(fù),而不影響整個服務(wù),與zookeeper角色一樣。

Backend(BE)

BE主要負(fù)責(zé)數(shù)據(jù)存儲、查詢計劃的執(zhí)行。

  • BE管理tablet副本, tablet是table經(jīng)過分區(qū)分桶形成的子表, 采用列式存儲。

  • BE受FE指導(dǎo), 創(chuàng)建或刪除子表。

  • BE接收FE分發(fā)的物理執(zhí)行計劃與其他BE共同協(xié)作完成執(zhí)行。

  • BE讀本地的列存儲引擎, 獲取數(shù)據(jù), 通過索引和謂詞下沉快速過濾數(shù)據(jù)。

  • BE后臺執(zhí)行compact任務(wù), 減少查詢時的讀放大。

以上FE和 BE支持動態(tài)彈性擴(kuò)容,而且在擴(kuò)容過程中對應(yīng)用無影響,同時Doris 不依賴zk、hdfs等,所以架構(gòu)很簡單,這種架構(gòu)設(shè)計極大的簡化了運(yùn)維成本,其實(shí)一個好的產(chǎn)品就應(yīng)該這樣,把復(fù)雜留給自己,把簡單留給用戶

OLAP對比

在我們解決大數(shù)據(jù)查詢分析時,也調(diào)研了比較知名的一些產(chǎn)品,下面是一個對比

TIDB

TIDB 是一個非常優(yōu)秀的國產(chǎn)分布式數(shù)據(jù)庫,他的主要優(yōu)勢OLTP處理上,但是也支持OLAP,但是在我們調(diào)研過程中,抱著使用一個TIDB 完全替代掉Mysql 想法,我們進(jìn)行了測試,我們使用的版本是v5.3.3,但是在測試過程中效果不理想,因?yàn)?TIDB 解析引擎會對SQL進(jìn)行分析,來決定走 OLTP 還是OLAP,比如我們期望走OLAP 但是走了OLTP導(dǎo)致性能有所降低

ClickHouse

提到 Doris 不得不提ClickHouse,CK是由俄羅斯IT公司Yandex為Yandex.Metrica網(wǎng)絡(luò)分析服務(wù)開發(fā)的開發(fā)的實(shí)時數(shù)倉,以性能著稱,但是經(jīng)過測試,與 Doris在不同場景各有優(yōu)劣, 但是它的架構(gòu)復(fù)雜、運(yùn)維成本高,同時對 sql 語法兼容性沒有Doris好,因此沒有選擇,不過國內(nèi)也有不少公司在使用

Doris

運(yùn)維成本低、兼容Mysql 語法、架構(gòu)足夠簡單、社區(qū)支持性好(非?;钴S),同時經(jīng)過百度內(nèi)部長達(dá)10 多年的大規(guī)模使用,成熟度不容置疑,沒有理由不選它

性能測試報告

Doris 版本:0.15.0,目前最新版本是:2.03

  • 1 FE + 3 BE 獨(dú)立部署
  • CPU:8core 16G Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
  • 內(nèi)存:16GB
  • 硬盤:1塊機(jī)械硬盤
  • 網(wǎng)卡:萬兆網(wǎng)卡

測試1

6億數(shù)據(jù)進(jìn)行多表查詢,響應(yīng)1.98s

SELECT SUM(lo_revenue), d_year, p_brand FROM lineorder, date, part, supplier WHERE lo_orderdate = d_datekey AND lo_partkey = p_partkey AND lo_suppkey = s_suppkey AND p_category = 'MFGR#12' AND s_region = 'AMERICA' GROUP BY d_year, p_brand ORDER BY d_year, p_brand;

測試2

ods_test_mysql_test_record_s數(shù)據(jù)量:148399619,67 個字段

ods_test_mysql_test_barrier_s數(shù)據(jù)量:1385,12個字段

執(zhí)行以下 sql,耗時:0.277s

SELECT
    i.a1 AS p_code,
    IFNULL(IFNULL(i.a56, b.a2), '0') AS gateway_no,
    1 AS inout_type,
    DATE_FORMAT(i.a2, '%Y-%m-%d') AS report_date,
    DATE_FORMAT(i.a2, '%Y') AS report_year,
    DATE_FORMAT(i.a2, '%c') AS report_month,
    1 AS total_num,
    (CASE WHEN i.a6 = 1 THEN 1 ELSE 0 END) AS big_car_num,
    (CASE WHEN i.a6 != 1 THEN 1 ELSE 0 END) AS small_car_num,
    (CASE WHEN i.a44 REGEXP '[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)A-Z]{1}[A-Z]{1}(([0-9]{5}[DABCEFGHJK])|([DABCEFGHJK][A-HJ-NP-Z0-9][0-9]{4}))$' THEN 1 ELSE 0 END) AS new_power_car_num,
    (CASE WHEN i.a61 = 2 OR i.a61 = 3 THEN 1 ELSE 0 END) AS reserve_num,
    (CASE WHEN i.a61 = 1 THEN 1 ELSE 0 END) AS white_list_num,
    (CASE WHEN i.a6 = 1 AND (i.a61 = 2 OR i.a61 = 3) THEN 1 ELSE 0 END) AS big_car_reserve_num,
    (CASE WHEN i.a6 = 1 AND i.a61 = 1 THEN 1 ELSE 0 END) AS big_car_white_list_num,
    (CASE WHEN i.a6 != 1 AND (i.a61 = 2 OR i.a61 = 3) THEN 1 ELSE 0 END) AS small_car_reserve_num,
    (CASE WHEN i.a6 != 1 AND i.a61 = 1 THEN 1 ELSE 0 END) AS small_car_white_list_num,
    (CASE WHEN (i.a61 = 2 OR i.a61 = 3) AND i.a44 REGEXP '[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)A-Z]{1}[A-Z]{1}(([0-9]{5}[DABCEFGHJK])|([DABCEFGHJK][A-HJ-NP-Z0-9][0-9]{4}))$' THEN 1 ELSE 0 END) AS new_power_reserve_num,
    (CASE WHEN i.a61 = 1 AND i.a44 REGEXP '[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)A-Z]{1}[A-Z]{1}(([0-9]{5}[DABCEFGHJK])|([DABCEFGHJK][A-HJ-NP-Z0-9][0-9]{4}))$' THEN 1 ELSE 0 END) AS new_power_white_list_num,
    CURRENT_TIMESTAMP() AS update_time
FROM
    ods_test_mysql_test_record_s i
    LEFT JOIN ods_test_mysql_test_barrier_s b ON i.a22 = b.a1
WHERE
    i.a67 = 0
    AND i.a1 = '100280023213'
    AND i.a2 < '2021-11-20 00:00:00'
    AND (
        i.a2 BETWEEN DATE_FORMAT(i.a2, '%Y-%m-%d 00:00:00') AND FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_FORMAT(i.a2, '%Y-%m-%d 00:00:00')) + 90000, '%Y-%m-%d %H:%i:%s')
    )
LIMIT 1000;

測試3

只查詢小于2022-12-30 00:00:00數(shù)據(jù),響應(yīng)時間:0.241s

SELECT
    i.a1 AS p_code,
    IFNULL(IFNULL(i.a56, b.a2), '0') AS gateway_no,
    1 AS inout_type,
    DATE_FORMAT(i.a2, '%Y-%m-%d') AS report_date,
    DATE_FORMAT(i.a2, '%Y') AS report_year,
    DATE_FORMAT(i.a2, '%c') AS report_month,
    1 AS total_num,
    (CASE WHEN i.a6 = 1 THEN 1 ELSE 0 END) AS big_car_num,
    (CASE WHEN i.a6 != 1 THEN 1 ELSE 0 END) AS small_car_num,
    (CASE WHEN i.a44 REGEXP '[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)A-Z]{1}[A-Z]{1}(([0-9]{5}[DABCEFGHJK])|([DABCEFGHJK][A-HJ-NP-Z0-9][0-9]{4}))$' THEN 1 ELSE 0 END) AS new_power_car_num,
    (CASE WHEN i.a61 = 2 OR i.a61 = 3 THEN 1 ELSE 0 END) AS reserve_num,
    (CASE WHEN i.a61 = 1 THEN 1 ELSE 0 END) AS white_list_num,
    (CASE WHEN i.a6 = 1 AND (i.a61 = 2 OR i.a61 = 3) THEN 1 ELSE 0 END) AS big_car_reserve_num,
    (CASE WHEN i.a6 = 1 AND i.a61 = 1 THEN 1 ELSE 0 END) AS big_car_white_list_num,
    (CASE WHEN i.a6 != 1 AND (i.a61 = 2 OR i.a61 = 3) THEN 1 ELSE 0 END) AS small_car_reserve_num,
    (CASE WHEN i.a6 != 1 AND i.a61 = 1 THEN 1 ELSE 0 END) AS small_car_white_list_num,
    (CASE WHEN (i.a61 = 2 OR i.a61 = 3) AND i.a44 REGEXP '[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)A-Z]{1}[A-Z]{1}(([0-9]{5}[DABCEFGHJK])|([DABCEFGHJK][A-HJ-NP-Z0-9][0-9]{4}))$' THEN 1 ELSE 0 END) AS new_power_reserve_num,
    (CASE WHEN i.a61 = 1 AND i.a44 REGEXP '[京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領(lǐng)A-Z]{1}[A-Z]{1}(([0-9]{5}[DABCEFGHJK])|([DABCEFGHJK][A-HJ-NP-Z0-9][0-9]{4}))$' THEN 1 ELSE 0 END) AS new_power_white_list_num,
    CURRENT_TIMESTAMP() AS update_time
FROM
    ods_test_mysql_test_record_s i
    LEFT JOIN ods_test_mysql_test_barrier_s b ON i.a22 = b.a1
WHERE i.a2 < '2022-12-30 00:00:00' LIMIT 10000;

測試 4

最新官方性能測試報告:https://doris.apache.org/zh-CN/docs/benchmark/ssb/

高可用測試

如下圖FE3臺組建一個高可用集群,分別為:

  • 172.17.0.3 FOLLOWER
  • 172.17.0.4 FOLLOWER
  • 172.17.0.5 MASTER

下面對會對常見一些異常場景進(jìn)行測試驗(yàn)證,以下部分測試案例

MASTER下線測試

測試結(jié)果

成功,所有操作符合預(yù)期

測試過程

登錄172.17.0.5 服務(wù)器殺掉FE節(jié)點(diǎn)

查看FE節(jié)點(diǎn)狀態(tài)是否正常, 登錄172.17.0.3服務(wù)器查看狀態(tài),執(zhí)行以下命令

SHOW PROC '/frontends';

可以看到172.17.0.4成為了master,而172.17.0.5顯示已經(jīng)不在線了 Alive=false

執(zhí)行插入數(shù)據(jù)操作,可以看到執(zhí)行成功。

啟動172.17.0.5,查看是否能加入集群

 sh /root/fe/bin/start_fe.sh 172.17.0.3:9010 --daemon

通過日志可以看到啟動成功,并成為了FOLLOWER節(jié)點(diǎn)

修復(fù)缺失或損壞副本

測試結(jié)果

成功,所有操作符合預(yù)期

測試過程

1.執(zhí)行如下命令看到分區(qū)10099的副本損壞,需要對他進(jìn)行恢復(fù)創(chuàng)建空白副本

ADMIN SHOW REPLICA STATUS FROM table2 PARTITION (p201706, p201707,p201708);

2.登錄master fe

ADMIN SET FRONTEND CONFIG ("recover_with_empty_tablet" = "true");

3.查看數(shù)據(jù)副本狀態(tài)

ADMIN SHOW REPLICA STATUS FROM table2 PARTITION (p201706, p201707,p201708);

4.恢復(fù)設(shè)置

ADMIN SET FRONTEND CONFIG ("recover_with_empty_tablet" = "false");

系統(tǒng)Down機(jī)重啟副本測試

測試結(jié)果

成功,所有操作符合預(yù)期

測試過程

1.停止0.5服務(wù)

2.查詢副本狀態(tài)

ADMIN SHOW REPLICA STATUS FROM table4;

3.重啟服務(wù),副本狀態(tài)恢復(fù)正常

總結(jié)

以上介紹了Doris架構(gòu)、性能、故障恢復(fù)、動態(tài)彈性擴(kuò)容等特性,正因?yàn)檫@些特性,使不少大廠都在使用它,如果貴司有大數(shù)據(jù)處理需求,可以深入了解一下它,同時想深入了解 Doris,可以加我微信,拉你進(jìn)官方社區(qū)群

掃描下面的二維碼關(guān)注我們的微信公眾帳號,在微信公眾帳號中回復(fù)?加群?即可加入到我們的技術(shù)討論群里面共同學(xué)習(xí)。文章來源地址http://www.zghlxwxcb.cn/news/detail-818743.html

到了這里,關(guān)于什么是 doris,為什么幾乎國內(nèi)大廠都會使用它的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 開篇詞|為什么大廠都愛考動態(tài)規(guī)劃?

    開篇詞|為什么大廠都愛考動態(tài)規(guī)劃?

    算法對設(shè)計關(guān)鍵服務(wù)來說十分重要,它決定了系統(tǒng)的穩(wěn)定性、彈性以及可擴(kuò)展性。數(shù)據(jù)為媒,算法為介,而在極其重要的算法中,動態(tài)規(guī)劃其實(shí)占了很大的比重。 事實(shí)上,如果你平常關(guān)注大廠面試的話,你會發(fā)現(xiàn),但凡是研發(fā)崗位,無論是招聘初級還是高級工程師,大廠都傾

    2024年02月20日
    瀏覽(22)
  • 大廠領(lǐng)導(dǎo)為什么喜歡跨層與下屬聊天

    作為一個在大廠里面浸淫十幾年的loser,平時主要精力沒用在技術(shù)提升上,對于大廠的人情世故各類八卦倒是研究的透徹。 如果你細(xì)心觀察,會發(fā)現(xiàn)一些大的公司里面,領(lǐng)導(dǎo)喜歡跨層與下屬去溝通聊天,我待過幾家比較大的公司,這個現(xiàn)象還是比較普遍。 今天就擺一擺,那些

    2024年02月15日
    瀏覽(19)
  • Doris架構(gòu)包含哪些技術(shù)?為什么進(jìn)行技術(shù)整合?

    Doris架構(gòu)包含哪些技術(shù)?為什么進(jìn)行技術(shù)整合?

    Doris主要整合了Google Mesa(數(shù)據(jù)模型),Apache Impala(MPP Query Engine)和Apache ORCFile (存儲格式,編碼和壓縮)的技術(shù)。 為什么要將這三種技術(shù)整合? Mesa可以滿足我們許多存儲需求的需求,但是Mesa本身不提供SQL查詢引擎。 Impala是一個非常好的MPP SQL查詢引擎,但是缺少完美的分布式存儲引

    2024年02月11日
    瀏覽(29)
  • 一鍵繞過ID鎖激活,為什么很多人都會失敗?繞ID這一篇就夠了

    一鍵繞過ID鎖激活,為什么很多人都會失敗?繞ID這一篇就夠了

    最近陽了所以暫時斷更,你們也要注意身體,最好不要陽 現(xiàn)在繞ID的方法已經(jīng)非常完善,一個小白選手只要有設(shè)備就可以正常繞過ID, 總的來說繞ID分為兩個步驟:第一步是手機(jī)的越獄 ,這里只能是用checkra1n越獄(不是用愛思越獄,切記只能checkra1n,需準(zhǔn)備一臺Mac系統(tǒng)的電腦

    2024年01月15日
    瀏覽(111)
  • 大廠跟進(jìn)ChatGPT,為什么百度“文心一言”成色最好?【快評】

    大廠跟進(jìn)ChatGPT,為什么百度“文心一言”成色最好?【快評】

    作者 | 曾響鈴 文 |?響鈴說 趕ChatGPT熱度,百度3月初就要發(fā)布與ChatGPT類似的人工智能聊天機(jī)器人服務(wù)“文心一言”(英文名:ERNIE Bot),似乎無法提振資本市場對百度的信心。 2022年第四季度及全年未經(jīng)審計的財報發(fā)布后,百度的股價便出現(xiàn)了下行的走勢。一大緣由可能是市

    2024年01月18日
    瀏覽(25)
  • 云服務(wù)器那么安全穩(wěn)定,為什么大廠還要自建機(jī)房

    云服務(wù)器那么安全穩(wěn)定,為什么大廠還要自建機(jī)房

    一般來說選擇自建機(jī)房或者是云服務(wù)商要考慮的幾個問題 成本 安全性 管理 通常來說自建機(jī)房,需要自己考慮很多問題,比如 電費(fèi) 網(wǎng)絡(luò) Raid 可靠性 安全性 還要計算運(yùn)維的成本 似乎從哪個角度來說,自建機(jī)房都是不大劃算的。 但是為什么還有一些公司要自建機(jī)房呢? 首先

    2023年04月08日
    瀏覽(29)
  • 為什么Apache Doris適合做大數(shù)據(jù)的復(fù)雜計算,MySQL不適合?

    為什么Apache Doris適合做大數(shù)據(jù)的復(fù)雜計算,MySQL不適合?

    經(jīng)常有小伙伴發(fā)出這類直擊靈魂的疑問: Q:“為什么Apache Doris適合做大數(shù)據(jù)的復(fù)雜計算,MySQL不適合?” A:“因?yàn)锳pache Doris是OLAP,MySQL是OLTP??!” Q:“SO?” A:“因?yàn)橐粋€是AP場景的DB,一個是TP場景的DB??!” Q:“SO?” … [emm] 要不先來簡單概述下 OLAP和OLTP : OLAP (

    2024年01月19日
    瀏覽(23)
  • 個人為什么無法上架安卓 App 到國內(nèi)應(yīng)用商店?

    國內(nèi)市場做安卓還挺多的,應(yīng)用商店也挺多的。 有些人會問個人為什么無法上架安卓 App 到國內(nèi)應(yīng)用商店,這個應(yīng)該怎么辦? 為什么會存在這種情況?因?yàn)楝F(xiàn)在國內(nèi)的應(yīng)用是供大于求的,應(yīng)用商店你上傳了app之后,他們是要審核的,因?yàn)椴粚徍说脑捚脚_它也有很大的風(fēng)險。

    2024年02月11日
    瀏覽(19)
  • 阿里云為什么是國內(nèi)第一云?有哪些優(yōu)勢?

    阿里云為什么是國內(nèi)第一云?有哪些優(yōu)勢?

    為什么選擇阿里云?阿里云服務(wù)器有哪些優(yōu)勢?阿里云全球第三,國內(nèi)第一云,阿里云服務(wù)器網(wǎng)aliyunfuwuqi.com分享云服務(wù)器ECS在豐富ECS實(shí)例架構(gòu)、彈性靈活、穩(wěn)定可靠、便捷易用、安全保障和成本優(yōu)化多方面優(yōu)勢: 阿里云服務(wù)器ECS(Elastic Compute Service)是一種產(chǎn)品豐富、安全可

    2024年01月16日
    瀏覽(21)
  • SAP ERP與國內(nèi)ERP系統(tǒng)的對比,為什么建議選SAP

    SAP ERP與國內(nèi)ERP系統(tǒng)的對比,為什么建議選SAP

    德國制造業(yè)的領(lǐng)先是全世界有目共睹的,這是因?yàn)榈聡圃鞓I(yè)并不相信人,而是相信精確度極高的機(jī)器以及最重要的數(shù)據(jù)。我們的中國制造2025也是以德國的工業(yè)40為參考,因此,對國內(nèi)工業(yè)的升級來說,德國制造業(yè)是非常有借鑒參考意義的。 這也是筆者為什么要講國內(nèi)外ER

    2024年02月11日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包