第二届全球未来网络发展峰会

创新·引领·未来

当前位置:嘉宾致词> > 分论坛二

面向物联网终端的流式软件执行方法

编辑: 共浏览:690次

非常感谢老师的介绍,首先感谢协会对我们的邀请,很荣幸参加今天这个论坛。我刚开始进来的时候,看一下行程安排单,发现上面的大佬都是25分钟,给我安排35分钟,结果现在我争取在5点过10分讲完我们做的事情。

我们团队最近在做面向物联网流式软件的工作,我的报告主要分成几个方面,首先我们会将我们问题的背景,我们针对现在物联网终端流式软件架构的进行一个介绍,最后我们对于我设备和实现的技术,最后我们总结一下工作,中间我对于这个详细细节略过去。

我们先看看背景,现在就是说物联网设备和相应的终端服务应用都在非常的急增,有250亿物联网设备进入我们急增的同时,我们的服务应也在激急,我们以后的物联网设备是获取网络服务的主要的终端,那么其实最关键的一个问题就是在哪?当我们使用这个物联网设备去获取服务的时候,因为现在的摩尔(音)定律已经开始失效了,就是说我们没办法在16个月内能翻一倍,所以说硬件的能力没办法会越来越变强了,但是我们人类对于软件需求的能力是越来越多的,我们怎么样在有效的硬件能力发展的条件下面,我们大部向前软件的需求,能够得到适应和满足呢?这是我们今天解决的一个关键问题,刚才于老师说是它讲的报告跟未来网络没太关系,我的报告好象像没什么关系。未来网络是我们做这个东西的支撑,我们首先讲到5G和4G的飞跃,就是万物互联的障碍清楚了,所以我们希望我们怎么样利用我们现在的高速网络解决我们物联网终端服务提供的障碍。

那么我们首先看看物联网终端设备面临的挑战到底是什么?首先第一个就是物联网设备的多样性和异构性其实是非常大的。我鱿值某盗底右部梢宰魑锪诘悖惆裀C机挂在上面也不会出现什么大的问题。由于设备的异构性非常大,对它的服务供给本身也存在问题,现在的解决方案我们分为两类。一个是对于我们的清轻量级设备,比如说向我们的传感器节点,硬件设备比较低的节点,我们一般采用实时性的操作系统。比如向我们对任务执行有敏感要求的,车联网的设备,现在大部分的厂商都使用实时性系统。它的问题主要在哪?它的优点就是功耗非常低,时延是有保障的。这种实时性系统往往非常小,这种操作系统大概代码1十K。所以说由于它本身代码量非常小,每一个厂商做实时性系统的时候,它都会对它的操作系统进行定制化,一旦进行定制化之后会产生什么问题?就是兼容性差,实时性系统最致命的缺点就是功能相对物化。

我们具有实时性系统的轻量级设备的问题,第二个就是我们高性能的设备,一半安卓的智能操作系统,大家都在用。我们明显可以发现的一点就是,比我们硬件在前面的,我们的发展绝对不能够跨到硬件他它面去,现在我们可以发现,只要我们买的是安卓的设备,你用两年之后,你会觉得这个手机有点卡,那是因为我们软件的发展不断更新,所以说现在的这两种物联网的解决方案都会面临一些问题,最大的问题是什么?我们用户对于应用服务的需求从来没有放缓过,我们希望我们从轻量级的设备上面,拿到多样性的服务。所以为了解决这种问题,我们可以看到,现在有一些方案,就比如像对于我们轻量级设备提供一些智能化的服务,功能进行替换的话,重叠层是一个比较好的方案,有些人在这方面提供了一些技术,包括华为他们支持这样的技术。能够在通过无线的方式对物联网的节点做服务的更新,但是他们这个东西最关心是什么?你肯定是不能换操作系统的,你只能基于我的操作换我上层的服务,而且是更新服务本身的代码,不能做上层服务完全的替代。

