试谈软件定义的本质、特征、路径和内涵

0
2018-06-26 来源:转自 氪强说

    本文尝试谈谈软件定义的本质、特性、路径和内涵。
    其中本质部分主要内容摘抄自梅宏院士相关报告及论文。
    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
赵军锁, 软件定义卫星
软件定义世界,数据引领未来——智能制造纵横谈

相关新闻

版权声明

1、凡本网注明“来源:中国轻工业网” 的作品,版权均属于中国轻工业网,未经本网授权,任何单位及个人不得转载、摘编或以其它方式使用。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:中国轻工业网”。违反上述声明者,本网将追究其相关法律责任。
2、凡本网注明 “来源:XXX(非中国轻工业网)” 的作品,均转载自其它媒体,转载目的在于信息之传播,并不代表本网赞同其观点和对其真实性负责。
3、如因作品内容、版权和其它问题需要同本网联系的,请于转载之日起30日内进行。

返回顶部