www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 公眾號精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]本文根據(jù)李猛老師在〖deeplus直播第220期〗線上分享演講內(nèi)容整理而成。 李猛 數(shù)據(jù)技術(shù)專家 Elastic-Stack產(chǎn)品深度用戶,ES認證工程師,對Elastic-Stack開發(fā)、架構(gòu)、運維有深入體驗; 實踐過多種ES項目,最暴力的大數(shù)據(jù)分析應(yīng)用,最復(fù)雜的業(yè)務(wù)系統(tǒng)應(yīng)用。 序言



本文根據(jù)李猛老師在〖deeplus直播第220期〗線上分享演講內(nèi)容整理而成。


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

李猛

數(shù)據(jù)技術(shù)專家


  • Elastic-Stack產(chǎn)品深度用戶,ES認證工程師,對Elastic-Stack開發(fā)、架構(gòu)、運維有深入體驗;

  • 實踐過多種ES項目,最暴力的大數(shù)據(jù)分析應(yīng)用,最復(fù)雜的業(yè)務(wù)系統(tǒng)應(yīng)用。


序言


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

圖示:Redis熱度排名


Redis當下很流行,也很好用,無論是在業(yè)務(wù)應(yīng)用系統(tǒng),還是在大數(shù)據(jù)領(lǐng)域都有重要的地位;但Redis也很脆弱,用不好,問題多多。2012年以前都是以memcached為主,之后轉(zhuǎn)到Redis陣營,經(jīng)歷過單實例模式、主從模式、哨兵模式、代理模式,集群模式,真正公司層面用得好的很少,對于Redis掌控都很片面,導(dǎo)致實際項目中問題不少。


Redis要想用得好,需要整體掌握3個層面:


  • 開發(fā)層面

  • 架構(gòu)層面

  • 運維層面


其中架構(gòu)與運維至關(guān)重要,多數(shù)中小型企業(yè)僅在開發(fā)層面滿足常用功能,數(shù)據(jù)規(guī)模稍微大些,業(yè)務(wù)復(fù)雜度高些,就容易出現(xiàn)各種架構(gòu)與運維問題。本文主旨是探討Redis監(jiān)控體系,目前業(yè)界當然也有很多成熟的產(chǎn)品,但個人覺得都很常規(guī),只做到一些粗粒度的監(jiān)控, 沒有依據(jù)業(yè)務(wù)需求特點因地制宜去細化,從而反向的提供架構(gòu)開發(fā)優(yōu)化方案。


本文內(nèi)容將圍繞如下幾個問題展開討論:


  • Redis監(jiān)控體系有哪些方面?

  • 構(gòu)建Redis監(jiān)控體系我們做了哪些工作?

  • Redis監(jiān)控體系應(yīng)該細化到什么程度?

  • 為什么使用ELK構(gòu)建監(jiān)控體系?


需求背景


項目描述


公司業(yè)務(wù)范圍屬于車聯(lián)網(wǎng)行業(yè),有上百萬級的真實車主用戶,業(yè)務(wù)項目圍繞車主生活服務(wù)展開,為了提高系統(tǒng)性能,引入了Redis作為緩存中間件,具體描述如下:


  • 部署架構(gòu)采用Redis-Cluster模式;

  • 后臺應(yīng)用系統(tǒng)有幾十個,應(yīng)用實例數(shù)超過二百個;

  • 所有應(yīng)用系統(tǒng)共用一套緩存集群;

  • 集群節(jié)點數(shù)幾十個,加上容災(zāi)備用環(huán)境,節(jié)點數(shù)量翻倍;

  • 集群節(jié)點內(nèi)存配置較高。


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

圖示:Redis集群架構(gòu)與應(yīng)用架構(gòu)示意圖


問題描述


