|
|
|
網站技術設計完全手冊
orld Wide Web (WWW) 的誕生在某種意義上,提供了一個低成本的內容發行管道,但是
“低成本”卻不能意味著“低品質”。恰恰相反,正因為互聯網路使得資訊內容的發行成本降低了,所以更應該在內容的呈獻上花力氣、花本錢,大做文章,做得更好。
網站內容呈獻是網站開發的一項重點,它最直接影響到一個網站的受歡迎程度。最起碼的要求,是用戶必須能有效地使用網站和流覽網站的內容。
內容呈獻除了直接與網頁的版面和圖像設計有關之外,更深一層的是與網站的技術結構設計相聯繫的。尤其是目前靜止網頁的用途已降到次要位置,網頁的內容均以對話模式呈現。對話模式代表的並不只是網頁語言HTML的延伸,對話模式的實現需要網頁背後網站伺服器的大量軟體支援。
網站用戶代表的是一個以幾何級數膨脹的群體。據統計,中國互聯網用戶每半年翻一翻。如何在保證網站高性能的前提下,不斷滿足越來越多用戶的需求。這一問題從另一角度來理解,將牽涉到網站內部結構的規劃、設計、擴展與系統維護。
電子商務在全球剛剛起步,在中國由於環境還不成熟,電子商務仍然起步艱難,但卻普遍相信,這將是必然的趨勢。電子商務將使我們每人越來越依靠我們的“用戶名”和“密碼”,我們的數碼身份一旦被盜後果不堪設想。所以,網站的安全管理是刻不容緩的。
本文圍繞著網站的可使用性展開,並對所牽涉的網站技術的上層結構的幾個方面進行闡述,這主要包括網站性能、可擴展性、可用性、可維護性和網站的安全管理等幾方面。
◆網站的上層結構
網站技術到目前已發展為相當複雜的技術。這一技術融匯了TCP/IP網路技術、客戶/伺服器計算模式、資料庫、安全管理、Java技術、電腦圖形學和用戶介面設計等等。
眾所周知,網站是建立在TCP/IP網路協定之上的服務程式,TCP/IP提供了一種通用的可靠資料資訊傳遞服務。在此之上,
HTTP協定則提供了網站運轉最直接使用的功能——它可靠地把伺服器的網頁傳遞給網路另一端的網站用戶。除此之外,HTTP還可以把網站用戶輸入的資訊傳送到伺服器。在HTTP協定以上便是網站設計師的天地,也就是本文要談的網站的上層結構。
仔細討論每一功能塊的技術功能並非本文的目的。粗略而言,外界要進網站必須先經過防火牆、安全伺服器和目錄伺服器直接支援防火牆的運作。通過防火牆後,外界用戶的資訊被HTTP伺服器接收。如果用戶要求的只是一幅網頁,HTTP伺服器將直接從檔伺服器中提取所需網頁傳送給用戶。如果用戶資訊包含進一步探訪要求,HTTP伺服器將求助於CGI伺服器,CGI代表的是“公共閘道介面”,CGI伺服器存放著處理各種用戶探訪的軟體,它在處理完用戶探訪之後,把結果送還給HTTP伺服器,再傳送回給用戶。但更多情況,CGI伺服器會相繼喚起各類應用伺服器來為用戶服務。
從上圖可見幾種廣泛使用的應用伺服器,不同伺服器可以設置在同一台電腦上,或由不同的機器來承擔。不同的機器之間需要用網路來連接,一種服務亦可由多台機器來承擔。例如,為分配處理量,用戶名從A-M和N-Z的電子郵件由兩台伺服器來分擔。
網站上層的設計工作包括各個伺服器功能具體細節定義,伺服器的組織形式,容量規劃,網站內部結構擴展路徑,可用性考慮和安全管理策略。
◆網站的可使用性
網站必須設計得易於使用,網站不能只是資訊的簡單堆砌。這一要求最直接地與網站的版面設計和伺服器的功能定義相關聯。隨著商業化網站的增加和發展,人們慢慢總結出一些網站可使用性方面的要求,但在很大程度上,人們對可使用性的瞭解仍處於啟蒙階段。所以,這裏只能列出一些在網站設計中該做和不該做的,還談不上任何完整的指導。
1.網站的可使用性
網站的可使用性包括了以下幾點:
(1)網站要有好的導航功能,以便讀者游徊。
譬如,每一網頁都應能鏈結到網站的主頁,和邏輯上的前頁後頁、上頁下頁,當網站網頁數目超過100頁時,考慮提供搜索引擎服務。
(2)網站網頁要有好的被檢索設計。
上面提到,大型網站要提供檢索功能,為了讓檢索出來的結果真切地反映網頁內容的相關性,應該用簡潔明瞭的文字來撰寫網頁的題目和標題。同時注意用好網頁最前面的二三十個文字,以期最精華地反映網頁的內容。因為,搜索引擎也將摘錄網頁的這部分再現給用戶。
除此之外,應定義好網頁的關鍵字,以增大被檢索到的概率。
(3) 網頁要有可讀性。
網頁需要有結構,尤其是長篇的網頁,可以考慮把長篇的網頁分開成多幅,或者提供網頁之內的捷徑鏈結,使用戶可以很快地跳躍過部分篇幅。有節制地使用網頁上的動感畫面和動感標題,因為過度使用將影響用戶閱讀。
注意圖像編輯、色調、色彩與剪裁,使其與總體相稱。
留意網頁的下載速度。再好的網頁,如果需要超過10秒鐘下載時間,也將會失去觀眾。網頁的下載速度將牽涉到下面要談論的網站高性能問題,但在網站容量恒定的情況下,注意網頁圖像檔的多少和大小是控制網頁下載速度最有效辦法。
(4)網站應能讓用戶達到其專門的使用目的。
這可以說是一個籠統的題目,其中包含了廣泛的話題。譬如說,用戶在使用網站的電子郵件功能,幾方面將影響其使用效率。第一,用戶介面的設計;第二,電子郵件伺服器的回應時間和處理速度;第三,網路傳送的速度;第四,網站和應用軟體的可靠性。除了用戶介面設計與以上討論緊密聯繫之外,其他方面都將在以下具體討論。這個例子說明,網站的可用性,其實牽動了網站技術結構的總體。
2. 網站的交互性
交互性網站是網站發展的主流趨勢。通過網站的交互有人對機和人對人兩種。人對機交互,例如有網上多媒體點歌播放、線上購物、訂票。這種交互性增強了網站的綜合實體的感覺,仿佛日常所做的一切事情都可以在網站上完成。人對人的交互,有電子郵件、BBS、聊天室等等。利用網站的交互性,可以為用戶提供一個大家庭的氛圍,大家可以在網上結群、聊天。
網站設計應提供足夠的交互管道,最起碼的要提供電子郵件、BBS、聊天(上接18版)
室等應用,在網站上設回饋信箱。同時注意融匯新的交互技術與手段,例如,美國“美國線上”公司研製的立時郵差,可以自動探尋和某一用戶同時在網站內的朋友,以幫助他們聯繫上。又如,最早的電子郵件只能發送純文字檔案,現在已可以發送網頁、圖像、軟體等。而最新的趨勢是,電子郵件將與用戶的手機、家裏辦公室的留言機連在一起,手機和留言機的資訊都可以用電子郵件傳送。
在入機交互方面亦有新的技術發展。一直以來,人機交互受到網路帶寬和電腦功能的限制,這方面正在逐漸得到緩解。尤其高性能PC機的造價已可接受,其性能可支援下載多媒體檔的同步播放。新的媒體技術使多媒體檔得到壓縮,而又不損失視聽品質。這方面,MP3音樂格式是最新的發明,這類的技術也將融匯到網站的內容裏面來,使網站的人機交互更為豐富。
另一趨勢是,人機交互與人人交互將越來越並行使用。例如,當用戶使用網上訂票服務時,用戶有需要因票務與航空公司直接聯繫。這種情況下,如果用戶上網已佔用了電話線,則最理想的解決辦法是通過IP電話。一種技術設想是,在網頁上設置一個電話按鈕。它可以是一個JAVA
APPLET,背後連通到IP電話的協定介面,從而支援即時的人機與人人交互。
值得注意的是,網站的交互應用,大大地增加了對網站處理功能、存儲容量、網路帶寬的要求,內部結構設計要相應地調整。這些下面會專門的討論。
◆高性能網站與網站可擴展性
在以上討論網站的可使用性時,也提到了一個網站所必須具備的高性能。更具體地說,高性能可以用以下幾方面來衡量:
* 回應時間
* 處理時間
* 用戶平均等待時間
* 系統輸出量
網站技術結構設計的目標之一便是高性能,即系統輸出量大、回應快、處理及時,而用戶平均等待時間短的系統。
1.如何提高網站的性能
提高網站性能的技術步驟開始于網站建設的起始。首先第一步是容量計畫。容量計畫是根據網站需要應付的用戶數目及網站應用所需的計算處理量,來確定網站首期(和二期)所需的伺服器計算功率、記憶體及存儲容量和網站連接上互聯網的速度及相應的網路設備要求。
在確定了用戶數目和所支援的應用範圍之後,就可以設計出合理的伺服器群組織結構和網路連接方式。這一技術步驟最有想像餘地,有很多因素需要思考,該步驟對網站最終性能有決定性的影響。這一技術步驟也沒有現成的方法去拷貝,很大程度上需要想像力,在此僅提出以下要考慮的問題。
(1)獨立式超級伺服器與多台分散式伺服器群的選擇。
儘管標題中後者,多台分功能伺服器群漸漸成為網站伺服器內部結構的首選,但還是值得一提其中牽涉的技術問題。
網站上層由所示幾大功能塊組成
獨立式超級伺服器集多項網站處理功能於一身,可以伺服每秒上千次網站訪問,具有容易管理的優點。同時超能電腦的製造技術已使這類伺服器的可靠性相當高,達到近99.9%的可用性。另外,這類伺服器亦有相當的可維護性,硬體添加在一定範圍內可以不用關機。但使用獨立式伺服器的缺點是,價格昂貴,尤其在性能價格比上遜於分散式伺服器;存在單一故障點,只要獨立伺服器一出問題,整個網站即告下網。
多台分散式伺服器群採納了分佈系統策略。每台伺服器並不超能,但因為多台伺服器可以並行工作,使總體處理速度加快。因為,每台伺服器價錢不貴,設置冗余伺服器的成本並不高。冗余伺服器在正常運行情況下,亦分擔計算處理量,只是當主要伺服器出故障,或需要維修時才轉換到冗餘伺服器上。冗余伺服器的設置既增加整體系統的可靠性,亦增強了系統的處理能力。
現今網站技術起源和發展基本基於成熟的“客戶-伺服器”計算模型。“顧客”軟體較為單薄,重頭戲都在伺服器上。隨著網站技術的發展,一個網站將要融匯越來越多的新型伺服器。在分散式伺服器群裏添加新的伺服器以運行新型伺服器軟體,比在現有的獨立式伺服器上再運行額外的伺服器軟體似乎更合理。
但與單台超能伺服器相比,多台分功能伺服器群結構多了內部網路連接的額外要求,需要有相應財政和工程管理人員的支援。對於伺服器群的網路連接下面再作討論。
很多新推出的站點和很多想做站點的人,都沒有把站點的技術看得很重,甚至有人認為,網站最重要的是內容,花很大的力氣把內容做好是網站發展的根本。實際上正是這樣才走入了網站建設的誤區。
但對於一個網站來說,基本上是由前臺和後臺兩個方面構成的,我們用戶只能看到最終的使用介面,而事實上,這個介面的好壞直接取決於網站後臺結構的建設。比如說,我們只看到頁面是否美觀,使用起來是否方便,是否可以更好地交互,但事實上,沒有一個強大的後臺支撐,上述的這些方面都不可能更好地在Internet上實現。
基於一個模擬的環境或是一個量非常少的環境中,我們更加無法感覺到技術對於網站建設的重要性,真正的運行所發生的情況是類比所永遠無法想像的。在實踐中去摸索、去總結,更多地吸收別人的經驗,對於網站內部結構的規劃、設計、擴展與系統維護來說,這是更重要的。
在上一期我們談到了網站的上層結構和網站的可使用性,以及高性能網站與網站可擴展性,這一期我們將繼續上一期的話題,構造一個盡可能完美的站點。
【 伺服器群的網路連接 】
伺服器群的連接採用現有的局域網技術。最關鍵的是提供足夠的轉換帶寬和避免任何流量瓶頸。網站伺服器之間的資料流程量樣式基本以N-對-N形式。所以,吉位元的乙太網路交換機因性能價格比高而被廣泛採用。
另外在設計網路連接時,一些新型的交換機產品值得考慮去採用。第一是帶有路由功能的網路交換機,其次是最新的帶有第四層(即信件運輸層〕轉換功能的交換機。這方面有美國Alteon公司生產的網站系統系列產品和美國Foundry公司的BigIron系列產品。
網路連接採用的最基本的乙太交換機只提供資料通訊中所說的第二層交換功能。伺服器群網路需要通過一額外的路由器才能連接到互聯網上。從第三層IP協議的角度來講,伺服器只用第二層交換機相連,網路呈平線式,缺乏IP層次感,不利於未來擴充,而且無法對某部分網路實行專門管理。帶路由功能的第三層IP交換機,從交換效率、擴展性和管理難易上更值得選擇。
最新的第四層交換機,比IP轉換器更為智慧化。為使網站伺服器之間的資訊傳輸增快,關鍵是要把一段段語意完整的資訊(網路技術中專稱為信件,不同於一般講的電子郵件〕最快地在伺服器之間傳送。對此,第三層交換機儘管轉換組成信件的IP資料包,卻無法保證組成一個信件的所有IP資料包,能夠連串地被轉換到目標伺服器。只有第四層交換機通過更深一層地探測IP資料包裏資訊,而確定屬於同一信件的所有資料包,然後對它們進行連串交換,從而實現高效的信件交換。可以預見,第四層交換機由於高性能和易於伺服器群的擴展,將會越來越多地被採用。
【 伺服器的硬體配置 】
這裏略帶一提伺服器的硬體配置,這一話題相信很多人比較熟悉。伺服器的硬體配置包括:中央處理器(CPU)、記憶體(Memory)、記憶體公共連接(Memory
Bus)速度、交換空間(Swap
Space)和硬碟的大小、網路適配器。在考慮時,除了一般常識外,注意不要讓任何一部分成為瓶頸阻礙,同時注意留下一兩年內所需的擴充餘地。在網站運行過程中,要對伺服器的使用情況進行監視,從而確定哪部分需要擴充。
【 伺服器軟體的設計實施 】
伺服器軟體的設計和實施同樣對網站的性能,尤其對軟體所提供的那項網站應用的性能起著極大的影響。
首先對編程語言要有選擇。解釋性語言,如TCL、UNIX Shell Script,
運行起來比較慢,不適合用在有即時要求的軟體和經常使用的軟體。Perl是另一種解釋性語言,但運行前,卻經過Perl特有的編譯和把編譯後的程式載入記憶體的過程,因此運行較快。C/C++寫的程式運行最快,但最難寫而且不便調試。
其次要對程式進行優化。避免多餘的輸入輸出操作,提取公共和反復使用的程式列作為副程式。而且可以考慮用C/C++來寫上述副程式,以達到最快的運行速度。
網站的可擴展性
一個高性能的網站將很快地吸引用戶。當用戶增加的同時,網站管理人必須回答一些問題:現有的高性能以目前網站伺服器的容量能維持多久?當現有容量無法支援更多用戶時,將如何升級現有系統?這次升級能維持多久就要面對再一次升級?這一連串問題如不事先想好,都將使技術管理人員措手不及。
更可行的策略是:從網站結構設計的一開始便考慮清楚技術結構的擴展路徑,以備各種大小用戶團體的需求。
網站可擴展性設計有以下幾項設計目標:
1、保護現有的設備投資;
2、盡可能減少因擴充系統而造成的下網時間。
在上面討論網站高性能時,已經提到分散式伺服器群結構優於獨立伺服器,而帶IP層次感的伺服器網路連接優於平線式連接。分散式伺服器群結構和網路的IP層次連接,都是可擴展網站設計的極好出發點。
在此之上,隨著伺服器數目的添加,需要注意網路帶寬相應增加和網路IP範疇的調整。另外,個別集中式伺服器,如防火牆、目錄伺服器,和用戶資料庫自身的容量也需要擴展。【
網站的可用性和可維護性 】
一個好的網站除了易於使用和具備高性能外,還必須注意控制因故障或技術維護而造成的下網時間。下網時間直接影響到網站的可用性。可用性有別於前面提到的可使用性。準確地說,網站的可用性指的是系統在某時間段內總共運行時間占這段時間長度的百分比。網站的可用性至少應在90%以上。否則很快就會無人問津。其他現有的電腦系統一樣在接受著可用性指數的考驗。例如,IBM公司的銀行交易系統已經運轉了超過三年而從未需要停機維修。一方面這是因為這類系統承擔至關重要的任務,任何停機都會造成重大的經濟損失。
網路的迅速滲透,尤其是線上經濟的發展,使得網站在日常生活中所承擔的角色越來越重要。對網站的可用性要求將會越來越高。網站下網所造成的後果會越來越嚴重。一個月前,美國的線上拍賣行eBAY公司,兩次因網站技術故障造成拍賣無法進行。該公司的股票價格也因此大跌近10%。
提高網站的可用性有以下幾項措施:
◆1、嚴格把關網站的軟體品質
◆2、在網站結構設計時,適度添加網路連接與伺服器的安全盈餘。這樣,當主伺服器出故障時,可以轉換到備用伺服器上。
◆3、實施有效的資料備份,以避免因故障造成的永久性資料丟失。
◆4、在網站設計時,積極考慮網站的可維護性。
上面幾種做法可以說是相輔相成的。前面兩種措施具有很好的防禦性。資料備份最好地杜絕了災難性後果。但是,這些措施均無法把故障發生的幾率降為零。一旦故障發生,必須講求網站的可維護性。
一個可維護的網站具有很好的故障檢測性。這是網站下網後,排除故障所需要的第一要素。平均而言,電腦系統故障排除時間裏,故障檢測時間占了近90%。尤其絕大部分的電腦系統故障源至一兩行的程式錯誤,俗稱軟體蟲。修復時間與再測試時間並不長。更重要的是以最快的時間把故障檢測出來。
因為有了好的故障檢測性,一個可維護的網站對於排除故障所需要的時間才有了預見性。在運作一個網站時,這種可預見性有時比排除故障本身還重要。當一個網站因故障下網,我們要告訴用戶的第一件事就是什麼時候網站可以重新運作。這意味著,網站技術人員必須在很短的時間裏大概診斷出毛病。也就是說,從問題的徵象中,很快地看出有問題的部件。
故障檢測性與排障所需時間的預見性都來自一個網站的可維護性。
網站的安全管理
網站的安全管理包括防止非法個人對網站伺服器的直接侵害,和防止非法個人盜用他人存在本網站的秘密資料。不容置疑,也無需多言,安全管理是相當重要的。網站的安全漏洞如被利用,其危害是難以估量的。
對於網站安全管理,另一個鮮為人知而大家必須知道的事實是,沒有絕對的安全,只有使網站更安全的管理辦法。另一方面,加強網站安全是延續不斷的過程。在這過程中,新的漏洞將會被發現,新的有效的技術措施將會被制定。經驗也會一步步地積累。就現今而言,比較有效的措施有以下這些:
1、在網站伺服器群結構中,設置前置防火牆。
2、為避免暴露伺服器群內部的伺服器分佈架構,可以採用IP網址翻譯法(Network Address
Translation)或IP遮蓋術(IP Masquerade),
使得內部伺服器的網址與名字不從網路外泄。即使有人從其他途徑弄到以上資訊,也無法從週邊直接不通過防火牆而進入內部伺服器。
3、利用各種現有的幾種用戶使用目錄協定(Directory Access
Protocol)實施用戶控制。這一技術比以前常用的網路資訊系統(Network Information
System)更進一步,實行多層次用戶管理,而非單一“是或否”的放行與排斥。
4、除此之外,運用管理一般電腦系統常用的辦法。如從伺服器上除掉Mail和Telnet這類用不著又容易被“駭客”(Hacker)利用而打入系統的應用程式。又如去掉多餘的用戶目錄,以減少被攻擊的可能性。
5、融匯現有的防火牆和伺服器安全管理產品,而不要自己再去發明同樣的東西。Sun、 Cisco、Microsoft、
Netscape均有這類商業產品,Linux亦提供免費可下載的軟體。
以上所列難為一完整的清單,但確為我們將採取的技術措施,以保證網站用戶資料的安全。
總 結
以上章節粗略探討了網站上層的技術問題。網站結構設計是一個多維的、立體進行的過程。設計最終是要給用戶提供一個易於使用的網站。但“易於使用”包含了多重涵義。網站可用性的多方面,至今仍在工業界廣泛討論研究。多維的設計過程包括了對網站高性能、可擴展性、可用性、可維護性及安全管理的多方面考慮。這些方面也是緊密相連的。這篇文章對以上各方面的主要問題作了介紹討論。本文並未提供所謂手冊式的“設計聖經”。因為這樣的“聖經”還不存在。互聯網、電子商務、資訊網站一切都在變化中。如果把這一切看成富於挑戰的遊戲的話,那麼遊戲的規則正在形成,談不上各種對策策略。但這種情況並不意味著我們將一籌莫展。因為,在瞭解了各種問題之後,我們可以一邊做,一邊學,一邊探討。這也是筆者最後想鼓勵眾人和自勉的話。
保障網站的可維護性需要考慮以下方面◆1、網站必須由功能範圍分明的技術模組組成。這樣當故障出現時,可以逐個模組地檢測。
◆2、技術功能分化有多種手段,其中一種是功能模組的物理分離。在網站伺服器群中,各個伺服器分擔著不同的任務,它們集合起來完成一項任務:支持網站用戶的每一個需求。在設計這種分佈系統時,除了前面提到的網站高性能所需的同步處理、資源分享,這裏還需考慮保持系統可維護性所需的功能分開。例如,電子郵件和音樂試聽是兩個很受歡迎的網站節目。它們分別由兩個伺服器支援。這兩個伺服器軟體功能複雜,出錯和需要版本升級的可能性大。如果把這兩個伺服器軟體放在一台機器上運行,其後果是當音樂軟體出故障需維修時,電子郵件也同時無法使用。這顯然不是一個有效的設計。在這種情況下,電子郵件和音樂試聽應由兩個分開的伺服器來支援。
◆3、另一功能分化的手段是功能模組的邏輯分離。
◆4、在軟體設計和系統實施時,提供足夠的系統監察資訊和調試手段。電腦軟體的錯誤很多情況下,可以從其運行過程輸出的事情記錄中檢查出來。
◆5、注意保持伺服器軟體的平臺無關性。這樣不管伺服器使用什麼作業系統,伺服器軟體都能無需更改而正常運行。
|
|
|
|