本篇內(nèi)容介紹了“Elasticsearch架構(gòu)與原理是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)成立十多年來,這條路我們正越走越好,積累了技術(shù)與客戶資源,形成了良好的口碑。為客戶提供成都網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、域名與空間、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。網(wǎng)站是否美觀、功能強(qiáng)大、用戶體驗(yàn)好、性價(jià)比高、打開快等等,這些對(duì)于網(wǎng)站建設(shè)都非常重要,成都創(chuàng)新互聯(lián)通過對(duì)建站技術(shù)性的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究為客戶提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。
隨著移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、云計(jì)算等信息技術(shù)蓬勃發(fā)展,數(shù)據(jù)量呈爆炸式增長。如今我們可以輕易得從海量數(shù)據(jù)里找到想要的信息,離不開搜索引擎技術(shù)的幫助。
作為開源搜索引擎領(lǐng)域排名第一的 Elasticsearch,能夠讓我們無需深入了解背后復(fù)雜的信息檢索原理,就可實(shí)現(xiàn)基本的全文檢索功能,在數(shù)據(jù)量達(dá)到十億,百億規(guī)模仍然可以秒級(jí)返回檢索結(jié)果。
對(duì)于系統(tǒng)容災(zāi)、數(shù)據(jù)安全性、可擴(kuò)展性、可維護(hù)性等用戶關(guān)注的實(shí)際問題,在Elasticsearch 上也能得到有效解決。
Elasticsearch(ES)是一個(gè)基于 Lucene 構(gòu)建的開源分布式搜索分析引擎,可以近實(shí)時(shí)的索引、檢索數(shù)據(jù)。具備高可靠、易使用、社區(qū)活躍等特點(diǎn),在全文檢索、日志分析、監(jiān)控分析等場景具有廣泛應(yīng)用。
由于高可擴(kuò)展性,集群可擴(kuò)展至百節(jié)點(diǎn)規(guī)模,處理PB級(jí)數(shù)據(jù)。通過簡單的 RESTful API 即可實(shí)現(xiàn)寫入、查詢、集群管理等操作。
除了檢索,還提供豐富的統(tǒng)計(jì)分析功能。以及官方功能擴(kuò)展包 XPack 滿足其他需求,如數(shù)據(jù)加密、告警、機(jī)器學(xué)習(xí)等。
另外,可通過自定義插件,如 COS 備份、QQ 分詞等滿足特定功能需求。
1. Elasticsearch 架構(gòu)與原理
基本概念 :
Cluster「集群」:由部署在多個(gè)機(jī)器的ES節(jié)點(diǎn)組成,以處理較大數(shù)據(jù)集和實(shí)現(xiàn)高可用;
Node「節(jié)點(diǎn)」:機(jī)器上的ES進(jìn)程,可配置不同類型的節(jié)點(diǎn);
Master Node「主節(jié)點(diǎn)」:用于集群選主。由其中一個(gè)節(jié)點(diǎn)擔(dān)任主節(jié)點(diǎn),負(fù)責(zé)集群元數(shù)據(jù)管理,如索引創(chuàng)建,節(jié)點(diǎn)離開加入集群等;
Data Node「數(shù)據(jù)節(jié)點(diǎn)」:負(fù)責(zé)索引數(shù)據(jù)存儲(chǔ);
Index「索引」:索引數(shù)據(jù)的邏輯集合,可類比關(guān)系型數(shù)據(jù)的DataBase;
Shard「分片」:索引數(shù)據(jù)子集,通過將分片分配至集群不同節(jié)點(diǎn),實(shí)現(xiàn)數(shù)據(jù)橫向擴(kuò)展。以解決單個(gè)節(jié)點(diǎn)CPU、內(nèi)存、磁盤處理能力不足的情況;
Primary Shard「主分片」:數(shù)據(jù)分片采用主從模式,由分片接收索引操作;
Replica Shard「副本分片」:主分片的拷貝,以提高查詢吞吐量和實(shí)現(xiàn)數(shù)據(jù)高可靠。主分片異常時(shí),其中一個(gè)副本分片會(huì)自動(dòng)提升為新的主分片。
為了便于大家理解ES里的數(shù)據(jù)模型,將它與關(guān)系型數(shù)據(jù)庫 MySQL 做類比:
從上面架構(gòu)圖可以看出,ES 架構(gòu)非常簡潔。內(nèi)置自動(dòng)發(fā)現(xiàn)實(shí)現(xiàn) Zen discovery,當(dāng)一個(gè)節(jié)點(diǎn)啟動(dòng)后,通過聯(lián)系集群成員列表即可加入集群。
由其中一個(gè)節(jié)點(diǎn)擔(dān)任主節(jié)點(diǎn),用于集群元數(shù)據(jù)管理,維護(hù)分片在節(jié)點(diǎn)間的分配關(guān)系。當(dāng)新節(jié)點(diǎn)加入集群后,Master 節(jié)點(diǎn)會(huì)自動(dòng)遷移部分分片至新節(jié)點(diǎn),均衡集群負(fù)載。
分布式集群難免有節(jié)點(diǎn)故障。主節(jié)點(diǎn)會(huì)定期探測(cè)集群其他節(jié)點(diǎn)存活狀態(tài),當(dāng)節(jié)點(diǎn)故障后,會(huì)將節(jié)點(diǎn)移出集群,并自動(dòng)在其他節(jié)點(diǎn)上恢復(fù)故障節(jié)點(diǎn)上的分片。
主分片故障時(shí)會(huì)提升其中一個(gè)副本分片為主分片。其他節(jié)點(diǎn)也會(huì)探活主節(jié)點(diǎn),當(dāng)主節(jié)點(diǎn)故障后,會(huì)觸發(fā)內(nèi)置的類 Raft 協(xié)議選主,并通過設(shè)置最少候選主節(jié)點(diǎn)數(shù),避免集群腦裂。
除了集群管理,索引數(shù)據(jù)讀寫也是我們關(guān)心的重要部分。ES 采用 peer-to-peer 架構(gòu),每個(gè)節(jié)點(diǎn)保存全量分片路由信息,也就是每個(gè)節(jié)點(diǎn)均可以接收用戶讀寫。
如發(fā)送寫入請(qǐng)求至節(jié)點(diǎn) 1,寫入請(qǐng)求默認(rèn)通過文檔 ID 的 Hash 值確定寫入到哪個(gè)主分片,這里假設(shè)寫入到分片 0。
寫完主分片 P0,并行轉(zhuǎn)發(fā)寫入請(qǐng)求至副本分片 R0 所在節(jié)點(diǎn),當(dāng)副本分片所在節(jié)點(diǎn)確認(rèn)寫入成功后返回客戶端報(bào)告寫入成功,保障數(shù)據(jù)安全性。并且寫入前,會(huì)確保 quorum 數(shù)量的副本數(shù),避免網(wǎng)絡(luò)分區(qū)導(dǎo)致寫入數(shù)據(jù)不一致。
查詢采用分布式搜索,如請(qǐng)求發(fā)給節(jié)點(diǎn)3后,請(qǐng)求會(huì)轉(zhuǎn)發(fā)至索引的主分片或副本分片所在節(jié)點(diǎn)。
當(dāng)然如果寫入、查詢均帶有路由字段信息。請(qǐng)求只會(huì)發(fā)送給部分分片,避免全量分片掃描。這些節(jié)點(diǎn)完成查詢后將結(jié)果返回給請(qǐng)求節(jié)點(diǎn),由請(qǐng)求節(jié)點(diǎn)匯聚各個(gè)節(jié)點(diǎn)的結(jié)果返回給客戶端。
介紹完 ES 集群基本原理,下面簡單介紹下ES的底層存儲(chǔ)引擎 Lucene。
首先 Lucene 是一款高性能的信息檢索庫,提供索引和檢索基本功能。ES 在此基礎(chǔ)上解決可靠性、分布式集群管理等問題最終形成產(chǎn)品化的全文檢索系統(tǒng)。
Lucene 解決的核心問題便是全文檢索。與傳統(tǒng)的檢索方式不同,全文檢索避免在查詢時(shí)進(jìn)行全部內(nèi)容掃描。
比如數(shù)據(jù)寫入后,首先會(huì)對(duì)寫入的文檔字段內(nèi)容分詞,形成詞典表和與它關(guān)聯(lián)的倒排表。查詢時(shí)由關(guān)鍵詞分詞結(jié)果直接匹配詞典表內(nèi)容,并獲取關(guān)聯(lián)的文檔列表,快速獲取結(jié)果集。并通過排序規(guī)則,優(yōu)先展示匹配度高的文檔。
Lucene 為了加快索引速度,采用了 LSM Tree 結(jié)構(gòu),先把索引數(shù)據(jù)緩存在內(nèi)存。當(dāng)內(nèi)存空間占用較高或到達(dá)一定時(shí)間后,內(nèi)存中的數(shù)據(jù)會(huì)寫入磁盤形成一個(gè)數(shù)據(jù)段文件(segment)。段文件內(nèi)包含詞典、倒排表、字段數(shù)據(jù)等等多個(gè)文件。
為了兼容寫入性能和數(shù)據(jù)安全性,如避免內(nèi)存緩沖區(qū)里的數(shù)據(jù)因?yàn)闄C(jī)器故障丟失。ES 在寫內(nèi)存的同時(shí)也會(huì)寫事物日志 Translog。內(nèi)存里的數(shù)據(jù)會(huì)定期生成新的段文件,寫入開銷更低的文件系統(tǒng)緩存即可打開和讀取實(shí)現(xiàn)近實(shí)時(shí)搜索。
ES的典型使用場景有日志分析、時(shí)序分析、全文檢索等。
日志是互聯(lián)網(wǎng)行業(yè)基礎(chǔ)廣泛的數(shù)據(jù)形式。典型日志有用來定位業(yè)務(wù)問題的運(yùn)營日志,如慢日志、異常日志;用來分析用戶行為的業(yè)務(wù)日志,如用戶的點(diǎn)擊、訪問日志;以及安全行為分析的審計(jì)日志等。
Elastic 生態(tài)提供了完整的日志解決方案。通過簡單部署,即可搭建一個(gè)完整的日志實(shí)時(shí)分析服務(wù)。ES 生態(tài)完美的解決了日志實(shí)時(shí)分析場景需求,這也是近幾年 ES 快速發(fā)展的一個(gè)重要原因。
日志從產(chǎn)生到可訪問一般在 10s 級(jí),相比于傳統(tǒng)大數(shù)據(jù)解決方案的幾十分鐘、小時(shí)級(jí)時(shí)效性非常高。
ES底層支持倒排索引、列存儲(chǔ)等數(shù)據(jù)結(jié)構(gòu),使得在日志場景可以利用ES非常靈活的搜索分析能力。通過ES交互式分析能力,即使在萬億級(jí)日志的情況下,日志搜索響應(yīng)時(shí)間也是秒級(jí)。
日志處理的基本流程包含:日志采集 -> 數(shù)據(jù)清洗 -> 存儲(chǔ) -> 可視化分析。Elastic Stack通過完整的日志解決方案,幫助用戶完成對(duì)日志處理全鏈路管理。
其中:
日志采集:通過輕量級(jí)日志采集組件FileBeat實(shí)時(shí)讀取業(yè)務(wù)日志文件,發(fā)送數(shù)據(jù)至下游組件如 Logstash。
文本解析:利用正則解析等機(jī)制,將日志文本數(shù)據(jù)轉(zhuǎn)換成結(jié)構(gòu)化數(shù)據(jù)。可使用獨(dú)立的Logstash 服務(wù)或 Elasticsearch 內(nèi)置的輕量級(jí)數(shù)據(jù)處理模塊 Ingest Pipeline,完成數(shù)據(jù)清洗和轉(zhuǎn)換。
數(shù)據(jù)存儲(chǔ):通過 Elasticsearch 搜索分析平臺(tái)進(jìn)行數(shù)據(jù)持久存儲(chǔ),提供全文搜索和分析能力。
可視化分析:通過功能豐富的圖形界面,即可對(duì)日志數(shù)據(jù)進(jìn)行搜索分析,如可視化組件 Kibana。
時(shí)序數(shù)據(jù)是按時(shí)間順序記錄設(shè)備、系統(tǒng)狀態(tài)變化的數(shù)據(jù)。典型的時(shí)序數(shù)據(jù)有傳統(tǒng)的服務(wù)器監(jiān)控指標(biāo)數(shù)據(jù)、應(yīng)用系統(tǒng)性能監(jiān)控?cái)?shù)據(jù)、智能硬件、工業(yè)物聯(lián)網(wǎng)傳感器數(shù)據(jù)等。
早在2017年我們也基于ES進(jìn)行了時(shí)序分析場景的探索。時(shí)序分析場景具有高并發(fā)寫入、低查詢時(shí)延、多維分析的特點(diǎn)。
由于ES具有集群擴(kuò)展、批量寫入、讀寫帶路由、數(shù)據(jù)分片等能力,目前已實(shí)現(xiàn)線上單集群最大規(guī)模達(dá)到 600+節(jié)點(diǎn)、1000w/s 的寫入吞吐、單條曲線或單個(gè)時(shí)間線的查詢延時(shí)可控制在 10ms。
ES提供靈活、多維度的統(tǒng)計(jì)分析能力,實(shí)現(xiàn)查看監(jiān)控按照地域、業(yè)務(wù)模塊等靈活的進(jìn)行統(tǒng)計(jì)分析。另外,ES支持列存儲(chǔ)、高壓縮比、副本數(shù)按需調(diào)整等能力,可實(shí)現(xiàn)較低存儲(chǔ)成本。最后時(shí)序數(shù)據(jù)也可通過Kibana組件輕松實(shí)現(xiàn)可視化。
搜索服務(wù)典型場景有像京東、拼多多、蘑菇街中的商品搜索;應(yīng)用商店中的應(yīng)用APP搜索;論壇、在線文檔等站內(nèi)搜索。
這類場景用戶關(guān)注高性能、低延遲、高可靠、搜索質(zhì)量等。如單個(gè)服務(wù)最大需達(dá)到 10w+ QPS,請(qǐng)求平均響應(yīng)時(shí)間在 20ms以內(nèi),查詢毛刺低于 100ms,高可用如搜索場景通常要求 4 個(gè) 9 的可用性,支持單機(jī)房故障容災(zāi)等。
目前云上 Elasticsearch 服務(wù)已支持多可用區(qū)容災(zāi),故障分鐘級(jí)恢復(fù)能力。通過 ES 高效倒排索引,以及自定義打分、排序能力與豐富的分詞插件,實(shí)現(xiàn)全文檢索需求。在開源全文檢索領(lǐng)域,ES 在 DB-Engines 搜索引擎類別持續(xù)多年排名第一。
騰訊內(nèi)外部均有大量的日志實(shí)時(shí)分析、時(shí)序數(shù)據(jù)分析、全文檢索需求場景。
目前我們已聯(lián)合 Elastic 公司在騰訊云上提供了內(nèi)核增強(qiáng)版 ES 云服務(wù),簡稱CES,其中內(nèi)核增強(qiáng)包括 Xpack 商業(yè)套件和內(nèi)核優(yōu)化。
在服務(wù)公司內(nèi)部以及公有云客戶過程中,也遇到了較多問題和挑戰(zhàn),比如超大規(guī)模集群,千萬級(jí)數(shù)據(jù)寫入,以及云上用戶豐富的使用場景等。
下文將介紹我們?cè)趦?nèi)核層面,從可用性,性能,成本等方面進(jìn)行的優(yōu)化措施。
1. 可用性優(yōu)化
可用性 問題表現(xiàn)在三個(gè)方面:
(1)ES 內(nèi)核系統(tǒng)健壯性不足
這也是分布式系統(tǒng)共性難題。例如異常查詢、壓力過載集群容易出現(xiàn)雪崩。集群可擴(kuò)展性不足,比如集群分片數(shù)超10w會(huì)出現(xiàn)明顯的元數(shù)據(jù)管理瓶頸。以及集群擴(kuò)容、節(jié)點(diǎn)異常后加回集群,存在節(jié)點(diǎn)、多硬盤之間數(shù)據(jù)不均問題。
(2)容災(zāi)方案欠缺
需保障機(jī)房網(wǎng)絡(luò)故障時(shí)可快速恢復(fù)服務(wù),自然災(zāi)害下防止數(shù)據(jù)丟失,誤操作后快速恢復(fù)數(shù)據(jù)等可靠性、數(shù)據(jù)安全性問題。
(3)系統(tǒng)缺陷
另外也包括在運(yùn)營過程中發(fā)現(xiàn)的一些 ES 系統(tǒng)缺陷 ,比如說 Master 節(jié)點(diǎn)堵塞、分布式死鎖、滾動(dòng)重啟緩慢等。
針對(duì)上面的問題,在系統(tǒng)健壯性方面,我們通過服務(wù)限流,容忍機(jī)器網(wǎng)絡(luò)故障、異常查詢等導(dǎo)致的服務(wù)不穩(wěn)定問題。
通過優(yōu)化集群元數(shù)據(jù)管理邏輯,提升集群擴(kuò)展能力一個(gè)數(shù)量級(jí),支持千級(jí)節(jié)點(diǎn)集群、百萬級(jí)分片數(shù)。集群均衡方面,通過優(yōu)化節(jié)點(diǎn)、多硬盤間的分片均衡,保證大規(guī)模集群的壓力均衡。
容災(zāi)方案 方面,我們通過擴(kuò)展 ES 的插件機(jī)制實(shí)現(xiàn)數(shù)據(jù)備份和回檔,可把 ES 的數(shù)據(jù)備份到 COS,保障數(shù)據(jù)安全性;通過管控系統(tǒng)建設(shè)支持跨可用區(qū)容災(zāi),用戶可以按需部署多個(gè)可用區(qū),以容忍單機(jī)房故障。采用垃圾桶機(jī)制,保證用戶在欠費(fèi)、誤操作等場景下,集群數(shù)據(jù)可快速恢復(fù)。
系統(tǒng)缺陷方面,我們修復(fù)了滾動(dòng)重啟、Master 阻塞、分布式死鎖等一系列 Bug。其中滾動(dòng)重啟優(yōu)化,可加速節(jié)點(diǎn)重啟速度 5+倍。Master 堵塞問題,我們?cè)?ES 6.x 版本和官方一起做了優(yōu)化。
性能問題,比如以日志、監(jiān)控為代表的時(shí)序場景,對(duì)寫入性能要求非常高,寫入并發(fā)可達(dá) 1000w/s。然而我們發(fā)現(xiàn)在帶主鍵寫入時(shí),ES 性能會(huì)衰減 1+倍。
壓測(cè)場景下發(fā)現(xiàn)CPU 存在無法充分利用的情況。通常搜索服務(wù)對(duì)查詢性要求非常高,一般要求 20w QPS, 平均響應(yīng)時(shí)間小于 20ms,并且需盡量避免 GC、以及執(zhí)行計(jì)劃不優(yōu)等造成的查詢毛刺問題。
為了解決這些問題。寫入方面,針對(duì)主鍵去重場景,我們通過利用段文件上記錄的最大最小值進(jìn)行查詢裁剪,加速主鍵去重的過程,寫入性能提升 45%,具體可參考 Lucene-8980[1]。
對(duì)于壓測(cè)場景下 CPU 不能充分利用的問題,通過優(yōu)化 ES 刷新 Translog 時(shí)鎖粒度,避免資源搶占,提升性能提升 20%,具體可參考ES-45765 /47790[2]。我們也正在嘗試通過向量化執(zhí)行優(yōu)化寫入性能,通過減少分支跳轉(zhuǎn)、指令 Miss,預(yù)期寫入性能可提升 1 倍。
查詢方面,我們通過優(yōu)化段文件合并策略,對(duì)于非活躍段文件會(huì)自動(dòng)觸發(fā)合并,收斂段文件數(shù)以降低資源開銷,提升查詢性能。
根據(jù)每個(gè)段文件上記錄的最大最小值進(jìn)行查詢剪枝,提升查詢性能 40%。通過 CBO 策略,避免緩存較大開銷的 Cache 操作導(dǎo)致產(chǎn)生 10+倍的查詢毛刺,具體可參考Lucene-9002[3]。
另外還包括優(yōu)化 Composite 聚合中的性能問題,實(shí)現(xiàn)真正的翻頁操作,以及優(yōu)化帶排序場景的聚合使得性能提升3-7倍。此外,我們也在嘗試通過一些新硬件來優(yōu)化性能,比如說英特爾的 AEP、Optane、QAT 等。
3. 成本優(yōu)化
成本方面主要體現(xiàn)在以日志、監(jiān)控為代表的時(shí)序場景對(duì)機(jī)器資源的消耗。結(jié)合線上典型的日志、時(shí)序業(yè)務(wù)統(tǒng)計(jì)數(shù)據(jù)發(fā)現(xiàn),硬盤、內(nèi)存、計(jì)算資源的成本比例接近 8:4:1。
可以得出硬盤、內(nèi)存是主要矛盾,其次是計(jì)算成本。而這類時(shí)序類場景有很明顯的訪問特性,也就是數(shù)據(jù)具有冷熱特性。
時(shí)序數(shù)據(jù)訪問具有近多遠(yuǎn)少的特點(diǎn),比如近 7 天數(shù)據(jù)的訪問量占比可達(dá)到 95%以上,而歷史數(shù)據(jù)訪問較少,并且通常都是訪問統(tǒng)計(jì)類信息。
硬盤成本方面,由于數(shù)據(jù)具有明顯的冷熱特性,我們采用冷熱分離架構(gòu),使用混合存儲(chǔ)的方案來平衡成本和性能。
由于歷史數(shù)據(jù)通常只是訪問統(tǒng)計(jì)信息,我們采用預(yù)計(jì)算 Rollup 換取存儲(chǔ)和查詢性能,類似物化視圖。對(duì)于完全不使用歷史數(shù)據(jù),也可以備份到更廉價(jià)的存儲(chǔ)系統(tǒng)如 COS。其他一些優(yōu)化方式包括多盤策略兼容數(shù)據(jù)吞吐與數(shù)據(jù)容災(zāi),以及通過生命周期管理等定期刪除過期數(shù)據(jù)等。
內(nèi)存成本 方面,我們發(fā)現(xiàn)特別是大存儲(chǔ)機(jī)型,存儲(chǔ)資源才用了 20% 內(nèi)存已不足。為了解決內(nèi)存不足問題,我們采用 Off-Heap 技術(shù),來提升堆內(nèi)內(nèi)存利用率,降低 GC 開銷,并且提升單個(gè)節(jié)點(diǎn)管理磁盤的能力。
將內(nèi)存占比較大的 FST 移到堆外管理,通過堆內(nèi)存放堆外對(duì)象地址,避免堆內(nèi)外數(shù)據(jù)拷貝。通過 Java 弱引用機(jī)制實(shí)現(xiàn)堆外對(duì)象內(nèi)存回收,進(jìn)一步提升內(nèi)存使用率。
實(shí)現(xiàn) 32GB 堆內(nèi)內(nèi)存可管理 50 TB 左右磁盤空間,較原生版本有 10 倍提升,并且性能持平,而 GC 優(yōu)勢(shì)提升明顯。
除了內(nèi)核層面的優(yōu)化,在平臺(tái)層通過管控平臺(tái),支持云上服務(wù)資源管理、實(shí)例實(shí)例管理等實(shí)現(xiàn)服務(wù)托管。方便快捷進(jìn)行實(shí)例創(chuàng)建和規(guī)格調(diào)整。
通過運(yùn)維支撐平臺(tái)中的監(jiān)控系統(tǒng)、運(yùn)維工具等保障服務(wù)質(zhì)量。并通過正在建設(shè)的智能診斷平臺(tái)發(fā)現(xiàn)服務(wù)潛在問題,實(shí)現(xiàn)了對(duì)內(nèi)外部提供穩(wěn)定可靠的 ES 服務(wù)。
“Elasticsearch架構(gòu)與原理是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!