系統(tǒng)剛開始關(guān)于Redis的一切都很正常,隨著應(yīng)用系統(tǒng)接入越來越多,應(yīng)用系統(tǒng)子模塊接入也越來越多,開始出現(xiàn)一些問題,應(yīng)用系統(tǒng)有感知,集群服務(wù)端也有感知,如下描述:


  • 集群節(jié)點崩潰;

  • 集群節(jié)點假死;

  • 某些后端應(yīng)用訪問集群響應(yīng)特別慢。


其實問題的根源都是架構(gòu)運維層面的欠缺,對于Redis集群服務(wù)端的運行監(jiān)控其實很好做,本身也提供了很多直接的命令方式,但只能看到服務(wù)端的一些常用指標信息,無法深入分析,治標不治本,對于Redis的內(nèi)部運行一無所知,特別是對于業(yè)務(wù)應(yīng)用如何使用Redis集群一無所知:


  • Redis集群使用的熱度問題?

  • 哪些應(yīng)用占用的Redis內(nèi)存資源多?

  • 哪些應(yīng)用占用Redis訪問數(shù)最高?

  • 哪些應(yīng)用使用Redis類型不合理?

  • 應(yīng)用系統(tǒng)模塊使用Redis資源分布怎么樣?

  • 應(yīng)用使用Redis集群的熱點問題?


監(jiān)控體系


監(jiān)控的目的不僅僅是監(jiān)控Redis本身,而是為了更好的使用Redis。傳統(tǒng)的監(jiān)控一般比較單一化,沒有系統(tǒng)化,但對于Redis來說,個人認為至少包括:一是服務(wù)端,二是應(yīng)用端,三是服務(wù)端與應(yīng)用端聯(lián)合分析。


服務(wù)端:


  • 服務(wù)端首先是操作系統(tǒng)層面,常用的CPU、內(nèi)存、網(wǎng)絡(luò)IO,磁盤IO,服務(wù)端運行的進程信息等;

  • Redis運行進程信息,包括服務(wù)端運行信息、客戶端連接數(shù)、內(nèi)存消耗、持久化信息 、鍵值數(shù)量、主從同步、命令統(tǒng)計、集群信息等;

  • Redis運行日志,日志中會記錄一些重要的操作進程,如運行持久化時,可以有效幫助分析崩潰假死的程序。


應(yīng)用端:


應(yīng)用端、獲取應(yīng)用端使用Redis的一些行為,具體哪些應(yīng)用哪些模塊最占用 Redis資源、哪些應(yīng)用哪些模塊最消耗Redis資源、哪些應(yīng)用哪些模塊用法有誤等。


聯(lián)合分析:


聯(lián)合分析結(jié)合服務(wù)端的運行與應(yīng)用端使用的行為,如:一些造成服務(wù)端突然阻塞的原因,可能是應(yīng)用端設(shè)置了一個很大的緩存鍵值,或者使用的鍵值列表,數(shù)據(jù)量超大造成阻塞。


解決方案


為什么會選擇Elastic-Stack技術(shù)棧呢?


多數(shù)的第三方只監(jiān)控一些指標,對于明細日志還是采用ELK(Elasticsearch、Logstash、Kibana),也就是說用第三方監(jiān)控指標之后,還得再搭建一個ELK集群看明細日志。


再就是說Elastic-Stack技術(shù)棧整合的優(yōu)勢,指標也可以、日志文件也可以,從采集開始到存儲、到最終報表面板都整合得非常好,門檻很低。


下面詳細聊聊我們具體怎么做的,做了哪些工作?


服務(wù)端系統(tǒng)


Elastic-Stack家族有Metricbeat產(chǎn)品,支持系統(tǒng)層面的信息收集,簡單的配置下Elastic集群地址和系統(tǒng)指標模塊即可上線,并且會在Kibana中創(chuàng)建已有的系統(tǒng)監(jiān)控面板,非常簡單快速,一般運維就可以搞定。


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

圖示:metrcibeat示意圖


系統(tǒng)指標信息收集配置樣例如下:


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?


