本文嘗試談談軟體定義的本質、特性、路徑和內涵。
其中本質部分主要內容摘抄自梅宏院士相關報告及論文。
1軟體定義的技術本質
隨著「軟體定義網絡」的流行,近年來出現了各種各樣不同的「軟體定義」概念。從計算機系統用戶的視角,作業系統是軟體定義的「計算機」,本質上「軟體定義」的原理與作業系統的原理是一樣的。
「軟體定義」的本質是通過虛擬化及其應用編程接口(API)「暴露」硬體的可操控成分,以實現硬體的按需管理。具體來說,就是將計算、存儲、網絡等IT基礎資源,抽象為系統軟體對虛擬資源進行管理和調用,在此基礎上,用戶可編寫應用程式,訪問資源所提供的服務,進而改變資源的行為,滿足應用對資源的多樣需求。
「軟體定義」的核心是硬體資源虛擬化和管理功能可編程。所謂硬體資源虛擬化,是將硬體資源抽象為虛擬資源,然後由系統軟體對虛擬資源進行管理和調度。常見的如作業系統中虛擬內存對物理內存的虛擬、偽終端對終端的虛擬、Socket對網絡接口的虛擬、邏輯卷對物理存儲設備的虛擬等。硬體資源虛擬化帶來了如下好處:支持物理資源的共享,提高了資源利用率;屏蔽了不同硬體的複雜細節,簡化了對資源的管理和調度;通過系統調用接口對上層應用提供統一的服務,方便進行程序設計;應用軟體和物理資源在邏輯上分離,各自可分別進行獨立的演化和擴展並保持整個系統的穩定。
管理功能可編程,則是應用對通用計算系統的核心需求。主要表現在訪問資源所提供的服務以及改變資源的配置和行為兩個方面。在硬體資源虛擬化的基礎上,用戶可編寫應用程式,通過系統調用接口,訪問資源所提供的服務,更重要的是能夠靈活管理和調度資源,改變資源的行為,以滿足應用對資源的多樣需求。所有的硬體資源在功能上都應該是可以編程的,如此軟體系統才可以對其實施管控,一方面最大程度發揮出硬體的性能,另一方面滿足不同應用程式對硬體的不同需求。從程序設計的角度,管理功能可編程意味著計算系統的行為可以通過軟體進行定義,成為所謂的「軟體定義的系統」。
回顧計算機的發展,早期的計算機就是硬體計算機,計算機作業系統的出現使得我們的計算系統能夠被各個行業當成通用的設備來使用。每個用戶看到的計算機是一臺軟體計算機,是一臺作業系統定義過的計算機。作業系統是向下管理硬體資源,控制程序運行,向上改善人機界面,為應用程式提供支持的系統軟體層。人們通過API可以調用很多東西。而作業系統的目標本質上就是要追求更為高效的,把硬體資源所提供的計算能力發揮出來,通過軟體技術實現靈活高效、可信統一的虛擬資源的管理,這一直是作業系統發展的重要驅動力。在某種意義上也正是因為以作業系統為代表的系統軟體平臺的不斷發展,帶來了應用軟體市場的快速繁榮。
從作業系統的出現、發展和功能基本定型的過程中,可以看到作業系統實際上就是對計算系統進行「軟體定義」的產物。相對於最早的硬體計算機,作業系統可視為一種「軟體定義」的「虛擬計算機」,屏蔽了底層硬體細節,由軟體對硬體資源進行管理,用戶不再直接對硬體進行編程,而是通過應用編程接口(API)改變硬體行為,實現更優的靈活性、通用性和高效性。
「軟體定義」是把原來整個高度耦合的一體化硬體,通過標準化、虛擬化,解耦成不同的部件,然後把這些基礎的硬體建立一個虛擬化的軟體層,通過對虛擬化的軟體層提供應用編程接口,暴露硬體的可操控部分,實現原來硬體才提供的功能。再通過管控軟體,自動地進行硬體系統的部署、優化和管理,提供開放、靈活、智能的管控服務。
軟體定義降低了硬體管理的複雜度,硬體層只需要高效地做好執行功能,控制邏輯由軟體完成。從底層抽象出一個「虛擬硬體」,這種「虛擬硬體」可以隨著需求的變化而被軟體重新定義,而不用真的修改硬體的組織架構。
包括存儲資源、計算資源、網絡資源在內的各種資源被抽象成虛擬資源,用系統軟體對它進行管理和調度,然後再向上提供一層API,管理任務的可編程。在虛擬化基礎之上,用戶就可以編寫他自己的應用程式,訪問所有的資源提供的服務,進而改變資源的組合和行為,滿足對資源的多樣性的需求。
2軟體定義的特性
我們正在進入一個軟體定義的時代,其基本的特徵表現為萬物皆可互聯,一切均可編程。向下將「人機物」融合環境的網絡資源、存儲資源、數據資源、計算資源、傳感資源等海量異構資源連接起來實現萬物互聯,向上通過編程提供社會計算、移動計算、雲計算、工業網際網路、物聯網等眾多應用模式。在這個基礎上支撐大數據、人工智慧應用、共享經濟、智能製造等新應用、新模式和新業態。
具體來說,軟體與硬體解耦形成模塊化、執行與控制分離形成伸縮性、邏輯上集中管理增強靈活性、可編程形成可重構開放能力,這四點是核心特性。簡而言之,就是更多地由軟體來驅動並控制硬體資源。通過軟體定義,實現需求可定義、硬體可重組、軟體可重配、功能可重構。
「軟體定義」具有可重構性,即系統功能隨著需求改變的能力,也可稱為可編程性。外在需求的變化往往在速度、種類、方式上都有比較大的幅度,需要系統能根據需要及時做出較大的改變。這對單純的硬體來說,各方面的難度都太大。
「軟體定義」具有靈活性。指可在系統不改變結構的條件下,對可重構性的適應能力。由於邏輯上的集中管理,可以從全局進細顆粒度地掌控。此外,系統能夠被精確配置成各種不同的虛擬設備,可以支持不斷湧現的新技術和新功能。在嵌入新技術和支持新功能時,如果系統的靈活性不夠,系統結構就必然要推倒重來。沒有靈活性,系統可重構的優越性就會隨之喪失,也就不能稱作是軟體定義。
「軟體定義」具有模塊化。模塊化就是將定義系統的各個任務分解為相互獨立的軟體和硬體模塊,這些模塊通過接口以邏輯的方式連接起來形成所需要的系統功能。物理資源池通過專業的配置,實現靈活的調整、動態的分配與可編程化的配置,使其具有了模塊化的特徵。模塊化系統可以通過增加或替換模塊動態改變功能,而不會與系統中其它模塊產生衝突。模塊間定義良好的接口有助於增強模塊化系統的設計。
「軟體定義」還具有伸縮性。伸縮性一般指在軟體或硬體中增加或減少模塊,以增強或降低系統性能的自適應能力。在同一個邏輯單元內增加資源來提高處理能力。或者增加更多邏輯單元的資源,並令它們像是一個單元一樣工作。
伸縮性和可重構性的相互促進作用能夠防止系統退化。由於人們一直追求更高更好的設備性能,未來的標準或新算法不斷地需要嵌入到系統中,系統需要更強的處理能力和更多的資源來完成功能,軟體定義應當能夠適應這種變化。增強系統適應性需要伸縮性作保證,伸縮性需要可重構性支持。伸縮性保證嵌入新功能的能力而具體的實現由可重構性保證。具有先進可重構性的系統要求伸縮性良好,伸縮性良好的系統需要完善的可重構性。
3軟體定義的路徑
「軟體定義」的核心途徑是硬體功能虛擬化、管理功能可編程。具體來說有能力開放化、控制與執行分離和硬體資源池化三條。
能力的開放化。通過集中的控制實現資源的統一管理、整合以及虛擬化後,採用規範化的接口為上層應用提供按需分配的資源及服務。此外,為上層控制提供開放可編程接口。通過這種方式,控制應用只需要關注自身邏輯,而不需要關注底層更多的實現細節,進而實現能力開放,快捷提供應用服務。系統不再僅僅是一種設備、一種設施,更是一種服務,應用範圍得到了進一步的拓展。系統的智能化全部由軟體實現,設備的種類及功能由軟體配置而定,這樣的方式打破了對業務的封閉。
控制與執行分離。在控制面實現管理與控制等功能;而執行設備僅負責策略的執行。執行面由受控執行的設備組成,執行方式以及業務邏輯由運行在分離出去的控制面上的控制應用所控制。通過這種方式可使得系統的執行面和控制面獨立發展,執行面向通用化、簡單化發展,成本可逐步降低;控制面可向集中化、統一化發展,具有更強的性能和容量。通過控制與執行的分離,使得設備的硬體通用化、簡單化,設備的硬體成本可大幅降低,可促進系統應用。
硬體資源池化。將各種物理資源,如伺服器、網絡、及存儲等,予以抽象、轉換後呈現出來,打破物理設備結構間的不可切割的障礙,這些虛擬的資源不受現有資源的架構方式、地域或物理設備所限制,並被當成是一種邏輯上的資源,而非物理資源加以控制和管理。將這些資源統一管理進行池化,實現將這些池化的虛擬化資源進行按需分配和重新組合。
簡而言之,將原來的需求變化必須通過硬體資源平臺變化來實現,轉變為通過一個深度軟體定義的平臺可以靈活地定義管理各種資源,從硬體資源為核心走向軟體平臺為核心。
在這個過程中,底層的硬體資源從定製化向虛擬化轉變,系統軟體定製化向系統軟體平臺化轉變,應用軟體定製化向應用軟體生態化轉變。
圖1
從這個視角看,工業網際網路向下對各種硬體資源、工業資源虛擬化,實現統一標識、接入、控制和管理;中間提供集計算、存儲、開發等多種能力的一體化軟體平臺;向上提供開發接口,支持定製化的工業軟體解構重構以及微服務形成面向一個個實際應用場景的工業APP,建立應用軟體生態。通過軟硬體解耦的方式實現硬體資源虛擬化和應用服務軟體化,是典型的軟體定義。
4軟體定義的內涵
「軟體定義」的內涵從狹義、廣義兩個層面來看。
狹義:以人為本,隨需而定
「軟體定義」的內涵狹義上是以人為本,隨需而定。將人作為生產服務的「主體」,人的意志通過軟體定義來表達和實現,一切服務都得從人的需求切入,根據人的需求來定義產品與服務。軟體為人創造更高價值的產品與服務,人對更高價值的理解會隨時間而變化,軟體需要及時應對這種變化。
我們關注信息技術改變各領域、重塑全球產業格局的同時,更應看到這種轉變很重要的一個本質是「需求」,這是轉變的根源。而今天,大數據、雲計算技術等信息技術的蓬勃發展能讓我們更快的理解「需求」,且將「需求」了解地更加透徹,更加精準。
現場的市場早已不是廠家生產什麼、消費者使用什麼。不管是數位化、網絡化還是智能化,重要的是能夠理解消費者、理解行業、理解產業,而理解的基礎是通過軟體對大量數據進行收集、挖掘、分析、計算,找出共性及數據相關性,進而通過軟體定義各種功能,滿足消費者及各方面的需求。數據驅動的「軟體定義」將產業帶入到消費者定義市場的階段。
廣義:虛擬化、數位化一切
「軟體定義」的內涵某種角度可以看成是虛擬化可虛擬化的一切,數位化可數位化的一切。「軟體定義」解決硬體的有限和人的需求無限之間的矛盾。軟體將一切信息數位化,信息數位化使得一切可以虛擬化。可知的未來,人類所有意識和生產活動都可能會一一映射到虛擬環境、都可能以數位化的形式存在。比如現在虛擬化的機器人微軟小冰,以及將來可能出現的數字人格。
「軟體定義」通過虛擬化,創造了一個虛擬的信息空間。這個虛擬的信息空間與實際物理空間相比,更不受時間、空間的約束,產生更大的能量。人類在物理空間的活動能在這裡體現,此外,人類將以數位化的形式在虛擬空間生產、生活。
在資訊時代,要發揮事物的更大作用,首先要對其進行虛擬化和數位化,用軟體去定義它。軟體定義世界,是現實世界(物理世界)的虛擬化和數位化。有了虛擬化和數位化,事物可以跨越時空限制,從而呈現出無限可能,迸發出的能量也遠超以往。在數字世界,計算能力呈指數級增長,於是AlphaGo戰勝李世石、柯潔也就成為高概率事件。
軟體定義,數據驅動。通過建模,我們可以用軟體將事物虛擬化、數位化,從而進行各種加工和運算,以發揮其更大的效能。建模的方法決定了模型的高下,從而決定了軟體定義的效能,而建模的方法取決於人們的認知思維水平。通過合理的建模和規範的軟體開發過程,我們可以提高軟體定義的質量,擴大軟體定義的邊界。基於數據的分析與利用則使軟體定義更有了準確的表達。
主要參考資料:
梅宏,軟體定義的時代
梅宏, 郭耀. 面向網構軟體的作業系統:發展及現狀[J]. 科技導報,2016,34(14):33-41
Mei Hong, Huang Gang, Cao Donggang, et al. Perspectives on"Software-defined"from software researchers[J]. Communications of CCCF, 2015, 11(1): 68-71
趙軍鎖, 軟體定義衛星
軟體定義世界,數據引領未來——智能製造縱橫談