第二种方式就是大家都用的(英文),一个是(英文),我现在我拿了(英文),我可以从(英文)上面去拿我想要的软件,你用安卓会那么卡,是因为你安装了很多软件,其实自己可以不用装那么多软件。现在问题是什么?我们虽然说这些软件是获取到本地的,我们很多软件比如像我点外卖的软件美团,我一周可能只用一次,但是我必须要把它留在我们的手机上面,我心里没有安全感。你不会把它删掉,但是你又不用它在本地中心其实消耗非常严重,维护起来比较麻烦。,如果点进去就让你更新,这是一个很烦燥的过程,还有我们的(英文)服务,这是我们提供的一个东西。

这是我们伟大的云计算提供的软件技服务,软件技(音)服务能够把终端做不料了事情放在云端去做,终端介接收到云端发来的东西,但是这个东西肯定是对于我们物联网终端实现是非常麻烦的,所以这三种方案都有问题。

重新回过头看看,我们重新做物联网服务供给的话,机遇在哪里问题在哪里?我们看看物联网终端的服务需求,就是说我们其实大部分的文件,我们可以发现,50%的APP安装之后,在终端使用的频率机器低下,这是一个统计图,我至少有一半的软件不会用。另一个是软件封装严重,功能利用率低。

现在的软件功能现状非常严重,导致我们的利润率。你们把70找兆微信装上去之后,有友圈这些功能,微信肯定不会给你裁减,肯定会一起帮你装到本地来,通过我们的统计发现90%的CPO时间,执行你10%的(英文),现在的问题就来了,在你这么多时间内执行这么少的代码,另外的90%代可以不让他过来,你不要老是强塞给我,肯定你如果是希望APP的提供商给你做这些,他肯定是不愿意的,他附加的服务赚取你的收益,我们的想法是什么?我们要避开软件的提供商,我们基于这种软件的形式,我们有没有办法能够设计出一种物“联网+的”模式,能够即使运营商不配合我们,我们依然能够做到软件程序的流式加载,这里面有一个中心两个切入点。我们希望能够把那些不经常用的软软件,不用的软件放到云端上面去,我要让你感觉不到这个软件到底是在云端还是在本地,这是我要讲的。

第二个是指我们的流式执行,我们对于一个软件的(英文),或者我们要执行一个软件的时候,我们希望不是一次性启动这个的软件的时候,百分之百拿过来在我上面跑,我希望我用多少你给多少,这个就是我们的流式执行,怎么实现也是我们要讲的技术点,最终我们要提供一个目的就是希望为终端实现跨平台的服务供给,这是我们要做的一件事情。

我们看,我们为了做成这个事情,我们提出来一个架构,是(英文)当年软件服务部的总裁和张院士共同提出来的,总裁做了(英文)的人工智能服务部的总裁。然后他们提出来一种叫BAAS模式,我们这个地方叫流块即服务是一种面向于物联网终端的新型服务模式,其中它具备了三个特点:在云端实现服务的统一存储和维护;第二个是在邻近服务器实现应用切分;第三个是将应用服务以块流方式加载至前端进行协同计算。

我们BAAS的核心技术是分布式流式软件执行平台,分布式协同计算及资源调度,应用智能切分和终端捕获重定向,轻量级的终端虚拟化技术。下面讲一下面向轻量级物联网终端的BAAS解决方案,为轻量级终端实现跨平台的远程服务加载,增加增加服务扩展性和兼容性,提出了基于ELF文件结构的软件流式执行基本方法和实现细节,利用邻近服务器的计算能力,实现了终端服务的快速加载和能效提升。

这个架构的思想我们可以看到(英文)在论文上面已经发表了。,关于们跟么做实现?这中间涉及到几个核心的技术,还包括我们终端的一个软件的执行部分,本身这是一个分布式的。你对于应用或者你对于服务做一个切割,怎么切?要做一个智能切割。第二个问题中间还包含一个,你这个软件只脑一个10%(英文)的过来,这个(英文)不在本地怎么办?你没有机制处理,内存溢出或者什么,这个我们把异常捕获到,我们要做重定向,这是我们要说第二点要说的。能够把这系统的性能做得更好?我们如果想实现跨平台的技术,支持在上层的加载,我们终端因为你对于硬件的驱动你是没办法逃避的,我们做一个轻量级的技术,可以做一个动态加载。

