設萬維讀者為首頁 廣告服務 聯繫我們 關於萬維
簡體 繁體 手機版
首頁 新聞 視頻 博客 論壇 分類廣告 購物
版主:阿飛的劍
萬維讀者網 > 茗香茶語 > 帖子
mingcheng99:簡談服務器群技術
送交者: mingcheng99 2016年09月15日16:29:11 於 [茗香茶語] 發送悄悄話

在談網站運營之前,先發一篇舊文。今天有同學問為什麼數據要和服務器放在不同的機器上,重發和做些說明。不但數據庫服務器或程序會當掉,或叫崩潰。有時候操作系統也會當掉。特別是微軟的服務器,容易用的也容易當。當然在上面運行的任何程序都當掉了,如果要起用備份服務器,它從那裡拿數據? 放數據硬盤的專用機器,中文叫數據櫃,裡面插一排排的專用數據硬盤。就是我前面說的一塊一塊的,我以為大家都知道,就沒有細說。架構非常簡單可靠,是不會當掉的,所有服務器共享,

個人接觸服務器群技術,從90 年代用 BEA weblogic  開始,當時數據中心概念剛剛起來。今天,數據和處理分開,已經是IT的一個基本概念。  BEA 代表他們三個創建人,A是一個老中, 專做技術,當時的硅谷的數據英雄,還沒有老印什麼事情。當年還有 Yahoo 的楊致遠,應用材料的David wang, Intel 的虞有澄, Computer Association 的 Charles Wang ,連老牌王安 Lab還在,都名動一時。今天,老中還能稱雄的,只剩下與物理有關的一些IT領域了。

個人接觸IT中文,要歸功於IBM中國。IBM中國提供很多IT文件的的中文版本,曾經幫一個本土公司與IBM競爭一個省級城市的信息化項目,與IBM的高級工程師在市里有關的技術人員和官員面前大戰一場,很有意思,


簡談多程序架構和服務器群之二, 兼與懶網討論

http://bbs.creaders.net/tea/bbsviewer.php?trd_id=1132440


我們把前文問題簡化為一個軟件在更新後重新起動的時候,需要其作用不被間斷, 這樣的問題我們在上文中指出在很多時候都有實際需求。 懶網提出用雙子星架構來解決這個問題。 採用過程是:A -> A' with alias B, B kills A, B deletes A, B copies itself to B', B' renames alias B to A'。  

我們把一個已經啟動的程序叫作它的 image 。就是它的機器碼已經加載在一定的已經 allocated 好的 memory 內並在執行。 它的原碼改動之後,可以再編譯成一個新的可執行文件,假設還是叫 XX。EXE。 你可以再起動它,這樣就有兩個同名, 但內容不同,  彼此獨立的 images 在跑。 但是,如果這兩個images 都要占用機器的某些不可以共享的資源,或者是機器容量不足以容納這兩個images同時在跑,那麼顯然是有問題。 其他問題根據具體軟件其實還有,不過這裡先放過.   如果我們先把舊的image 殺掉,再讓新的 image 起來。就沒有資源和容量問題,它們可以共享一個獨立運行的數據庫沒有問題。但是,對於有 real time 數據進來的程序,這就至少會失去在等待新程序起來的時間內進來的數據。傳統上解決這個問題的方法是再用一個控制軟件來控制這樣的程序,不管兩個程序是否同名。這個控製程序我們叫它 Director。Director只是一個小程序,它一般做成象計算機的一個 built in 的服務。它永遠是在運行的。 它管理這些程序的啟動和下去。並接受新image 上來之前的數據。以傳給新的image, 這樣就至少不會失去數據,即使可能處理不及時。



我說過,在做自動化控制的時候,軟件不但要同時控制多個程序,還要控制多個在協作運行的機器。 這些機器和自帶的控製程序還來自不同的廠家.   任何一個程序都可能當掉,下面我們看到連專業服務器群都可能當掉,所以任何架構都不是保險的。我們的一個底線就是要晶圓不掉下來和不碎。我們的設備是提供給英特耳的,那裡正在處理中的一個晶圓可能價值很多萬刀,我們有句話說,如果晶圓掉下來,那意味着我們的飯碗也掉下來。許多問題,在實際運行中才能發現,不是如同想象的那麼好做。



這樣的架構和概念發展成服務器群。一個目的是這些服務器可以同時運行做一樣的工作。這樣來支持多用戶。另一個目的就是在某一個服務器,特別是某些專門的服務器需要重新啟動或者是當掉的時候,對外的服務不被中斷。有一個專門的服務器來管理整個服務器群,就是我們提到的 Director. 基本上,所有重要的服務都用服務器群,以免服務不被中斷。



就在幾年以前,我們曾用過專業的服務器群來提供網絡電話的開發和測試,理論上不會失去數據,但在服務器轉換的時候依然會失去real time 數據,我們的程序都沒有看見數據進來。但處於同一個實驗室的測試用戶確實打了電話。我們都無法找到數據在那裡丟失的.  我們甚至經常可以看到一些著名IT公司的服務都會斷掉,就是說整個服務器群都當掉了。



為什麼任何軟件和機器都會出問題呢, 那就涉及到更深層的原因了。因為當前我們常見的民用計算機如 PC,服務器。和程序語言如 C,C++, C#, Java 還有相應的編譯器,等等,它們在設計上都是容許出錯 runtime error 的。墨非定律。如果它可能出錯,那麼它一定出錯。 不管你怎麼改都沒有用的。那麼有沒有從設計開始就不容許出錯的語言,編譯器和計算機呢,當然有的。不過就不在本文範圍之內了。



註: 本文全憑記憶和個人經驗。 如有錯誤,歡迎指正。

 

0%(0)
標 題 (必選項):
內 容 (選填項):
實用資訊
回國機票$360起 | 商務艙省$200 | 全球最佳航空公司出爐:海航獲五星
海外華人福利!在線看陳建斌《三叉戟》熱血歸回 豪情築夢 高清免費看 無地區限制