五、XXX管理平臺(tái)系統(tǒng)架構(gòu)
前言
系統(tǒng)架構(gòu)是項(xiàng)目中技術(shù)實(shí)現(xiàn)的重要的環(huán)節(jié)。系統(tǒng)架構(gòu)的良好與否關(guān)系到系統(tǒng)的性能指標(biāo)、安全指標(biāo)、穩(wěn)定性指標(biāo)、可擴(kuò)展性、業(yè)務(wù)實(shí)現(xiàn)等等。
系統(tǒng)架構(gòu)涉及到系統(tǒng)硬件的選型、網(wǎng)絡(luò)拓?fù)洹⒉僮飨到y(tǒng)選型、數(shù)據(jù)庫選型、B/S與C/S的選型、B/S各框架的選擇、緩存的實(shí)現(xiàn)、數(shù)據(jù)庫設(shè)計(jì)等諸多方面。
在大型IT企業(yè)中,項(xiàng)目經(jīng)理和架構(gòu)師是分離的;但對于國內(nèi)IT公司尤其是小企業(yè)來說,成了一種奢望。項(xiàng)目經(jīng)理一肩挑的現(xiàn)狀至少短期之內(nèi)還是無法改變的,這自然也增加了項(xiàng)目經(jīng)理的痛苦指數(shù)和工作量。
關(guān)于系統(tǒng)架構(gòu)是什么?我認(rèn)同一句話:架構(gòu)即關(guān)注點(diǎn)分離。
項(xiàng)目經(jīng)理不是的,系統(tǒng)架構(gòu)需要更廣博的知識,當(dāng)然某些方面專業(yè)的知識也是必須的,這取決于平時(shí)知識的積累和總結(jié),也需要其他團(tuán)隊(duì)成員共同的努力。
系統(tǒng)硬件
關(guān)于系統(tǒng)硬件的選型,首先是根據(jù)業(yè)務(wù)需求和性能指標(biāo)確定硬件的需求數(shù)量和相應(yīng)型號;舉例說:一個(gè)普通的B/S系統(tǒng)需要有web應(yīng)用服務(wù)器,數(shù)據(jù)庫服務(wù)器,如果對于性能有較高的要求,則需要增添cache服務(wù)器;如果對于穩(wěn)定性和高可用性有特殊的要求,則需要對相應(yīng)的服務(wù)器進(jìn)行集群處理。
關(guān)于系統(tǒng)硬件的選型,一是關(guān)于廠商的選擇(有IBM和HP之爭),一是關(guān)于機(jī)器架構(gòu)的選擇(PC服務(wù)器和小型機(jī)),再則是某種機(jī)型的選擇(在本系統(tǒng)中主要為HP360和HP580);再細(xì)的話是更細(xì)型號的選擇了(HP360、HP580都至少有十幾種型號),后是機(jī)器選件,比如是否需要擴(kuò)充硬盤、內(nèi)存或者CPU。
其實(shí)重要的一項(xiàng)是預(yù)算,呵呵。本系統(tǒng)的硬件采購是由甲方采購的,但是架構(gòu)是由自己做的,方案如果有之前的案例會(huì)很輕松很多,很不幸,這個(gè)方案改了幾十版,跨度達(dá)到4個(gè)月。無他,對硬件,我不熟。
系統(tǒng)軟件
關(guān)于系統(tǒng)軟件的選擇主要上是操作系統(tǒng)、數(shù)據(jù)庫、開發(fā)工具
選擇什么樣的操作系統(tǒng)與計(jì)算機(jī)硬件本身有很密切的聯(lián)系,當(dāng)然也與甲方的要求有關(guān)。Linux/Windows/專有UNIX都是可選項(xiàng),windows囿于安全性原因,一般不為推崇;UNIX與硬件有很大關(guān)聯(lián),一般也很少用;所以普遍選擇的是Linux;
關(guān)于操作系統(tǒng)版本的選擇,一般建議選擇目前市面比較穩(wěn)定的版本,新的版本往往意味著兼容性問題,太老的版本一般有性能問題;
關(guān)于操作系統(tǒng)的32/64位的選擇,這個(gè)需要硬件的支持;在64位CPU上安裝32位的操作系統(tǒng)意味著資源的浪費(fèi);在這個(gè)項(xiàng)目上曾經(jīng)考慮有所欠妥,結(jié)果造成了一定的問題。
關(guān)于數(shù)據(jù)庫的選擇,與操作系統(tǒng)有一定關(guān)系,也和對系統(tǒng)的安全性、穩(wěn)定性、高并發(fā)性有一定關(guān)系;雖然一個(gè)好的DBA在任何一種數(shù)據(jù)庫上都可以構(gòu)建出高可用性的數(shù)據(jù)庫,呵呵。
關(guān)于開發(fā)工具的選擇,與操作系統(tǒng)相關(guān),也與甲方的要求有關(guān),開發(fā)工具一向有java和微軟兩條線路之爭;在本系統(tǒng)中采用的當(dāng)然是java了。
關(guān)于web中間件的選擇,與開發(fā)工具、操作系統(tǒng)都有關(guān)系,JBOSS,websphere,tomcat,resin,web logic都有一定的擁蹇和市場;取決與甲方的要求和本團(tuán)隊(duì)對相應(yīng)系統(tǒng)的熟悉程度。
B/S架構(gòu)
關(guān)于系統(tǒng)軟件架構(gòu)通常是指的是B/S部分實(shí)現(xiàn)的具體框架,此部分仍屬于技術(shù)架構(gòu)部分。
眾所周知,B/S的框架有不下數(shù)十種,常用的有SSH(Structs + Spring + Hibernate)和SSI(Structs + Spring + iBatis),SSH和SSI從本質(zhì)上沒有什么不同,是實(shí)現(xiàn)業(yè)務(wù)邏輯層、控制層、數(shù)據(jù)持久層和展現(xiàn)層的分離。
B/S緩存的架構(gòu):OS Cache + Eh Cache 說到軟件架構(gòu),我不太在行了;我做過Powerbuilder,ASP,java(JSP,HTML,CSS,Javascript,structs,spring,xml,xsl,ajax,web service)不過都是入門級水平,實(shí)在連個(gè)稱職的程序員都算不上,的好處是對方方面面都略知一二,查資料方便一點(diǎn)而已,呵呵。我個(gè)人只是在數(shù)據(jù)倉庫和數(shù)據(jù)庫開發(fā)、設(shè)計(jì)方面還算有點(diǎn)研究。
幸虧下面有相應(yīng)的項(xiàng)目經(jīng)理,也是項(xiàng)目中的技術(shù)經(jīng)理,他在這方面是權(quán)威,B/S技術(shù)架構(gòu)本來是一個(gè)虛虛實(shí)實(shí)的框架,呵呵。
系統(tǒng)同步和接口架構(gòu)
關(guān)于數(shù)據(jù)同步,在本平臺(tái)中是重要的環(huán)節(jié),缺少數(shù)據(jù)的系統(tǒng)是無用的;為了實(shí)現(xiàn)系統(tǒng)數(shù)據(jù)同步架構(gòu),我曾先后在虛擬機(jī)上進(jìn)行過oracle高級復(fù)制、Oracle Stream的測試,也曾為了該同步和公司技術(shù)總監(jiān)吵過N多次,他主張用程序來實(shí)現(xiàn),不過在他那邊總是不了了之。
盡管通過測試,高級復(fù)制和stream都可以實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)同步,不過我知道在實(shí)際生產(chǎn)環(huán)境中是遠(yuǎn)遠(yuǎn)不會(huì)這么簡單的;
首先源數(shù)據(jù)和目標(biāo)源的結(jié)構(gòu)并非完全一致,允許目標(biāo)源的結(jié)構(gòu)大于原數(shù)據(jù)源的結(jié)構(gòu)
其次多環(huán)節(jié)數(shù)據(jù)實(shí)時(shí)同步,從中心數(shù)據(jù)庫到電信數(shù)據(jù)庫,再從電信數(shù)據(jù)庫同步到網(wǎng)通數(shù)據(jù)庫。
再次各數(shù)據(jù)庫均采用RAC方式,現(xiàn)實(shí)的例子中很少有類似應(yīng)用。
后Oracle的stream有許多的bug,需要進(jìn)行不斷調(diào)試和patch升級。
事實(shí)上,在同步方案的過程中,也遭遇到很大的困難,前后的測試和終順利實(shí)施經(jīng)歷了2個(gè)月之久,不過stream仍需要不斷的人工監(jiān)控和干預(yù)。我相信到目前為止即使市面上也沒有任何一種完全穩(wěn)定的同步方案。
關(guān)于MQ、Webservice、LDAP接口,目前的業(yè)務(wù)和技術(shù)雖然已經(jīng)完全實(shí)現(xiàn),但是還缺乏穩(wěn)定性和一致性。