我们基一个轻量级的设备,我们怎么要区做一个服务的流式加载,我们可执行文件都是基于(英文)格式,把这个格式文件怎么动态留起来?这个文件主要包含两个高端,第一个是代码段、一个是资源段,但代码段不支持拆分,我们怎么去拆分?你拆分的时候不在原码阶段拆分,只能在机器码拆分。

我们把机器码利用本身的辨析的指令集到我们的汇编,我们在汇编上基本上可以分析出网络中间根据汇编本身的代码和符号表,我们可以建设一个本身函数的调动图,我根据它的函数调动关系。然后这个中间还有一个一次的过程,因为我们的代码放在我们设备去运行的时候,它还有一个过程。,它这里和云端面有一个替换,这是重定位和重连接的过程,我们在这个过程可以利用我们上下文的信息交换,我可以做一个计算卸载,通过这个方法我们我们开发原型系统。

安卓设备的软件问题我们其实很清楚,就是说本地安装的服务多,然后它的软件又比较频繁,第二个关键问题是我们想从安卓应用市场下载运用的时候,下载的过程是非常长,用户的体验是非常差的。所以我们的优化的目标跟我们刚才说的是一样的,那我们看安卓软件加载的过程,因为它是跑了(英文)虚拟机。安卓在不同版本的时候做了什么事情?安卓版本其实也体现了我们现在面临的什么问题。我直接说当我只启动安卓的时候,安卓启动一个系统非常非常卡,那时候使用体验非常不好,到安卓2.2的时候,就变聪明了一点,我在里面加机器码的时候,到安卓5的时候做一个改进,我把自节码(音)变成了机器码,在安卓5之后应该大家都能够感受到,这两年的安卓设备大家比较受欢迎的原因,本身边缘机制有一个比较大的改进。

安卓有一个很讨厌的现象,导致安全的电量很不经用,后来安卓6又做一个改进,加一个(英文),相当于你这个后台我不开启,这个东西进了多少东西,而且耗电量还很大,现在这个问题还是没有解决,到安卓7的时候,还是没有放弃,混合使用两种机制,用了(英文)两种边缘机制,大家可以通过百度去了解一下,很有意思。我运行之前我直接在安装过程我把整个机器码翻译出来,我在运行的过程中间,就是说你用的时候,我一边翻译,这是安卓现在的边缘版本的差距,但是安全步骤安装中间有一个最重要的步骤是什么?有一个函数叫(英文),现在要想的就是我们怎么改进它的我们最主要的思想是什么?我们把这个函数改了,我们把机器码文件口出来,不需要再通过编译,不再需要我们非常耗时和耗能的过程。这个东西通过这种方式我们其实能够非常快完成我们云端软件的速度,我们只要从网络上面把这个东西拿出来,我这个软件就立马启动。

我们再看,这种方案它的代价在哪?因为(英文)其实是在(英文)它其实是有一个问题的,就是说我们希望通过一次编译四处运行,装这种机制是跨平台的。我们实施加载机器码过来,你肯定牺牲了跨平台的特性,我在加(英文)编译机的时候,要结合你当前系统的参数和你系统的硬件配置来编译你的机器码,我们这个机器牺牲跨平台,跨平台的特性到底牺牲得值不值,我们现在大部分的安卓的设备有一固定的统一厂商,像华为、魅族等等,完全把这种机器码放在自己的应用商店里面。我们再看,流式软件执行的思路,这一个思路大家线下跟我们交流,这个时间不够我就直接结束了。

那我们同样,也是针对与我们的协议,我们做了我们自己的手表,这个手表就是采用这样一块结构,通过我们的方式在CPU的占比,在(英文)的下载时间以及我们可用时间比上面,我们效率都是非常非常高。

那么我们总结就是,我们讲了很这么多内容,提出一个基于流式服务的加载平台,实现了两种技术,我们把人工智能的方法加进去,然后进行自适应方法级计算迁移平台,现在计算迁移大家做得很好,都是在理论上面做,然后在怎么实现上,这是一个比较有意义的工作。我们非要把运营程序进行切片,操作系统也可以进行切片,操作系统的内河也可以做得非常非常小的。

好,我就讲到这儿,谢谢。