版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章Nacos配置中心《SpringCloud微服務(wù)架構(gòu)開發(fā)(第2版)》學(xué)習(xí)目標(biāo)/Target了解配置中心概述,能夠簡(jiǎn)述配置中心的好處,以及常見的配置中心熟悉Nacos配置管理基礎(chǔ),能夠簡(jiǎn)述Nacos配置管理的核心概念掌握命名空間管理和配置管理,能夠在Nacos控制臺(tái)中管理命名空間和配置掌握Nacos配置的應(yīng)用,能夠通過Nacos集成SpringBoot實(shí)現(xiàn)Nacos配置的應(yīng)用掌握自定義DataID配置,能夠?qū)崿F(xiàn)Nacos自定義拓展的DataID配置和自定義共享DataID配置章節(jié)概述/Summary隨著業(yè)務(wù)的發(fā)展,基于微服務(wù)架構(gòu)的系統(tǒng)中的微服務(wù)數(shù)量和規(guī)模不斷增長(zhǎng),系統(tǒng)中相關(guān)配置也變得越來越復(fù)雜。在這種情況下,引入一個(gè)強(qiáng)大的配置中心變得至關(guān)重要。配置中心可以集中管理配置,減少配置修改的時(shí)間和風(fēng)險(xiǎn),其中Nacos的配置中心模塊就是當(dāng)前主流的解決方案之一。接下來,本章將對(duì)Nacos配置中心進(jìn)行講解。目錄/Contents7.17.2配置中心概述Nacos配置管理基礎(chǔ)7.3命名空間管理和配置管理7.4Nacos配置的應(yīng)用7.5自定義DataID配置配置中心概述7.17.1
配置中心概述先定一個(gè)小目標(biāo)!
先定一個(gè)小目標(biāo)!了解配置中心概述,能夠簡(jiǎn)述配置中心的好處,以及常見的配置中心7.1
配置中心概述1.配置的特點(diǎn)配置需要治理通過對(duì)不同環(huán)境和集群的配置進(jìn)行有效的管理,可以提高程序的穩(wěn)定性和可靠性配置是獨(dú)立于程序的只讀變量配置對(duì)于程序是只讀的,程序通過讀取配置來改變自己的行為,但是程序不應(yīng)該去改變配置。配置可以有多種加載方式常見加載配置的方式有程序內(nèi)部硬編碼、配置文件、環(huán)境變量、啟動(dòng)參數(shù)、基于數(shù)據(jù)庫(kù)等。配置伴隨應(yīng)用的整個(gè)生命周期配置貫穿于應(yīng)用的整個(gè)生命周期,應(yīng)用在啟動(dòng)時(shí)通過讀取配置來初始化,在運(yùn)行時(shí)根據(jù)配置調(diào)整行為。7.1
配置中心概述2.使用配置中心的好處如果微服務(wù)架構(gòu)中沒有使用配置中心,每個(gè)服務(wù)都需要自行管理和維護(hù)其配置文件,這意味著每個(gè)服務(wù)都需要自行備份、恢復(fù)和管理配置文件,以確保服務(wù)的正常運(yùn)行和可靠性。同時(shí),當(dāng)某個(gè)服務(wù)的配置文件發(fā)生變化時(shí),也需要通知相關(guān)服務(wù)進(jìn)行相應(yīng)的更新和調(diào)整,以確保整個(gè)系統(tǒng)的穩(wěn)定性和一致性。7.1
配置中心概述2.使用配置中心的好處沒有使用配置中心的架構(gòu)7.1
配置中心概述2.使用配置中心的好處(1)配置文件相對(duì)分散沒有使用配置中心配置文件分散,存儲(chǔ)在各個(gè)微服務(wù)中,導(dǎo)致統(tǒng)一配置和管理變得困難,并且可能存在冗余的配置信息。(2)環(huán)境特定配置的管理困難在多環(huán)境部署中,必須手動(dòng)管理和切換這些環(huán)境相關(guān)的配置,增加了人工操作和錯(cuò)誤的可能性。(3)實(shí)時(shí)配置更新困難修改配置文件后需要重新啟動(dòng)微服務(wù)才能使配置生效,帶來系統(tǒng)停機(jī)時(shí)間和對(duì)用戶的不良影響。7.1
配置中心概述2.使用配置中心的好處使用配置中心的架構(gòu)7.1
配置中心概述2.使用配置中心的好處使用配置中心帶來了以下好處。(1)集中管理和統(tǒng)一配置配置中心提供了一個(gè)集中化的平臺(tái),可以集中管理和存儲(chǔ)微服務(wù)架構(gòu)中的所有配置信息。。(2)實(shí)時(shí)更新配置配置中心支持實(shí)時(shí)更新配置,當(dāng)配置發(fā)生變化時(shí),配置中心可立即通知相應(yīng)的微服務(wù)進(jìn)行配置的動(dòng)態(tài)更新,而無需重啟服務(wù)。7.1
配置中心概述2.使用配置中心的好處使用配置中心帶來了以下好處。(3)提供特定環(huán)境配置的管理對(duì)于多環(huán)境部署的系統(tǒng),配置中心能夠根據(jù)不同的環(huán)境提供對(duì)應(yīng)的配置,如測(cè)試環(huán)境、預(yù)發(fā)布環(huán)境和生產(chǎn)環(huán)境。(4)配置的版本管理和回滾配置中心通常支持配置的版本管理和回滾功能,可以輕松地查看歷史配置版本、對(duì)比不同版本之間的差異,并在需要時(shí)回滾到以前的配置狀態(tài)。7.1
配置中心概述3.常見的配置中心常見的配置中心的對(duì)比對(duì)比項(xiàng)SpringCloudConfigApolloNacos配置實(shí)時(shí)推送支持,通過SpringCloudBus實(shí)現(xiàn)配置的實(shí)時(shí)推送支持,通過HTTP長(zhǎng)輪詢方式實(shí)現(xiàn)了極低延遲(1s內(nèi))的實(shí)時(shí)推送支持,通過HTTP長(zhǎng)輪詢方式實(shí)現(xiàn)了極低延遲(1s內(nèi))的實(shí)時(shí)推送版本管理支持,通過Git實(shí)現(xiàn)支持支持配置回滾支持,通過Git實(shí)現(xiàn)支持支持灰度發(fā)布支持支持不支持權(quán)限管理支持,依賴Git實(shí)現(xiàn)支持不支持多集群支持支持支持多環(huán)境支持支持支持監(jiān)聽查詢支持支持支持支持語言只支持Java支持多數(shù)主流語言,提供了OpenAPI支持多數(shù)主流語言,提供了OpenAPI配置格式校驗(yàn)不支持支持支持單機(jī)讀(QPS)7,限流所致900015000單機(jī)寫(QPS)5,限流所致11001800Nacos配置管理基礎(chǔ)7.27.2
Nacos配置管理基礎(chǔ)先定一個(gè)小目標(biāo)!
先定一個(gè)小目標(biāo)!熟悉Nacos配置管理基礎(chǔ),能夠簡(jiǎn)述Nacos配置管理的核心概念7.2
Nacos配置管理基礎(chǔ)1.Nacos配置管理的核心概念對(duì)于Nacos配置管理,通過Namespace、Group、DataID能夠定位到一個(gè)配置集,為了讀者能夠?qū)Υ擞袀€(gè)初步概念,下面分別Nacos配置管理中的核心概念進(jìn)行說明。(1)配置項(xiàng)配置項(xiàng)是一個(gè)具體可配置的參數(shù)及其取值范圍,通常以key=value的形式存在。(2)配置集配置集是一組配置項(xiàng)的集合。在系統(tǒng)中,一個(gè)配置文件通??梢钥醋魇且粋€(gè)配置集,其中包含了系統(tǒng)各個(gè)方面的配置信息。(3)命名空間(Namespace)命名空間用于不同環(huán)境或不同應(yīng)用的隔離,不同的命名空間下,可以存在相同的Group或DataID的配置。如果沒有指定命名空間,默認(rèn)會(huì)使用public命名空間。7.2
Nacos配置管理基礎(chǔ)1.Nacos配置管理的核心概念(4)配置組(Group)配置組是Nacos中的一組配置集,通過一個(gè)有意義的字符串標(biāo)識(shí)對(duì)配置集分配進(jìn)行分組,從而區(qū)分具有相同DataID的配置集。開發(fā)者在Nacos中創(chuàng)建配置時(shí),如果未指定配置組名稱,則默認(rèn)使用DEFAULT_GROUP作為配置組名稱。(5)配置ID(DataID)配置ID是Nacos中配置集的唯一標(biāo)識(shí),配置ID是用來劃分和標(biāo)識(shí)不同配置的維度之一。DataID盡量保障全局唯?,其命名可以參考如下的命名格式。${prefix}?${files.active}-${file-extension}7.2
Nacos配置管理基礎(chǔ)Nacos抽象定義了Namespace、Group和DataID的概念,在具體使用時(shí),這些概念的含義取決于具體的使用場(chǎng)景。在這里,推薦一種常用的用法。1.Nacos配置管理的核心概念7.2
Nacos配置管理基礎(chǔ)在Nacos中,租戶是一種資源隔離和權(quán)限控制的概念,每個(gè)租戶都有自己的資源空間和權(quán)限控制規(guī)則。開發(fā)者在配置資源時(shí),可以從單個(gè)租戶和多個(gè)租戶兩個(gè)角度考慮。2.Nacos配置資源模型單個(gè)租戶的配置資源模型7.2
Nacos配置管理基礎(chǔ)2.Nacos配置資源模型多個(gè)租戶的配置資源模型命名空間管理和配置管理7.37.3
命名空間管理和配置管理先定一個(gè)小目標(biāo)!
先定一個(gè)小目標(biāo)!掌握命名空間管理和配置管理,能夠在Nacos控制臺(tái)中管理命名空間和配置7.3
命名空間管理和配置管理1.命名空間管理在Nacos控制臺(tái)中管理命名空間包括對(duì)命名空間的新建、編輯、刪除、詳情查看,啟動(dòng)Nacos并登錄Nacos控制臺(tái)后,單擊左側(cè)列表中的“命名空間”,即可進(jìn)入命名空間的頁面。7.3
命名空間管理和配置管理1.命名空間管理在命名空間的頁面單擊“新建命名空間”按鈕,會(huì)彈出對(duì)應(yīng)的對(duì)話框。7.3
命名空間管理和配置管理1.命名空間管理完成命名空間的新建后,會(huì)在命名空間頁面展示最新的命名空間列表。7.3
命名空間管理和配置管理1.命名空間管理單擊命名空間dev對(duì)應(yīng)的“詳情”超鏈接,會(huì)彈出命名空間詳細(xì)對(duì)話框。7.3
命名空間管理和配置管理2.配置管理在Nacos控制臺(tái)左側(cè)列表中,單擊“配置管理”的“配置列表”即可進(jìn)入配置列表的頁面。7.3
命名空間管理和配置管理2.配置管理單擊配置列表右上角的“+”,會(huì)進(jìn)入新建配置頁面。7.3
命名空間管理和配置管理2.配置管理填寫配置相關(guān)信息后,單擊“發(fā)布”按鈕即可完成配置的新建,并跳轉(zhuǎn)回配置列表頁面展示最新的配置列表。7.3
命名空間管理和配置管理2.配置管理Nacos支持對(duì)兩個(gè)或多個(gè)版本之間的差異進(jìn)行編輯、比較和合并。在編輯配置頁面修改配置內(nèi)容后進(jìn)行發(fā)布時(shí),Nacos會(huì)比較配置修改前和修改后之間的差異,彈出內(nèi)容比較對(duì)話框。7.3
命名空間管理和配置管理2.配置管理Nacos提供JavaSDK通過代碼獲取配置和發(fā)布配置,使用同一個(gè)發(fā)布接口來創(chuàng)建或修改配置時(shí),當(dāng)配置不存在時(shí)會(huì)創(chuàng)建配置,當(dāng)配置已存在時(shí)會(huì)更新配置。try{StringserverAddr="localhost:8848";StringdataId="nacos-demo-dev";Stringgroup="DEFAULT_GROUP";Propertiesproperties=newProperties();properties.put("serverAddr",serverAddr);ConfigServiceconfigService=NacosFactory.createConfigService(properties);booleanisPublishOk=configService.publishConfig(dataId,group,"content");System.out.println(isPublishOk);Stringconfig=configService.getConfig(dataId,group,5000);System.out.println(config);}catch(NacosExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}7.3
命名空間管理和配置管理2.配置管理Nacos提供了配置的版本管理功能,通過歷史版本功能可以方便地查看和管理配置的歷史版本。單擊配置管理的“歷史版本”菜單,即可打開歷史版本頁面。7.3
命名空間管理和配置管理2.配置管理歷史版本頁面可以選擇不同命名空間下的配置的歷史版本。7.3
命名空間管理和配置管理2.配置管理Nacos可以動(dòng)態(tài)監(jiān)聽配置接口來實(shí)現(xiàn)配置的推送變更,當(dāng)配置發(fā)生變化時(shí),Nacos會(huì)自動(dòng)通知注冊(cè)的監(jiān)聽器,并觸發(fā)相應(yīng)的回調(diào)函數(shù)。使用Nacos動(dòng)態(tài)監(jiān)聽配置需要?jiǎng)?chuàng)建一個(gè)配置監(jiān)聽器,并重寫其receiveConfigInfo()方法,該方法將在配置發(fā)生變化時(shí)被調(diào)用。在需要監(jiān)聽配置變化的地方,注冊(cè)配置監(jiān)聽器到Nacos,這可以使用Nacos的ConfigService實(shí)例來完成。7.3
命名空間管理和配置管理2.配置管理Nacos注冊(cè)了配置監(jiān)聽器后,可以在Nacos控制臺(tái)中進(jìn)行監(jiān)聽查詢,以確認(rèn)配置的變化。在控制臺(tái)單擊左側(cè)的“監(jiān)聽查詢”菜單后,在對(duì)應(yīng)的命名空間下輸入配置信息可以查詢對(duì)應(yīng)的監(jiān)聽信息。Nacos配置的應(yīng)用7.47.4
Nacos配置的應(yīng)用先定一個(gè)小目標(biāo)!
先定一個(gè)小目標(biāo)!掌握Nacos配置應(yīng)用,能夠通過Nacos集成SpringBoot實(shí)現(xiàn)Nacos配置的應(yīng)用7.4
Nacos配置的應(yīng)用1.創(chuàng)建項(xiàng)目父工程文件7-1pom.xml源代碼在IDEA中創(chuàng)建一個(gè)名稱為nacos-config的Maven工程,在該工程的pom.xml文件中聲明SpringCloud、SpringCloudAlibaba、SpringBoot等依賴。7.4
Nacos配置的應(yīng)用2.創(chuàng)建服務(wù)模塊文件7-2pom.xml源代碼在nacos-config下創(chuàng)建名稱為service01的服務(wù)模塊,在該模塊的pom.xml文件中引入Nacos和SpringCloud的相關(guān)依賴,具體如文件7-2所示。7.4
Nacos配置的應(yīng)用3.發(fā)布配置啟動(dòng)Nacos,在Nacos控制臺(tái)中命名空間dev下添加配置并發(fā)布,配置的內(nèi)容如下所示。DataID:service01Group:DEV_GROUP配置格式:YAML配置內(nèi)容:common:name:itheima7.4
Nacos配置的應(yīng)用4.配置連接信息在SpringBoot應(yīng)用程序啟動(dòng)時(shí),加載配置文件的優(yōu)先級(jí)從高到低依次為perties、bootstrap.yml、perties、application.yml。對(duì)于Nacos來說,配置連接信息是非常重要的配置,它決定了應(yīng)用程序如何獲取配置中心的配置。為了確保配置連接信息會(huì)在其他業(yè)務(wù)相關(guān)的配置之前加載,以避免潛在的依賴問題和加載順序沖突,需要將Nacos的連接信息配置在perties或bootstrap.yml文件中。7.4
Nacos配置的應(yīng)用4.配置連接信息文件7-3bootstrap.yml源代碼在service01模塊下創(chuàng)建配置文件bootstrap.yml,并在該文件中設(shè)置Nacos配置的連接信息,包括Nacos配置中心的地址、命名空間、Group等,具體如文件7-3所示。7.4
Nacos配置的應(yīng)用5.獲取配置信息Spring框架中提供了ConfigurableApplicationContext接口負(fù)責(zé)管理應(yīng)用程序上下文,該接口提供的getEnvironment()方法可以獲取到代表應(yīng)用程序環(huán)境的Environment對(duì)象。Environment對(duì)象提供了一種獲取和操作配置屬性的方式。其中,getProperty()方法可以通過傳入屬性的名稱作為參數(shù)來動(dòng)態(tài)地獲取配置信息。@AutowiredprivateConfigurableApplicationContextapplicationContext;@GetMapping(value="/configs")publicStringgetConfigs(){returnapplicationContext.getEnvironment().getProperty("");}7.4
Nacos配置的應(yīng)用5.獲取配置信息@RefreshScope注解也可以實(shí)現(xiàn)動(dòng)態(tài)獲取配置信息,@RefreshScope注解是SpringCloud框架提供的用于實(shí)現(xiàn)配置的動(dòng)態(tài)刷新,當(dāng)一個(gè)Bean使用@RefreshScope注解標(biāo)記時(shí),這個(gè)Bean會(huì)成為一個(gè)可刷新的Bean。當(dāng)使用SpringCloud配置中心(如Nacos)的配置發(fā)生變化時(shí),被@RefreshScope標(biāo)記的Bean的配置也會(huì)被自動(dòng)刷新。7.4
Nacos配置的應(yīng)用5.獲取配置信息文件7-4ConfigController.java源代碼在service01模塊下包c(diǎn)om.itheima.controller,在該包下創(chuàng)建控制器類ConfigController,并在該類中定義方法獲取Nacos中的配置,此處使用@RefreshScope注解的方式動(dòng)態(tài)獲取配置信息,具體如文件7-4所示。7.4
Nacos配置的應(yīng)用6.創(chuàng)建啟動(dòng)類文件7-5NacosService01App.java源代碼在service01模塊下的com.itheima包下創(chuàng)建service01的啟動(dòng)類,具體如文件7-5所示。7.4
Nacos配置的應(yīng)用7.測(cè)試動(dòng)態(tài)獲取Nacos配置內(nèi)容依次啟動(dòng)Nacos和NacosService01App,在瀏覽器中訪問http://localhost:8001/configs獲取配置的信息。7.4
Nacos配置的應(yīng)用7.測(cè)試動(dòng)態(tài)獲取Nacos配置內(nèi)容在Nacos控制臺(tái)中將dev名稱空間下,DataID為service01配置內(nèi)容修改為如下。common:
name:itcast修改配置內(nèi)容后發(fā)布配置,再次在瀏覽器中訪問http://localhost:8001/configs獲取配置的信息。自定義DataID配置7.57.5
自定義DataID配置先定一個(gè)小目標(biāo)!
先定一個(gè)小目標(biāo)!掌握自定義DataID配置,能夠?qū)崿F(xiàn)Nacos自定義拓展的DataID配置和自定義共享DataID配置7.5
自定義DataID配置Nacos在程序啟動(dòng)時(shí)會(huì)自動(dòng)加載與當(dāng)前服務(wù)名稱相同的DataID的配置,但當(dāng)需要加載自定義的DataID時(shí),可以通過自定義擴(kuò)展來實(shí)現(xiàn)對(duì)DataID的配置。在多模塊的情況下,應(yīng)用程序可能存在許多共用的配置項(xiàng),例如數(shù)據(jù)庫(kù)連接信息和Redis連接信息等,為了實(shí)現(xiàn)這些配置在多個(gè)模塊間的共享,可以使用共享配置的方式,使得在多個(gè)應(yīng)用之間配置共享的DataID更加清晰明確。7.5
自定義DataID配置1.自定義拓展的DataID配置在SpringCloudAlibabaNacosConfig0.2.1版本之后,支持自定義DataID的配置。#1.DataID在默認(rèn)的組DEFAULT_GROUP,不支持配置的動(dòng)態(tài)刷新spring.cloud.nacos.config.extension-configs[0].data-id=perties#2.DataID不在默認(rèn)的組,不支持動(dòng)態(tài)刷新spring.cloud.nacos.config.extension-configs[1].data-id=pertiesspring.cloud.nacos.config.extension-configs[1].group=GLOBALE_GROUP#3.DataID既不在默認(rèn)的組,也支持動(dòng)態(tài)刷新spring.cloud.nacos.config.extension-configs[2].data-id=pertiesspring.cloud.nacos.config.extension-configs[2].group=REFRESH_GROUPspr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆山東省招遠(yuǎn)市第一中學(xué)生物高三第一學(xué)期期末聯(lián)考試題含解析
- 2025屆新疆維吾爾自治區(qū)克拉瑪依市第十三中學(xué)數(shù)學(xué)高二上期末統(tǒng)考模擬試題含解析
- 杜甫詩三首課件
- 2025屆洛陽市重點(diǎn)中學(xué)數(shù)學(xué)高二上期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
- 山西省大同市鐵路第一中學(xué)2025屆生物高一第一學(xué)期期末調(diào)研模擬試題含解析
- 2025屆河北省保定市博野縣高二生物第一學(xué)期期末聯(lián)考試題含解析
- 2025屆重慶銅梁縣第一中學(xué)數(shù)學(xué)高一上期末質(zhì)量跟蹤監(jiān)視試題含解析
- 2025屆廣東省珠海市生物高二上期末經(jīng)典模擬試題含解析
- 江蘇省五校2025屆數(shù)學(xué)高一上期末經(jīng)典試題含解析
- 遼寧省沈陽二中2025屆高三英語第一學(xué)期期末考試模擬試題含解析
- 期中測(cè)試卷(1-4單元)(試題)-2024-2025學(xué)年人教版數(shù)學(xué)四年級(jí)上冊(cè)
- 應(yīng)用文寫作+以“A+Clean-up+Activity”為題給學(xué)校英語報(bào)寫一篇新聞報(bào)道+講義 高二上學(xué)期月考英語試題
- 期中測(cè)試卷-2024-2025學(xué)年統(tǒng)編版語文六年級(jí)上冊(cè)
- 2024-2030年中國(guó)工業(yè)脫水機(jī)行業(yè)發(fā)展?fàn)顩r及投資方向分析報(bào)告
- 網(wǎng)絡(luò)傳播法導(dǎo)論(第2版)課件 第五章 侵害名譽(yù)權(quán)
- 環(huán)評(píng)手續(xù)轉(zhuǎn)讓協(xié)議(2篇)
- 胸外科快速康復(fù)護(hù)理課件
- 醫(yī)院污水處理運(yùn)維服務(wù)投標(biāo)方案(技術(shù)方案)
- 2024年高考最后一套壓軸卷-文綜試題(全國(guó)甲卷)含解析
- 蘇教版數(shù)學(xué)長(zhǎng)方體與正方體表面積解析
- 2024年國(guó)家開放大學(xué)形考作業(yè)答案
評(píng)論
0/150
提交評(píng)論