服務(wù)端集群


收集Redis集群運行信息,業(yè)界通常做法都是采用Redis提供的info命令,定期收集。


info獲取的信息包括如下:


  • server:Redis服務(wù)器的一般信息

  • clients:客戶端的連接部分

  • memory:內(nèi)存消耗相關(guān)信息

  • persistence:RDB和AOF相關(guān)信息

  • stats:一般統(tǒng)計

  • replication:主/從復(fù)制信息

  • cpu:統(tǒng)計CPU的消耗command

  • stats:Redis命令

  • 統(tǒng)計cluster:Redis集群信息

  • keyspace:數(shù)據(jù)庫的相關(guān)統(tǒng)計


Elastic-Stack家族的Metricbeat產(chǎn)品也支持Redis模塊,也是采用info命令獲取的,但是有一些實現(xiàn)的局限性,如下描述:


  • Redis集群的主從關(guān)系信息,Metricbeats表達不出來;

  • Redis集群的一些統(tǒng)計信息,永遠是累計增加的,如命令數(shù),如果要獲取命令數(shù)的波峰值,則無法得到;

  • Redis集群狀態(tài)信息變化,Metricbeats是無法動態(tài)的,如集群新增節(jié)點、下線節(jié)點等。


所以這里參考了CacheCloud產(chǎn)品(搜狐團隊開源),我們自定義設(shè)計開發(fā)了 Agent,定時從Redis集群采集信息,并在內(nèi)部做一些統(tǒng)計數(shù)值的簡單計算,轉(zhuǎn)換成Json,寫入到本地文件,通過Logstash采集發(fā)送到Elasticsearch。


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

圖示:Redis服務(wù)端運行信息采集架構(gòu)示意圖


服務(wù)端日志


Redis服務(wù)端運行日志采集很簡單,直接通過Elastic-Stack家族的Filebeat產(chǎn)品,其中有Redis模塊,配置一下Elastic服務(wù)端,日志文件地址即可。


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

圖示:服務(wù)端日志采集過程


Redis運行日志采集配置:


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?


應(yīng)用端


應(yīng)用端信息采集是整個Redis監(jiān)控體系最重要的部分,也是實現(xiàn)最麻煩、鏈路最長的。首先是修改jedis(技術(shù)棧Java)源碼,增加埋點代碼,重新編譯并引用到應(yīng)用項目中,應(yīng)用端對于Redis集群的任何命令操作,都會被捕捉,并記錄下關(guān)鍵信息,之后寫入到本地文件。


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

圖示:Redis應(yīng)用端行為采集架構(gòu)圖


應(yīng)用端采集的數(shù)據(jù)格式如下:


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

圖示:應(yīng)用端采集的數(shù)據(jù)案例


jedis修改:


jedis改造記錄的信息如下:


  • r_host:訪問Redis集群的服務(wù)器地址與端口,其中某一臺ip:port;

  • r_cmd:執(zhí)行命令類型、如get、set、hget、hset等各種;

  • r_start:執(zhí)行命令開始時間;

  • r_cost:時間消耗;

  • r_size:獲取鍵值大小或者設(shè)置鍵值大?。?/span>

  • r_key:獲取鍵值名稱;

  • r_keys:鍵值的二級拆分,數(shù)組的長度不限制。這里有必要強調(diào)一下,所有應(yīng)用系統(tǒng)共用的是一套集群,所以應(yīng)用系統(tǒng)的鍵值都是有規(guī)范的,按照特殊符號分割,如:"應(yīng)用名稱_系統(tǒng)模塊_動態(tài)變量_xxx“,主要便于我們區(qū)分。


在jedis改造有幾處地方,如下:


  • 類Connection.java文件,統(tǒng)計開始,記錄命令執(zhí)行開始時間;統(tǒng)計結(jié)束,記錄命令結(jié)束時間、時間消耗等,并寫入到日志流中;

  • 類JedisClusterCommand文件,獲取鍵的地方key,方便之后分析應(yīng)用鍵的行為。


