2013年7月2日 星期二

大約在十年前,筆者參與了一個大型主從運算系統的開發工作,該系統主要是做網路 上的電腦工作站的異動管理應用程式。這種異動管理的應用,簡單地說就是要將一些 電腦的軟體下載到遠方的工作站上,以便做到程式版本控制(Version Control)的目 的。在一個分散式的主從運算環境上要執行關鍵性的重要任務程式,在客戶端電腦上 的程式版本控制和異動管理是一項非常重要的工作。那時在市面上根本買不到這種工 具,所以只好自己開發。 由於在當時這種電腦小型化還屬創舉,所有的程式開發和設計人員都是從大型電腦主 機的作業環境轉移過來的,因此在設計時,還是以大電腦主機為主的觀念出發, 將絕大部分的處理邏輯和分析比較等等的工作,放在大電腦主機的程式之中,在遠方 的 PC 工作站只有少數很簡單的處理工作。 程式開發完成以後,在網路很小,客戶端的工作站數目還不太多的時候,這個異動管 理的程式還可以應付自如。可是當網路上的電腦數量增加到幾百個以後,整個系統就 無法負荷了。那個網路上預計要有上萬個 PC 工作站,而才只有幾百個電腦時就不堪 應付,只得將整個程式系統拋棄,重新設計一個能夠擔當重責大任的大型異動管理系 統。 新系統在設計理念上和原有系統的最大不同,在於充分利用在遠方客戶端電腦工作站 的處理和運算能力,也就是把原有在大電腦上所作的分析比較和處理等的運算邏輯都 移到客戶端的電腦上,使客戶端成為智慧型工作站。位處中央的大電腦主機只扮演伺 服器的角色,負責提供客戶端電腦在處理時所需要的資訊和檔案,並且集中匯集在遠 方各個客戶端處理結果的資訊。如今,這個異動管理的系統負責管理三萬多個工作站 ,其大電腦主機的處理能力還是遊刃有餘,沒有運算處理能力不足或是容量不夠的顧 慮。 採用反客為主的方式來設計主從運算系統的最大障礙,在於這種分散式運算處理的邏 輯,遠比把所有的運算邏輯放在伺服器上面要複雜得多,程式設計師要花比較多的時 間去設計客戶端電腦彼此之間的聯絡和協調工作,避免發生整合上的困難,或者是資 料完整性(Data Integrity)上的錯誤。 其次,分散式的運算環境在管理上也遠比非反客為主的環境要複雜得多,網路設計師 也要花比較多的時間去考慮和設計各種不同的錯誤情況,以免發生陰錯陽差的現象。 這就好像一個公司變大了,老闆不能再事必躬親的時候,一定要有健全的組織和完善 的管理制度,以免公司的員工有了太多獨立自主的權力,而做出影響公司整體利益的 事一樣。 一個要考慮的錯誤情況是伺服器的容錯設計(Fault Tolerance Design),這是要考 慮在伺服器當機的情況下,客戶端是否仍舊能獨立作業,並且在伺服器恢復運轉以後 ,能夠馬上將最新的情況報告給伺服器。相對地,設計師也要考慮客戶端的容錯設計 ,當客戶端因當機或其他原因,使需要處理的程式或資料遺失或損壞時,應該要能隨 時再到伺服器上擷取最正確的資訊,以確保整個系統的完整性。 在安全管理上,反客為主的設計也面臨比較大的挑戰。因為客戶端的自主能力提高了 ,其可以執行的功能也增加了,如果沒有良好的安全防範措施,很容易讓居心不良的 人有機可乘,因此要確保整個系統的安全,網路設計師也要比較費心地去設計。

大約在十年前,筆者參與了一個大型主從運算系統的開發工作,該系統主要是做網路 上的電腦工作站的異動管理應用程式。這種異動管理的應用,簡單地說就是要將一些 電腦的軟體下載到遠方的工作站上,以便做到程式版本控制(Version Control)的目 的。在一個分散式的主從運算環境上要執行關鍵性的重要任務程式,在客戶端電腦上 的程式版本控制和異動管理是一項非常重要的工作。那時在市面上根本買不到這種工 具,所以只好自己開發。 由於在當時這種電腦小型化還屬創舉,所有的程式開發和設計人員都是從大型電腦主 機的作業環境轉移過來的,因此在設計時,還是以大電腦主機為主的觀念出發, 將絕大部分的處理邏輯和分析比較等等的工作,放在大電腦主機的程式之中,在遠方 的 PC 工作站只有少數很簡單的處理工作。 程式開發完成以後,在網路很小,客戶端的工作站數目還不太多的時候,這個異動管 理的程式還可以應付自如。可是當網路上的電腦數量增加到幾百個以後,整個系統就 無法負荷了。那個網路上預計要有上萬個 PC 工作站,而才只有幾百個電腦時就不堪 應付,只得將整個程式系統拋棄,重新設計一個能夠擔當重責大任的大型異動管理系 統。 新系統在設計理念上和原有系統的最大不同,在於充分利用在遠方客戶端電腦工作站 的處理和運算能力,也就是把原有在大電腦上所作的分析比較和處理等的運算邏輯都 移到客戶端的電腦上,使客戶端成為智慧型工作站。位處中央的大電腦主機只扮演伺 服器的角色,負責提供客戶端電腦在處理時所需要的資訊和檔案,並且集中匯集在遠 方各個客戶端處理結果的資訊。如今,這個異動管理的系統負責管理三萬多個工作站 ,其大電腦主機的處理能力還是遊刃有餘,沒有運算處理能力不足或是容量不夠的顧 慮。 採用反客為主的方式來設計主從運算系統的最大障礙,在於這種分散式運算處理的邏 輯,遠比把所有的運算邏輯放在伺服器上面要複雜得多,程式設計師要花比較多的時 間去設計客戶端電腦彼此之間的聯絡和協調工作,避免發生整合上的困難,或者是資 料完整性(Data Integrity)上的錯誤。 其次,分散式的運算環境在管理上也遠比非反客為主的環境要複雜得多,網路設計師 也要花比較多的時間去考慮和設計各種不同的錯誤情況,以免發生陰錯陽差的現象。 這就好像一個公司變大了,老闆不能再事必躬親的時候,一定要有健全的組織和完善 的管理制度,以免公司的員工有了太多獨立自主的權力,而做出影響公司整體利益的 事一樣。 一個要考慮的錯誤情況是伺服器的容錯設計(Fault Tolerance Design),這是要考 慮在伺服器當機的情況下,客戶端是否仍舊能獨立作業,並且在伺服器恢復運轉以後 ,能夠馬上將最新的情況報告給伺服器。相對地,設計師也要考慮客戶端的容錯設計 ,當客戶端因當機或其他原因,使需要處理的程式或資料遺失或損壞時,應該要能隨 時再到伺服器上擷取最正確的資訊,以確保整個系統的完整性。 在安全管理上,反客為主的設計也面臨比較大的挑戰。因為客戶端的自主能力提高了 ,其可以執行的功能也增加了,如果沒有良好的安全防範措施,很容易讓居心不良的 人有機可乘,因此要確保整個系統的安全,網路設計師也要比較費心地去設計。

沒有留言:

張貼留言