引言
在12月华为举办的HarmonyOS 2.0手机应用开发者Beta发布活动上,HarmonyOS分布式软总线技术成功吸引了开发者们注意力,其作为HarmonyOS承载万物互联使命最不可或缺的重要环节,是HarmonyOS架构中最底层也是最重要的技术核心。
正文
在今年9月的HDC 2020华为开发者大会上,华为发布了HarmonyOS 2.0系统,在短短3个月后,华为相继在北京、上海两地召开了HarmonyOS 2.0手机应用开发者Beta活动,并全面启动首届HarmonyOS开发者创新大赛,大赛启动后不到一个月的时间,受到了开发者们的广泛关注,超过了1800支队伍报名参赛。
随着HarmonyOS 2.0手机应用开发者Beta版首次公开亮相,HarmonyOS 2.0分布式应用程序框架、分布式软总线与分布式数据管理等关键技术得到了开发者们的高度关注。
通常基于现有的Android系统开发一个跨端功能,比如将手机购物直播功能迁移到大屏上,往往需要熟练开发工程师半个月甚至一个月的工作量,开发者需要耗费大量精力去实现底层通信,UI的适配等。而基于HarmonyOS 2.0分布式技术,开发者是可以不去理解组网和底层协议的,UI自适应、分布式数据管理和轻便的分布式调度等功能,仅需一天就能实现上述功能需求,从而可大量节省开发者的精力和时间投入成本。
本文将从HarmonyOS的一些架构理念和概念切入,梳理HarmonyOS 2.0分布式软总线和分布式数据管理中相对难理解的部分,期望帮助开发者更快入门进行HarmonyOS开发。
全场景覆盖的弹性
先用一句话阐述HarmonyOS的定义:HarmonyOS是万物互联时代的操作系统。核心就是在端侧引入了分布式技术。
而所谓的分布式,从消费者的角度来说是指将不同的智能设备做融合,做好设备间的快速连接、能力协作与资源共享,让全场景跨端操作就像一个终端一样简单。对于设备开发者,基于HarmonyOS系统可以更便捷的加入IoT生态,实现设备智能化的产业升级。对于应用开发者,基于全新的HarmonyOS系统,可将应用触达包括手机在内的更多类终端,发掘更多流量入口,吸引更多用户,实现从智能手机市场到全新万物互联市场的变革。
以上是HarmonyOS架构,包含了内核层、系统服务层、应用框架层、应用层。根据具体的设备和场景的需要,按需选择子系统、功能或模块。这里以内核层为例来看看HarmonyOS系统的灵活性。
HarmonyOS采用多内核设计,针对不同的设备、应用场景,可以选择不同的系统内核,比如上图列举的LiteOS、Linux kernel等。上层则有一个KAL抽象层,封装内核实施的细节,面向上层提供抽象好的基础内核能力,包括进程、线程管理,内存管理,文件系统,网络管理等。
因此我们说内核层实现多内核的灵活设计,内核可替换。硬件配置高功能要求多可选择Linux内核,对于智能家居等配置相对低功能较单一可以选择LiteOS,而且相比其他RTOS内核,LiteOS-A支持MMU,内核/App空间隔离,支持完善的POSIX接口。
这种设计在具体实现上的难度颇大,通常做法是POSIX兼容,但是HarmonyOS则直接选择了跨内核兼容。这也是HarmonyOS实现全场景覆盖的最底层基础。
对于应用框架层,其实也是应用开发者真正关心的部分——即究竟怎么高效开发“跨端体验”。不同设备形态差异,屏幕分辨率千差万别,交互也各式各样(触摸、鼠标、手写笔、旋钮、遥控器等)。HarmonyOS 2.0的解决方案是分布式UI框架,UI信息结构抽象+交互事件归一,包括动态控件、动态布局、以及屏蔽不同输入方式引入的差异,一致化交互事件接口等。
分布式应用框架是另外一个重要技术,将跨端应用抽象成基础单元(元程序,即Feature Ability),实现应用在多种终端上灵活组装、可大可小、可分可合、可流转,实现应用一次开发、多端部署。
分布式软总线:虚拟的高速公路
华为反复在提的“分布式软总线”也是我们此前介绍的HarmonyOS的重要特性。它是覆盖全场景,将全场景所有设备串联起来的基础——从HarmonyOS的层级结构来看,分布式软总线位于系统服务层。它为鸿蒙设备赋予了分布式通讯能力。在有了这条软总线以后,设备就能快速地彼此发现、连接,实现高效的任务部署与数据传输。下面这张图就是分布式虚拟总线的示意图。
此前华为消费者业务软件部总裁王成录也曾介绍,当前HarmonyOS 2.0在分布式软总线上取得的成绩已经相当不错。“性能无限逼近硬总线能力,让多设备融合为一体”。
其效率主要体现在低时延、高吞吐和高可靠性上。HarmonyOS 1.0是20ms时延,而2.0提升到了10ms;1.0的带宽是1.2Gbps,2.0则提升到2.4Gbps;1.0抗丢包率25%,2.0则提升至30%。
华为在12月16日的活动上,来自2012实验室的专家深入介绍了分布式软总线的关键技术。除了上面逼近硬总线的性能外,也给开发者们带来“免繁琐配置、免专家经验、一站式编程”的实用价值。基于华为深厚的通信技术背景,针对终端这种网络连接不稳定以及日常生活的常用需求,华为创新性地提出了极简通信协议,将OSI模型中五层变一层(网络层、传输层、会话层、表示层、应用层),精简协议封装;根据应用需求和网络类型设计最优算法;实时感知应用运行状态,智能决策协议算法/参数,合理配置无线网络资源等。
虽然我们不知道其中的实现细节,但感觉这是个相当大的工程,未知当前其完成度如何。至少这让人对HarmonyOS完全形态的分布式软总线的效率非常期待。
此外如上图所示,HarmonyOS 2.0的分布式软总线实现了“全融合自适应”。包括自发现自组网、异构融合网络,以及动态时延校准。其中自发现自组网,是指通过BLE长开、广播,以及设备侦听信道的方式去实现设备间的自发现和自连接——也就不需要由用户去进行繁琐的配置。在同一个生态内,做到自发现、自连接,对用户而言会构成使用的极大便捷:首次配对完成后,再次总是自发现和自连接。
而“异构融合网络”则是指蓝牙与WiFi两个异构网络的设备,相互可见。如此一来,不同类型的设备就能通过不同的方式联通,了解相互之间的能力。这对上层应用而言是很有价值的。本文开头介绍的那个例子,就应用了HarmonyOS的异构融合网络特性。虽然我们仍不清楚这项技术的实现细节,不过开发者原本也不需要理解其中实现,华为也在活动上介绍了这项技术更多的抽象概念:
就其开发模型而言,开发者是面向一个逻辑网络,而不需要关心具体的协议。也就是“业务开发与设备组网解耦”,以及融合自组网。可见华为自己是需要为此完成很多工作的。
除了自发现、自连接,以及异构网络组网以外,还有个“动态时延校准”特性。典型的例子是在当手机将视频流分享给大屏,音频流分享给音箱时——HarmonyOS 2.0的分布式软总线能够做到视频与音频之间的同步。
在分布式软总线的基础上,HarmonyOS生态内的设备因此能够实现分布式设备虚拟化、分布式数据管理、分布式任务调度等。其中分布式任务调度,大概是前几者实现后的高级阶段特性了。这种方案能够构建起统一的分布式服务管理机制,包括发现、同步、注册、调用;能够实现对跨设备的应用进行远程启动、远程调用、远程连接和迁移等操作;而且是根据不同设备的特性、能力、位置、业务运行状态、资源使用情况,甚至用户的习惯和意图,选择合适的设备来跑任务。
分布式数据管理:数据的自由流转
就HarmonyOS而言,现阶段看到比较多的开发成果,集中在分布式数据管理上。这项特性实现的是数据在不同设备间的自由流转。
分布式数据管理包括分布式文件系统、分布式数据库、分布式搜索。数据库和文件系统是操作系统的核心技术之一。有了分布式数据管理,用户数据不再受制于单一的物理设备,服务逻辑也与数据存储切分开。在此基础上,应用是跨设备运行的,数据从一个设备无缝传输到另一个设备。基于不同设备本身的特点,如PC更适用于生产力,而手机的优势在移动便携性,则文档编辑能够利用这两种设备各自的优势。
实际上,POSIX分布式文件系统在市场上并不少见,不过华为在分布式文件系统的投入很大。从华为公布的数据来看,其成果也相当显著。华为并不满足于此,“分布式数据管理让跨设备数据处理如同本地一样方便快捷”。
在远程读写性能方面,业界常用的是微软基于SMB协议做的Samba,其可以提供文件与打印共享服务,支持各种系统。而王成录则表示“HarmonyOS比业界做得最好的Samba系统快最少4倍,我们能够达到其4-6倍的速度”。
在程序运行过程中,需要不断调出数据,执行各种操作。华为的分布式数据库,比Android四大关键组件之一的ContentProvider的OPS性能快1.3倍——需要注意的是,这是HarmonyOS分布式软总线跨设备数据读取,与Android本地不同应用间数据读取的OPS性能对比。ContentProvider在Android系统中,为存储和获取数据提供统一的接口,在不同的应用程序间共享数据。
最后是分布式数据检索能力。华为在这部分的对比对象是苹果的Core Spotlight。苹果在iOS系统中的Core Spotlight以接口的形式,提供给第三方应用调用,能够快速查找数据库中的所有数据信息。华为在宣传中提到,其分布式检索性能是Core Spotlight的1.2倍。从分布式文件、分布式数据库,及数据检索的成绩展现来看,华为的确是在其中投入颇多的。
针对分布式数据库、分布式文件系统、分布式搜索,这次手机开发者Beta活动中,华为也公布了一组新的性能数据。如分布式数据库性能,E2E同步只需25ms;而分布式文件系统顺序读写速率可达网络带宽的90%以上;分布式搜索性能,10000条检索的平均时延为21ms。
总结分布式数据管理具备了隐藏物理储存位置差异、统一索引管理及开放丰富的搜索接口,在具体实现上也做到了POSIX兼容以及同步冲突自动解决等,则在实现数据于不同设备的流转时,不仅效率更高,而且为分布式技术更丰富的应用实现提供了基础。
而从开发者的角度来说,相比传统方案(比如设备间数据同步的以云为中心的数据同步),分布式数据管理同步方案就要简单很多,比如像上图分布式文件系统技术的代码示例这样。当然和基于分布式软总线的开发一样,HarmonyOS本身是隐藏了很多实现细节的(比如分布式文件系统技术,是隐藏了储存位置差异的;分布式搜索则统一了索引管理,不需要关注索引引擎的实现),所以开发者用起来就会很简单。
基于分布式软总线这条“高速公路”,和高效的分布式数据管理能力, HarmonyOS实现了数据在不同设备间的“自由流转”,完成全场景覆盖。从HarmonyOS开发者创新大赛的热度表明,开发者们对基于HarmonyOS的开发还是相当有热情的,毕竟分布式技术覆盖全场景的愿景,是过去不曾有过的的革新性写照,也为开发者创造了更多实现梦想的机会。
尾声
HarmonyOS 2.0手机应用开发者Beta版发布活动主题是“一起创造无限可能”,这是华为在期望能有更多开发者的加入,更是华为在向世人表达着希望改变科技生活的决心。未来,相信在越来越多开发者的各种奇思妙想下,HarmonyOS还会有更多丰富的应用场景。在万物互联时代,一切都值得期待。
责编:Yvonne Geng