在類Connection.java文件中有2處:


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

圖示:類Connection.java文件埋點代碼的地方


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

圖示:類Connection.java文件埋點代碼的地方


類JedisClusterCommand文件埋點代碼.java文件中有1處:


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

圖示:類JedisClusterCommand文件埋點代碼


logback修改:


應(yīng)用端都會使用logback寫入日志文件,同時為了更加精準,應(yīng)用端寫入日志時還需要獲取應(yīng)用端的一些信息,如下:


  • app_ip:應(yīng)用端部署在服務(wù)器上的IP地址;

  • app_host:應(yīng)用端部署在服務(wù)器上的服務(wù)器名稱。


自定義一個Layout,自動獲取應(yīng)用端的IP地址與服務(wù)器名稱:


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

圖示:自定義Logback的Layout


app配置:


app配置屬于最后收尾工作,主要是輸出埋點的日志數(shù)據(jù),配置日志logback.xml文件即可:


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

圖示:配置應(yīng)用端日志文件logback.xml


日志采集:


應(yīng)用端日志采集采用Logstash,配置日志目錄,指向Elastic集群,這樣整體的監(jiān)控日志采集部分就結(jié)束了。


日志分析


Redis服務(wù)端的日志分析比較簡單,常規(guī)的一些指標而已,創(chuàng)建好關(guān)鍵的圖表,容易看出問題。重點討論應(yīng)用端的日志分析。


我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

圖示:應(yīng)用端使用Redis一些行為圖表


ELK監(jiān)控體系上線之后,我們連續(xù)觀察分析兩周,獲得了一些監(jiān)控成果,如:


  • 應(yīng)用端部分鍵值太大,居然超過1MB,這種鍵值訪問一次消耗時間很大,會嚴重造成阻塞;

  • 部分應(yīng)用居然使用Redis當成數(shù)據(jù)庫使用;

  • 有將List類型當成消息隊列使用,一次存取幾十萬的數(shù)據(jù);

  • 某些應(yīng)用對于集群的操作頻次特別高,幾乎占用了一半以上;

  • 還有很多,就不一一描述了。


后續(xù)方案


監(jiān)控體系相當于架構(gòu)師的眼睛,有了這個,Redis方面的優(yōu)化改造方案就很好制定了:


  • 應(yīng)用端、誤用的使用全部要改掉;

  • 服務(wù)端,按照應(yīng)用的數(shù)據(jù),進行一些拆分,拆分出一些專用的集群,特定為一些應(yīng)用使用或者場景;

  • 開發(fā)者,后續(xù)有新業(yè)務(wù)模塊需要接入Redis需要告知架構(gòu)師們評審。


結(jié)語


監(jiān)控體系項目前后經(jīng)歷過幾個月,服務(wù)端部分短期內(nèi)就完成的,應(yīng)用端是隨著應(yīng)用發(fā)布逐步完成的。上線完成之后又經(jīng)歷幾周的跟蹤分析,才確定下來整體的優(yōu)化方案。


監(jiān)控體系本身并不是為了監(jiān)控,而是發(fā)現(xiàn)問題、預(yù)見問題,最終提前解決問題,監(jiān)控做得好,下班下得早。


Redis集群是個好東西,完全掌握還是需要很長的時間,特別是架構(gòu)、運維層面,如果沒有,請做好監(jiān)控。


>

Q&A


Q1:請問單臺機器一般部署幾個Redis實例呢?


A:依據(jù)服務(wù)器資源設(shè)置:

1、CPU核數(shù),Redis是單線程工作模型,實際運行并非進程只有一個線程,這個要搞清楚;

2、內(nèi)存,一個Redis進程配置部分內(nèi)存,需要至少對等的內(nèi)存閑置,fork子進程使用, 所以配置多實例要簡單計算下;

