最后一套"客戶端-服務器"系統將于何時關停?
譯文雖然老舊的計算模式往往歷久而彌新,但客戶端-服務器機制卻不在此列——它就是種錯誤,且需要盡早被時代所淘汰。
這篇文章是我在參加本周于拉斯維加期召開的IBM Insight大會時寫下的。還記得當初曾有人斷言,全世界最后一臺大型機會在1996年正式關停。但就在這個禮拜,我還親眼看到IBM公司在一臺大型機上運行Apace Spark——而且其性能依然強大到令人嘆服。
是的,大型機上的Spark,這就是本周藍色巨人給出的對話主題。IBM公司熱愛大型機,因為他們喜歡在這一領域維持自身無可匹敵的硬件業務王者地位——截至目前,IBM的大型機業務仍然占全球總體份額的近50%。
而大型機業務同時也是目前惟一一類仍然會在啟動屏幕上顯示“©1980”字樣的計算解決方案??蛻舳?服務器計算模式并不取決于特定硬件。相反,其只是一種單純的計算實現思路,其中包含有多種多樣的硬件以及網絡元素。
我敢肯定,對于客戶端-服務器以及與之針鋒相對的所謂“純分布式”計算模式在具體定義方面還有很大的探討空間。因此請讓我首先對客戶端-服務器模式做出定義:這代表著單一或者多個客戶端與某臺持續監聽插槽集合或者資源池的服務器相對接,其主要采取縱向擴展模式且通常配備有集中式數據存儲體系??偠灾?,這是一種LAN模式。
而對于分布式模式,我將其描述為N個客戶端或者同類機制同N臺服務器相對接,后者主要以橫向方式進行規模擴展且采用共享及分布式處理的數據存儲方式。這種模式的設計思路在于提高容錯能力并承受資源需求峰值,同時允許大家根據實際需要添加更多節點(通常以線性方式增加)并重新規劃基礎設施位置。而這也正是云計算的核心實現模式。
這種分布式模式相較純向上擴展模式更為強大,因為其能夠輕松實現規模伸縮。這種能力之所以如此重要,是因為客戶端-服務器模式的最大弊端之一就是將工作負載的可預測性作為構建前提。
然而這種前提從早年間就被證明是一種誤區。遙想當年,我曾經負責過系統管理方面的工作,那時候EoM報告當中幾乎就沒什么真正有用的信息,惟一的作用就是不斷閃燈然后提示我們距離本月周期末還有多少天。頗具諷刺意味的是,這也正是大型機TPC無法發揮就有作用的主要原因。還記得那時候我們都會把Slashdot設為自己的瀏覽器主頁,而且站點由于峰值流量而引發的停機則會被稱為Slashdot效應。現在的互聯網與當初的狀況簡直一模一樣。
不知道大家有沒有嘗試建立起一套大型的、基于甲骨文方案的現有測試數據庫項目。要達成這一目標,我們需要能夠在出現預料之外的互聯網數據流量及使用規模峰值時進行向上擴展,但同時又需要在資源需求趨于平穩時進行規模收縮(主要為了節約AWS開銷)并實現靈活的適配性(有時候我們甚至需要在筆記本電腦上測試自己的項目)。
總體而言,如今的工作負載已經呈現出愈發夸張的不可預測性,而且大多數情況下其規模非常可觀。此外,我們對于網絡服務表現的預期也開始上升。枯燥的響應等待已經無法被用戶所接受,而谷歌時代下常見的服務中斷如今被視為非常嚴重的事故。目前技術競爭已經愈演愈烈且擴散到全球范圍,而監控要求也變得更加嚴格(至少在Trump當選總統之前是這樣)。
我們的客戶端-服務器系統根本無法以實時需求為依據進行規模伸縮。它們不具備彈性能力,而且在大多數情況下不能實現云體系的基本要求。與此同時,編寫分布式系統本身也要更加簡便易行。相較于甲骨文甚至是SQL Server,MongoDB實例的部署工作顯然要輕松得多得多。Spark擁有極易上手的API。NodeJS能夠幫助我們編寫出事件驅動型彈性分布式系統;另外,這些方案的易用性都要比其前輩們好得多。
反對者們可能會指出,這些新興技術目前的市場占用率還比較有限,不過必須承認其普及規模正在逐步擴大。有些人認為當相關開發人員退休之后,與之對應的技術就會徹底消亡。誠然,甲骨文那幫“老不死”的PL/SQL開發人員一個賽一個的長命,但他們終將退位——這是無法改變的現實。就目前而言,千禧一代技術人員們普遍認為MongoDB要比MySQL更易于使用及打理。
客戶端-服務器的時代將在云計算的全面普及之下終結。在未來20年中,根據我的個人觀察,除了特殊領域之外不會再有新的客戶端-服務器系統與廣大用戶見面。而新一代解決方案則會以更為出色的表現取代那些老古董。這并不是說非要在部署方式層面有所突破,新方案只需更易用且成本更低廉,同時能夠滿足現代業務領域的期望及具體用例即可。
那么最后一套客戶端-服務器系統是否會在未來20年內正式關停?答案恐怕是否定的——某些業界領域的發展速度并不會太快,競爭關系可能起到一定的保護作用,或者是需要滿足某些新型監管要求抑或對應行業不需要編寫或者購置太多新型軟件方案。從這個角度講,仍將有很多領域始終持續使用傳統的客戶端-服務器實現模式。
不過作為技術行業的從業人員,我們并不需要為以上情況太過分心——畢竟他們不是咱們的核心客戶群體。相反,我希望他們像出租車行業被Uber屠殺那樣倒在歷史的車輪之下——抱歉,我這個人就是這么直率啦。
原文標題:Why client-server must die
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】