《架构师》反思:系统可靠性
最近系統(tǒng)學(xué)習(xí)了一個(gè)系統(tǒng)可靠性及其相關(guān)知識(shí),今天在這總結(jié)一下。
首先,什么是系統(tǒng)的可靠性呢?系統(tǒng)的可靠性是指在規(guī)定的時(shí)間內(nèi)及規(guī)定的環(huán)境下完成規(guī)定功能的能力,也就是系統(tǒng)的無(wú)故障運(yùn)行概率。
我會(huì)從以下幾個(gè)方面來(lái)歸納主要內(nèi)容:
1. 故障模型
2. 可靠性模型
3. 可靠性指標(biāo)
4. 可靠性設(shè)計(jì)
故障模型
系統(tǒng)故障是指硬件或者軟件的錯(cuò)誤狀態(tài),一般引進(jìn)故障的原因是這些:部件的失效、環(huán)境的物理干擾、操作錯(cuò)誤或不正確的設(shè)計(jì)。
按照時(shí)間的長(zhǎng)短,故障可以分為:永久性、間歇性、瞬時(shí)性。
故障的級(jí)別有:邏輯級(jí)故障、數(shù)據(jù)結(jié)構(gòu)級(jí)故障、軟件故障和差錯(cuò)故障、系統(tǒng)級(jí)故障。
可靠性模型
與故障模型想對(duì)應(yīng)的,就是系統(tǒng)的可靠性模型。常用的有以下三種:時(shí)間模型、故障植入模型和數(shù)據(jù)模型。
這三種模型暫時(shí)還沒有看懂(暈)。
可靠性指標(biāo)
可靠性指標(biāo),主要有以下幾個(gè):
平均無(wú)故障時(shí)間(MTTF-Mean Time To Failure)
它表示一個(gè)系統(tǒng)平均情況下,正常運(yùn)行的時(shí)間。
與它相關(guān)的指標(biāo)是“失效率”U,關(guān)系: U = 1 / MTTF。
平均故障修復(fù)時(shí)間(MTTR-Mean Time To Fix/Repire)
平均每次修復(fù)所需要的時(shí)間
平均故障間隔時(shí)間(MTBF-Mean Time Between Failure)
一看就知道,MTBF = MTTF + MTTR。
在實(shí)際情況下,一般MTTR都會(huì)比較小,所以我們近似地認(rèn)為MTBF = MTTF。
MTTF是用來(lái)說(shuō)明一個(gè)軟件系統(tǒng)能夠正常運(yùn)行的時(shí)間的指標(biāo)。它越大,說(shuō)明該系統(tǒng)越可靠。計(jì)算方法很簡(jiǎn)單,
可靠性計(jì)算
一個(gè)系統(tǒng)的可靠性計(jì)算往往不能直接得出。這是因?yàn)橛?jì)算機(jī)系統(tǒng)是一個(gè)復(fù)雜的系統(tǒng),影響其可靠性的因素也非常復(fù)雜。所以我們需要為其建立適當(dāng)?shù)臄?shù)據(jù)模型,把大系統(tǒng)劃分為若干子系統(tǒng),然后再根據(jù)一定原則進(jìn)行組合計(jì)算。
這種計(jì)算方法,可以簡(jiǎn)化分析的過(guò)程。
對(duì)于系統(tǒng)的劃分,我們可以把它分為:串聯(lián)系統(tǒng)、并聯(lián)系統(tǒng)、模冗余系統(tǒng)、混聯(lián)系統(tǒng)。(其中模冗余系統(tǒng)是M個(gè)并聯(lián)的子系統(tǒng)中,需要有N個(gè)以上的子系統(tǒng)能正常工作,整個(gè)系統(tǒng)才能正常工作。這種系統(tǒng),常在并聯(lián)后加上一個(gè)表決器。)
計(jì)算這些系統(tǒng)可靠性時(shí),我們需要計(jì)算出每個(gè)子系統(tǒng)的失效率,然后根據(jù)概率的加法原則(串聯(lián)系統(tǒng))和乘法原則(并聯(lián)系統(tǒng))進(jìn)行綜合運(yùn)算,最后得出整個(gè)系統(tǒng)的可靠性。
可靠性設(shè)計(jì)
本小節(jié)是整單的重點(diǎn)。
提高系統(tǒng)可靠性的方法,主要是兩種:避錯(cuò)和容錯(cuò)。避錯(cuò)主要是指提前做一些措施,避免系統(tǒng)在運(yùn)行中出現(xiàn)錯(cuò)誤。而容錯(cuò)則是指系統(tǒng)在運(yùn)行中部分組件出現(xiàn)錯(cuò)誤,仍然不失效,可以繼續(xù)運(yùn)行;或者當(dāng)數(shù)據(jù)、文件損壞或丟失后,系統(tǒng)可以自動(dòng)將這些數(shù)據(jù)恢復(fù)到以前的狀態(tài),使系統(tǒng)能夠繼續(xù)正常運(yùn)行。
測(cè)試就是最常用的一種避錯(cuò)技術(shù)。而容錯(cuò)則一般使用冗余來(lái)實(shí)現(xiàn)。
冗余技術(shù)
冗余技術(shù)是容錯(cuò)的主要手段。主是通過(guò)對(duì)資源的冗余,包括硬件、軟件、信息、時(shí)間等,可以使系統(tǒng)的容錯(cuò)性得到較大的提高。
結(jié)構(gòu)冗余
這里又分靜態(tài)冗余和動(dòng)態(tài)冗余。
靜態(tài)冗余一般是指增加同樣功能的部件,同時(shí)運(yùn)行,最后由表決器對(duì)結(jié)果進(jìn)行表決,以多數(shù)結(jié)果作為系統(tǒng)的最終結(jié)果。
動(dòng)態(tài)冗余則是做一些多重的設(shè)備儲(chǔ)備,當(dāng)系統(tǒng)檢測(cè)到某一部件失效時(shí),啟用相應(yīng)的新部件代替它進(jìn)行工作。這里有檢測(cè)、切換和恢復(fù)的過(guò)程,所以稱之為動(dòng)態(tài)冗余。這些多余的設(shè)備儲(chǔ)備,可與主模塊一起工作,也可以不工作,分別稱為熱備份和冷備份。冷備份缺點(diǎn)是當(dāng)主模塊失效時(shí),備份系統(tǒng)可能無(wú)法及時(shí)銜接上,因?yàn)閭浞輽C(jī)無(wú)法獲取到原來(lái)機(jī)器上所有的數(shù)據(jù)。
其實(shí),我們還可以結(jié)合以上兩種冗余的優(yōu)缺點(diǎn),使用混合冗余的方式,對(duì)系統(tǒng)進(jìn)行結(jié)構(gòu)性冗余設(shè)計(jì)。
信息冗余
添加一些額外的信息用于保證其正確性。例如:糾錯(cuò)碼。
時(shí)間冗余
類似結(jié)構(gòu)冗余,不過(guò)這里是在同一設(shè)備上執(zhí)行重復(fù)計(jì)算。
故障恢復(fù)策略
如果故障已經(jīng)發(fā)生,則需要一定的方法來(lái)恢復(fù)故障。一般有兩種恢復(fù)策略:向前和向后。
向前恢復(fù)是指不停止當(dāng)前的計(jì)算,而把系統(tǒng)從不連貫的狀態(tài)恢復(fù)為連貫的正確狀態(tài),需要有錯(cuò)誤的詳細(xì)說(shuō)明。例如我們可以在系統(tǒng)發(fā)生故障時(shí),把異常信息都捕獲到并存儲(chǔ)起來(lái)備案,然后盡量讓系統(tǒng)繼續(xù)執(zhí)行。這也是平常最常用的策略。
后向恢復(fù)是把系統(tǒng)恢復(fù)到之前的一個(gè)狀態(tài),然后繼續(xù)執(zhí)行。這種方法比較簡(jiǎn)單,但是卻造成程序運(yùn)行的不連貫性,不適應(yīng)一些高要求系統(tǒng),如實(shí)時(shí)系統(tǒng)。
軟件容錯(cuò)
主要有以下幾種方式:
恢復(fù)塊方法
這種方法是一種動(dòng)態(tài)的故障屏蔽技術(shù),采用的是后向恢復(fù)策略。它提供相同功能的主模塊和多個(gè)備用模塊,當(dāng)主功能計(jì)算完成后需要進(jìn)行驗(yàn)證測(cè)試,如果測(cè)試沒有通過(guò),則會(huì)使用備用模塊進(jìn)行計(jì)算,如果還是沒有通過(guò),則繼續(xù)使用下一個(gè)備用模塊。
設(shè)計(jì)時(shí)應(yīng)該保證實(shí)現(xiàn)主塊和備用塊之間的獨(dú)立性,使其不會(huì)相互影響。
N版本程序設(shè)計(jì)
此法是一種靜態(tài)故障屏蔽技術(shù),采用前向恢復(fù)策略。
采用多個(gè)相同功能的N份程序同時(shí)運(yùn)行,使用表決器進(jìn)行最后結(jié)果的表決。
重點(diǎn)在于:
N版本的程序設(shè)計(jì)應(yīng)該使用不同的方法,如不同的設(shè)計(jì)語(yǔ)言、不同的開發(fā)環(huán)境和工具。
同時(shí),由于N個(gè)程序同時(shí)運(yùn)行,最后同時(shí)表決,所以需要解決多個(gè)程序間的并發(fā)性。
防衛(wèi)式程序設(shè)計(jì)
此法的基本思想是在程序中包含錯(cuò)誤檢測(cè)代碼。一旦錯(cuò)誤發(fā)生,程序能撤銷錯(cuò)誤狀態(tài),恢復(fù)到一個(gè)已知和正確狀態(tài)中去。包括錯(cuò)誤檢測(cè)、破壞估計(jì)和錯(cuò)誤恢復(fù)三個(gè)方面。
這種方式主要是以軟件的形式來(lái)容錯(cuò),也就是說(shuō)軟件自身有較強(qiáng)的容錯(cuò)性,較為常用。
集群
集群是由兩個(gè)以上的節(jié)點(diǎn)機(jī)(一般是服務(wù)器)構(gòu)成的一種松散耦合的計(jì)算節(jié)點(diǎn)集合,為用戶提供網(wǎng)絡(luò)服務(wù)或應(yīng)用程序(包括數(shù)據(jù)庫(kù)、Web服務(wù)和文件服務(wù)等)的單一客戶視圖,同時(shí)提供接近容錯(cuò)機(jī)的故障恢復(fù)能力。
一說(shuō)到集群,一般會(huì)想到使用它來(lái)為應(yīng)用程序提供一種可擴(kuò)展的高性能設(shè)計(jì)。但是集群同時(shí)還可以為應(yīng)用程序提供較高的容錯(cuò)能力。以下是集群的分類:
高性能計(jì)算科學(xué)集群、負(fù)載均衡集群、高可用性集群
在實(shí)際應(yīng)用中,這三種基本類型經(jīng)常會(huì)混合使用。
硬件配置
(1)鏡像服務(wù)器雙機(jī)
使用兩臺(tái)單獨(dú)的服務(wù)器做鏡像服務(wù)器,之間使用鏡像軟件通過(guò)網(wǎng)絡(luò)同步數(shù)據(jù)。鏡像服務(wù)器的性能比單一服務(wù)器的性能要低,適用對(duì)集群系統(tǒng)要求不高的用戶,
特點(diǎn):簡(jiǎn)單、價(jià)格最低廉、可靠性較低、占用網(wǎng)絡(luò)資源、性能較低。
(2)雙機(jī)和磁盤陣列柜
此方式同樣使用雙服務(wù)器,同時(shí)后端的數(shù)據(jù)存儲(chǔ)使用磁盤陣列柜。陣列柜為雙機(jī)提供邏輯盤陣訪問(wèn),并不隨意擴(kuò)展新的物理磁盤。
此方式不需要進(jìn)行數(shù)據(jù)的同步,所以性能較鏡像服務(wù)器要高出很多。但是可能會(huì)導(dǎo)致“單點(diǎn)錯(cuò)”,即系統(tǒng)中某一部件或某個(gè)應(yīng)用程序發(fā)生故障時(shí),導(dǎo)致所有系統(tǒng)全部宕機(jī)。如磁盤陣列如果出錯(cuò),可能會(huì)導(dǎo)致存儲(chǔ)的數(shù)據(jù)全部丟失。
特點(diǎn):性能較高、可能導(dǎo)致單點(diǎn)錯(cuò)誤。
(3)光纖通道雙機(jī)雙控集群系統(tǒng)
使用光纖來(lái)組建通道進(jìn)行連接。允許鏡像配置。
特點(diǎn):擴(kuò)展性強(qiáng)、費(fèi)用較高。
隨著硬件和網(wǎng)絡(luò)操作系統(tǒng)的發(fā)展。集群技術(shù)將會(huì)在系統(tǒng)可用性、高可靠性和系統(tǒng)冗余方面逐步提高。
(如以后的集群可以依靠集群文件系統(tǒng)實(shí)現(xiàn)對(duì)系統(tǒng)中所有文件、設(shè)備和網(wǎng)絡(luò)資源的全局訪問(wèn),并且生成一個(gè)完整的系統(tǒng)映像。)
論文閱讀總結(jié)
可靠性工程
原文鏈接: http://wenku.baidu.com/view/98b021225901020207409c76.html
該文從工程學(xué)的角度來(lái)說(shuō)明了可靠性工程如何開展,并舉例說(shuō)明如何在軟件開發(fā)過(guò)程中應(yīng)用可靠性工程。
概念及發(fā)展
簡(jiǎn)單的定義:基于軟件產(chǎn)品的可靠性進(jìn)行預(yù)測(cè)、建模、估計(jì)、度量及管理。
其目標(biāo)是提高軟件系統(tǒng)的可靠性。為達(dá)到這個(gè)目的,我們需要明白失效產(chǎn)生的原因。
核心問(wèn)題:如何開發(fā)出高可靠性的軟件;另一問(wèn)題:如何評(píng)估已有系統(tǒng)的可靠性。
在軟件開發(fā)中的應(yīng)用
可靠性工程貫穿于軟件開發(fā)生命周期的各個(gè)階段。
項(xiàng)目開發(fā)計(jì)劃及需求分析階段
本階段中,主要是要明確可靠性需求,建立系統(tǒng)的可靠指標(biāo)。一般情況下,可靠性工作可如下安排:
1)確定功能概圖
功能概圖主要描述系統(tǒng)中各功能及其使用環(huán)境和被使用的概率。
2)對(duì)失效進(jìn)行定義和分類
3)確實(shí)用戶的可靠性需求
4)平衡性研究
5)建立可靠性指標(biāo)
軟件設(shè)計(jì)和功能實(shí)現(xiàn)階段
該階段主要工作:
1)在模塊間分配可靠性指標(biāo)
分解系統(tǒng)為多模塊,各模塊間分配指標(biāo),使得最后計(jì)算出的總指標(biāo)滿足需求。
2)按可靠性指標(biāo)進(jìn)行設(shè)計(jì)
有關(guān)可靠性設(shè)計(jì)的內(nèi)容,參見在上文中內(nèi)容。
3)根據(jù)功能概圖集中資源配置
4)控制錯(cuò)誤的引入和傳播
軟件審查(代碼審核)、軟件測(cè)試(單元測(cè)試和集成測(cè)試)。
5)測(cè)試現(xiàn)成軟件的可靠性
系統(tǒng)測(cè)試和現(xiàn)場(chǎng)試運(yùn)行階段
該階段是保證可靠性的最后階段。主要工作:
1)確實(shí)操作概圖
操作概圖主要描述系統(tǒng)最后可以使用的各操作(命令)及其使用環(huán)境和被使用的概率。
2)可靠性增強(qiáng)測(cè)試
系統(tǒng)測(cè)試、交付測(cè)試。
按照操作概圖中的概率執(zhí)行測(cè)試用例,模仿用戶的應(yīng)用方式測(cè)試。
3)根據(jù)測(cè)試來(lái)證明是否已經(jīng)達(dá)到可靠性指標(biāo)
收集失效數(shù)據(jù),規(guī)劃室額外的測(cè)試。
4)現(xiàn)場(chǎng)可靠性評(píng)估
分析數(shù)據(jù),分析差異原因。
維護(hù)階段
主要工作:
1)規(guī)劃交付使用后的人員需求。
2)監(jiān)視現(xiàn)場(chǎng)可靠性,并做出適當(dāng)?shù)恼{(diào)整。
3)監(jiān)視并維護(hù)新功能引起的失效。
4)分析軟件交付后失效的產(chǎn)生原因,指導(dǎo)工程改進(jìn),降低引入類似錯(cuò)誤的可能性。
成功案例
文中以一交換機(jī)的研發(fā)做為例子,說(shuō)明可靠性工程的應(yīng)用,給產(chǎn)品帶來(lái)了驚人的好處:
問(wèn)題數(shù)下降、維護(hù)費(fèi)用下降、測(cè)試件間隔縮短、引入新產(chǎn)品的間隔縮短、客戶滿意度提升。
原因如下:
⑴把可靠性作為確定是否發(fā)行的標(biāo)準(zhǔn),可避免用戶在使用中反映過(guò)多問(wèn)題和進(jìn)行相應(yīng)的維護(hù)工作。
⑵采用“操作概圖驅(qū)動(dòng)”的測(cè)試方法,提高了測(cè)試效率;20%的操作覆蓋了95%的應(yīng)用,20%的錯(cuò)誤導(dǎo)致了95%的實(shí)效;先測(cè)試20%的使用最頻繁的操作可以加速可靠性的提高。
結(jié)束語(yǔ)
國(guó)內(nèi)外還未能有系統(tǒng)化的可靠性工程學(xué)理論。我們需要不斷結(jié)合實(shí)踐進(jìn)行研究和總結(jié),為使可靠性工作成為有計(jì)劃、有組織和有目標(biāo)的研究工作而努力。
高可靠性測(cè)試
原文鏈接: http://tech.it168.com/a2008/0829/202/000000202483.shtml
該文以作者參與的CraftGS系統(tǒng)為例,講述了如何在系統(tǒng)中應(yīng)用測(cè)試技術(shù)保證軟件的高可靠性,這些技術(shù)包括:軟件驗(yàn)證、軟件確認(rèn)、軟件測(cè)試管理。
綜述
高可靠性軟件泛指一類軟件:該類軟件運(yùn)行過(guò)程中若出現(xiàn)故障會(huì)引發(fā)重大災(zāi)難性事故或經(jīng)濟(jì)損失。通常航天型號(hào)軟件、銀行系統(tǒng)軟件、醫(yī)療行業(yè)軟件、通訊行業(yè)軟件等均屬此范疇。
作者的CraftGS系統(tǒng)就是可靠性要求較高的一個(gè)軟件系統(tǒng),其中各子系統(tǒng)的可靠性指標(biāo)都在0.95以上。
方案:軟件驗(yàn)證技術(shù) + 軟件確認(rèn)技術(shù) + 軟件測(cè)試管理。
驗(yàn)證技術(shù)主要是人工完成,方法有:面對(duì)面質(zhì)詢、文檔抽查、非正式會(huì)議、同行評(píng)審等等。
軟件確認(rèn)技術(shù)則主要著眼于排除程序代碼中的錯(cuò)誤。目前支持很好的自動(dòng)化。
工程質(zhì)量的把控,主要依靠測(cè)試管理,分為:“軟件測(cè)試團(tuán)隊(duì)組織管理、軟件測(cè)試計(jì)劃管理、軟件缺陷(錯(cuò)誤)跟蹤管理以及軟件測(cè)試件管理”四大部分。
軟件驗(yàn)證技術(shù)
主要包含以下方面:
需求規(guī)格說(shuō)明驗(yàn)證
保證用戶的所有需求(功能、業(yè)務(wù)、非功能、約束)都已經(jīng)被分配到軟件需求規(guī)格說(shuō)明的各需求項(xiàng)中。
設(shè)計(jì)規(guī)格說(shuō)明驗(yàn)證
主要是逐步檢查概要設(shè)計(jì)和詳細(xì)是否全部分配了之前的分析成果。其中,還要進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)的驗(yàn)證。
代碼驗(yàn)證
包括:代碼規(guī)范審查、代碼審查和代碼靜態(tài)分析。
交付驗(yàn)證
在測(cè)試完成后,系統(tǒng)交付客戶前,需要進(jìn)行交付驗(yàn)證和測(cè)試。交付驗(yàn)證包括安裝驗(yàn)證和使用驗(yàn)證兩部分,以確保軟件和用戶手冊(cè)匹配。
軟件確認(rèn)技術(shù)
其實(shí)這里是測(cè)試技術(shù)。有:
單元測(cè)試(白盒)
建構(gòu)樁模塊和驅(qū)動(dòng)模塊以驅(qū)動(dòng)被測(cè)單元(函數(shù)、類、模塊)運(yùn)行,使用設(shè)計(jì)好的測(cè)試用例對(duì)各單元進(jìn)行測(cè)試。
集成測(cè)試(灰盒)
驗(yàn)證各模塊組裝后的軟件是否能達(dá)到概要設(shè)計(jì)規(guī)格說(shuō)明中模塊的設(shè)計(jì)目標(biāo);各模塊內(nèi)部是否存在沖突,保模塊能否正常工作。一般采用自底向上按集成度由小到大進(jìn)行集成測(cè)試。
系統(tǒng)測(cè)試(黑盒)
檢測(cè)系統(tǒng)是否滿足軟件需求規(guī)格說(shuō)明中的各需求項(xiàng),包括:業(yè)務(wù)需求、功能需求、非功能需求(質(zhì)量屬性)及約束。雖然不涉及代碼,但是由于需求項(xiàng)涉及的領(lǐng)域較廣,所以測(cè)試方法多而雜,如:
功能測(cè)試、執(zhí)行路徑測(cè)試、可靠性測(cè)試、壓力測(cè)試、可恢復(fù)性測(cè)試、可移植性測(cè)試……等。
這些測(cè)試的特點(diǎn):在一定環(huán)境條件下(如:模擬現(xiàn)場(chǎng)或極端條件),設(shè)計(jì)并運(yùn)行各種測(cè)試用例,根據(jù)測(cè)試結(jié)果數(shù)據(jù),評(píng)估軟件系統(tǒng)是否符合軟件需求項(xiàng)的各類要求。
交付測(cè)試
交付測(cè)試的主要參與者是目標(biāo)客戶,客戶參與越多越好。主要進(jìn)行:安裝測(cè)試、可用性測(cè)試、alpha測(cè)試、beta測(cè)試等。
軟件測(cè)試管理
軟件測(cè)試團(tuán)隊(duì)組織管理
是否能組建一個(gè)合適的測(cè)試團(tuán)隊(duì),直接影響到測(cè)試工作的進(jìn)展和質(zhì)量。作者的CraftGS系統(tǒng)中的測(cè)試團(tuán)隊(duì),有資深測(cè)試專家、測(cè)試人員、兼職人員(同行評(píng)審)、測(cè)試新手。
軟件測(cè)試計(jì)劃管理
其實(shí)就是安排好測(cè)試的流程。
主要有:軟件測(cè)試策劃、軟件測(cè)試技術(shù)剪裁、測(cè)試進(jìn)度管理、成本管理。
軟件缺陷(錯(cuò)誤)跟蹤管理
跟蹤一個(gè)錯(cuò)誤的全生命周期,確保每一個(gè)錯(cuò)誤都能及時(shí)糾正及不引入新的錯(cuò)誤。當(dāng)測(cè)試人員提交錯(cuò)誤后,需要督促開發(fā)團(tuán)隊(duì)及時(shí)修正,并在修正完成后進(jìn)行回歸測(cè)試。一般使用BUG管理系統(tǒng)即可。
軟件測(cè)試件管理
努力建設(shè)好測(cè)試團(tuán)隊(duì)的財(cái)富庫(kù)并對(duì)測(cè)試團(tuán)隊(duì)成員進(jìn)行技能培訓(xùn)以幫助他們能使用好這個(gè)財(cái)富庫(kù)。
測(cè)試件(Testware)是指測(cè)試工作形成的產(chǎn)品,包括:實(shí)踐中積累的經(jīng)驗(yàn)教訓(xùn)、測(cè)試技巧、測(cè)試工具、規(guī)格文檔及一些通用腳本。
測(cè)試件管理工作主要是:建設(shè)與培訓(xùn)。
結(jié)語(yǔ)
目前對(duì)高可靠性軟件如何實(shí)話軟件測(cè)試技術(shù)仍是一個(gè)頗不成熟的領(lǐng)域,缺少一種體系化的方法。
歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明:
轉(zhuǎn)載自 胡慶訪[http://zgynhqf.cnblogs.com/]
總結(jié)
以上是生活随笔為你收集整理的《架构师》反思:系统可靠性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 京剧的起源
- 下一篇: 下列现役军人中,可以称为中国人民解放军现