3、網(wǎng)絡(luò),網(wǎng)絡(luò)IO超過網(wǎng)卡限制,會出問題。


Q2:直播中講到的大key,hash要改成什么?分片嗎?


A:1、比如,一個車子的基本信息,包括很多區(qū)塊部分,用hash確實非常好理解,但是過期之后整個hash都刪除了,其實很多信息是固定的,不用定時過期的;2、拆分成小的string更合適。


Q3:在客戶端打印key和value,如果是bigkey的話,qps有個1000,打印日志就占用很高的機器負載了吧?


A:1、打印的key,不包括value值內(nèi)容,只有key以及value的大?。?、logback這些框架其實支持的性能相當不錯的,可以配置成異步的方式,如果還不夠,可以直接輸出到Kafka隊列等。


Q4:請問ES怎么部署MongoDB慢查詢報表平臺呢?


A:1、沒有深度使用過MongoDB;2、基于Elastic-Stack做慢查詢報表平臺思路與Redis一樣的,不管什么指標+日志全部都采集到ES完事。


Q5:info all執(zhí)行頻繁,會經(jīng)常阻塞服務(wù)器,怎么平衡它的性能呢?


A:1、因為采集的是服務(wù)端運行的快照信息,定時采集,可以設(shè)定時間間隔大一些,比如5s;2、執(zhí)行info all,是在 java客戶端,可以修改jedis,在其中捕獲info命令,采集數(shù)據(jù),觀察分析一段時間。


Q6:請問應(yīng)用端jedis要怎么埋點呢?


A:1、原有jedis版本基于2.9,在2個類中修改埋點,參考了CacheCloud產(chǎn)品。最新版本的程序最近沒有關(guān)注,思路一樣;2、詳細見本文中貼出的代碼。


Q7:監(jiān)控的話,個人覺得放在K8S里面,不是最優(yōu)方案,您對這個怎么看?


A:1、本人未使用過K8S部署產(chǎn)品;2、Redis監(jiān)控體系,整體服務(wù)端,應(yīng)用端,在Docker中也僅服務(wù)端可以,將metrcibeats這些集成在一起,但也有一些服務(wù)端監(jiān)指標計算,需要自己編寫Agent來完成,也是可以到Docker中去。應(yīng)用端的就沒有辦法了,這個屬于前端的行為統(tǒng)計。


Q8:請問您的ES有多少節(jié)點?要用ssd盤嗎?


A:1、標準集群,起步3個實例節(jié)點;2、固態(tài)硬盤應(yīng)用看場景,業(yè)務(wù)系統(tǒng)用用可以,日志系統(tǒng)一般不需要,即使需要也可以做冷熱隔離,少量的數(shù)據(jù)使用ssd,歷史的數(shù)據(jù)全部hdd足矣。


Q9:如果公司缺乏足夠的人力物力,是用ES、Prometheus還是Zabbix做監(jiān)控比較適合呢?能分別說一下它們各自最適用的情況嗎?


A:1、ES,Elastic-Stack,首選考慮,ES擅長的領(lǐng)域很多,應(yīng)用系統(tǒng)查詢加速、大數(shù)據(jù)領(lǐng)域、監(jiān)控領(lǐng)域;2、其它兩個產(chǎn)品主要是做指標型的監(jiān)控,但實際項目中,僅僅指標監(jiān)控是不夠的,需要一個整體型的監(jiān)控體系,便于聯(lián)合分析。ES其實很多方面比時序數(shù)據(jù)庫做得更好,騰訊有資深專家做過詳細的ES與TSDB對比的測試,性能與功能都完全超過專門的時序數(shù)據(jù)庫。


特別推薦一個分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:

我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

長按訂閱更多精彩▼

我為什么用ES做Redis監(jiān)控,不用Prometheus或Zabbix?

如有收獲,點個在看,誠摯感謝

免責聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