作者:jiwenqiang,DFX技能专家

提到开发一个产品,咱们一般首先想到的是要实现什么样的功用,可是除了功用之外,非功用特点也会很大程度上影响一个产品的体会作用,比方不定时出现的运用卡死、溃散现象。那为什么有的体系毛病一再,有的却很少出现这些问题呢,这就不得不提到咱们今日的主角DFX了。

一、什么是DFX?

DFX是早在1960~1970年代就出现的产品规划理念,可是关于不少开发者而言,这是一个生疏的概念,什么是DFX?所谓DFX(Design For X),是指产品的非功用特点规划,其间的X代表产品的某个特性或者产品生命周期的某个阶段。从下面的图能够看出,产品的非功用特点是十分丰富的,它们直接影响产品的质量、功率、本钱等这些长期中心竞争力。

1.jpg

图1 产品DFX

在曩昔的几年里,华为软件的交给功率和质量一直在不断提高,每个软件大版别相较于上个版别交给时间在不断缩短,毛病率也有大幅降低,这些提高的背后,DFX起到了很重要的作用。跟着业界知道的深化,DFX逐步成为了杰出产品规划的柱石以及头部企业产品规划开发的根底设施,因而现在对DFX又有了另一种解释,即“Design For eXcellence”,面向杰出的规划。

二、什么是操作体系DFX?

现在咱们了解了DFX的概念,也知道DFX规划对产品来说反常重要,因而咱们在规划HarmonyOS的时分,坚持将DFX的理念带了进来,使其成为操作体系的公共根底设施,使能高质量杰出产品的规划、实现、测验和保护。经过对运用程序、设备产品这些操作体系所服务的对象进行考察,咱们概括出体系所能供给的非功用需求,并从中提炼出公共、根底的DFX结构加入到HarmonyOS中,这就发生了操作体系DFX。开发者在运用HarmonyOS的进程中,能够依据产品需求直接运用或灵敏拓宽这些DFX才能。

2.jpg

图2 操作体系DFX

看到这儿,咱们或许会觉得,操作体系DFX不便是将产品DFX的才能拷贝到操作体系中吗。其实不然,操作体系DFX相较于产品DFX有两个显著的不同点:

  1. 因为操作体系不是为某类产品所专门定制的,而是一个全栈、公共的根底设施,因而操作体系DFX首要聚集记载、诊断、康复、观测、剖析、保护和服务等开发产品所需求的公共才能。
  2. 操作体系DFX更多地关注开发者和设备商的开发体会,以协助他们规划出更杰出的产品为目标。

三、HarmonyOS对DFX才能的要求

已然操作体系DFX是为了使能开发者开宣布更杰出的产品,而HarmonyOS中也加入了DFX结构和才能,那么咱们一定很猎奇,HarmonyOS中的DFX是什么样的?DFX能为HarmonyOS带来些什么呢?在回答这些问题之前,咱们先来看一下HarmonyOS对DFX才能的要求。

简直所有的操作对DFX的要求都包括以下三方面:

  1. 轻量有效: 体系资源开销少,易用易学习,精准有效。
  2. 根底通用 要害、根底、通用、易扩展,方便开发者裁剪和增强。
  3. 掩盖全面: 全面服务运用和设备品类,全面服务开发者和设备商,全面掩盖产品全生命周期。

HarmonyOS除了这些基本要求外,还对DFX提出了新的要求:

  1. 咱们知道,HarmonyOS是面向超级终端的体系,而不同超级终端的资源或许是距离巨大的,比方有的富设备供给的资源为RAM 8GB、ROM 512GB,而有的瘦设备却只有RAM 128KB、ROM 2MB。面对这么大的资源差异,HarmonyOS对DFX提出了支撑全栈多语言、可大可小、灵敏布置的要求。
  2. 除了面向超级终端,HarmonyOS的另一大特征是其丰富的分布式超级终端场景支撑才能,因而HarmonyOS要求体系的DFX才能要能够支撑分布式场景,比方分布式的日志、分布式盯梢、分布式调试调优等等。 

3.jpg

图3 HarmonyOS对DFX才能的要求

四、HarmonyOS DFX结构与才能

经过上面的介绍,相信咱们现已对操作体系DFX的概念有了一定的了解,那么咱们现在开端进入正题,给咱们介绍一下HarmonyOS DFX的结构与才能。

4.jpg

图4 HarmonyOS DFX结构和才能全景图

图4的全景图中心褐色部分为HarmonyOS DFX所供给的才能。

HarmonyOS DFX供给了以下才能:

(1)记载才能: 供给了轻量的日志、事情和盯梢功用,能够将程序运转的轨道记载下来,为后续剖析度量奠定根底。

(2)毛病办理才能: 供给精准有效的毛病检测、定位和康复才能。

(3)观测剖析才能: 供给了一致便捷的观测与剖析东西,首要包括信息导出、信息剖析和联动调试才能。

那么这些DFX才能的作用又是什么呢?从全景图中代表DFX的中心部分与周边的联系能够看出,DFX的这些才能不只需求为操作体系的其他子体系供给服务,其更重要的任务是支撑影音文娱、智慧出行等软件运用以及“1+8+N”等硬件设备。除此之外,这些才能也是产品开发运维东西链的根底,需求支撑开发调试的IDE东西以及产品运维大数据剖析平台的构建。

在了解了HarmonyOS DFX的结构之后,咱们知道HarmonyOS DFX首要包括日志、事情、盯梢、毛病办理、观测剖析这5部分。其间日志、事情和盯梢表现了DFX的记载才能,毛病办理能够协助开发者快速定位和发现问题,而观测剖析则是经过一系列东西,协助开发者在集成的环境下运用这些DFX才能。接下来咱们就来逐一看看HarmonyOS中所具有的这些DFX才能。

1. 日志(HiLog)

日志一般被视为最简单的功用,可是在开发者运用日志的进程中,有两个比较明显的问题,一个是滥打日志现象,另一个是跟着软件规划和安排规划的扩大,体系日志凌乱、流量超大的问题越来越严峻,不只容易走漏隐私,甚至连开发者想检查自己的日志都变得益发困难。针对这两个问题,HarmonyOS DFX规划了一套全新的日志功用——HiLog。下面是HiLog的示意图

5.jpg

图5 日志(HiLog)

从上图能够看出,HiLog不只供给了支撑JS/Java/C/C++多语言的日志收集功用,还着重在日志分类查询、流量操控和隐私处理上做了专门规划。下面咱们逐一看看这些规划。

(1)分类查询

为了处理日志凌乱、不方便检查的问题,HiLog关于不同级别的日志进行了分类,供给分级查询日志的指令。而且除了能够依照级别(Level)、类型(Type)、标签(Tag)检查日志,还供给了依照范畴(Domain)检查日志的指令。所谓范畴是指跨软件栈层次的事务垂域。那么咱们为什么要依照范畴检查日志呢?咱们设想一下以下场景:Camera功用范畴包括运用、服务和驱动,开发者假如想从一堆日志中过滤出Camera范畴的日志,是没有功用支撑的,用老的过滤办法是不可的。为此,咱们给需求的范畴定义了DomainID,经过范畴过滤来处理这个问题。

(2)流量操控

经过分类查询,咱们处理了日志检查不方便的问题,可是过量的日志也会对体系功用发生巨大影响,依据经历,假如把体系中所有日志全部都翻开,严峻的情况下体系的功用或许会下降至70%。那么该怎么处理日志过量的问题呢?

HiLog经过对不同范畴的日志总量进行流控来处理这个问题,在收集日志时,记载每个范畴的日志总量,识别出超过阈值的范畴,然后对该范畴的过量日志进行操控。其间对过量日志的处理在调试(Debug)和商用(Release)两种形式下有不同的处理战略:在Debug形式下,会提示过量日志,但不会真的丢掉过量日志。而在Release形式下,会将过量的日志丢掉并打印一条日志丢掉的提示。

6.jpg

图6 流量操控的两种形式

(3)隐私管控

除了查询不方便和过量日志问题,日志的隐私管控也需求引起重视。在咱们开发调试的进程中,经常会倾向于打印更多的信息,这就很有或许将用户隐私信息也打印出来,比方姓名、拜访的URL地址等。而现在关于隐私走漏的处分是比较严峻的,欧盟的《通用数据保护条例》(General Data Protection Regulation,简称GDPR)针对隐私走漏最高罚款2千万欧元或年度营业额的4%,因而,咱们在日志打印的时分需求十分谨慎,不能将用户隐私打印到日志里。

为了对隐私安全进行管控,HiLog供给了变量打印操控功用,开发者能够经过格式化字符{private}或{public}灵敏对变量内容进行声明,假如声明为{private},则表示该变量为隐私变量,在Release形式下会躲藏这些隐私的变量内容,而关于不需求管控的变量,则可用{public}来指明,不进行躲藏。

7.jpg

图7 HiLog的变量打印操控

2. 事情(HiView)

除了日志以外,HarmonyOS DFX对事情也供给了记载才能,并为此规划了一套全新的事情结构(HiView)。

8.jpg

图8 事情结构HiView

咱们知道,事情或许来源于运用,也或许来源于体系,因而HiView结构分为体系事情结构和运用事情结构两个部分。每个部分都供给了事情收集接口,体系事情结构运用HiSysEvent接口,运用事情结构运用HiAppEvent接口。除此之外,HiView还供给了灵敏的订阅查询接口,能够为后端处理者分享收集到的事情。该接口的运用场景有许多,比方IDE能够经过此接口订阅事情,从而在调试界面上出现事情,而体系厂商也能够经过此接口订阅事情,再进行定制化处理。

别的,HiView还对体系事情结构的处理逻辑做了插件化规划,经过在HarmonyOS上装备和布置体系插件,能够实现对不同大小终端设备的灵敏适配。

3. 盯梢(HiTrace)

接下来,咱们来看一下HarmonyOS DFX的最终一项记载才能——盯梢。

因为HarmonyOS是面向超级终端的体系,因而除了像常规操作体系那样盯梢运用间、进程间的交互进程,还需求具有跨设备盯梢程序交互进程的才能。在HarmonyOS中,这种分布式盯梢的才能由HiTrace供给,而HiTrace经过TraceID的传递来对整个事务链进行盯梢。TraceID不只能够在APP、Native、Kernel之间跨层传递,还能够跨进程、甚至跨设备传递。值得一提的是,HiTrace是一种轻量级的盯梢机制,在Wi-Fi条件下只是会添加微秒级推迟,而这种推迟对体系来说影响是十分小的。

9.jpg

图9 HiTrace分布式盯梢

4. 毛病办理

除了上面介绍的一些记载才能,毛病办理也是HarmonyOS DFX的一项重要才能。为了协助开发者快速定位和发现问题,HarmonyOS DFX在体系侧布置了全量、精准的毛病检测机制,包括7类单体系毛病检测器(进程溃散、运用卡死、资源走漏、踩内存、整机重启、不开机和体系死机)和1类分布式毛病检测器,经过这些检测器,毛病检测率能够到达80%以上。为了满意HarmonyOS面向超级终端的特性,这些毛病检测器还能够在不同设备上依据资源灵敏进行布置。

10.jpg

图10 毛病检测器

因为篇幅原因,下面咱们要点对这7类毛病检测器中的进程溃散检测器、运用卡死检测器以及体系死机检测器进行介绍:

(1)进程溃散检测器

提到进程溃散咱们一定都不生疏,这是一种最常见的毛病,对此的检测机制也都比较成熟,但当前的检测机制还存在着一些问题,比方,运用进程无法直接获取自己进程相关的溃散日志,溃散日志包括许多无效信息、重复信息,以及抓取溃散调用栈失利等。为了处理这些问题,HarmonyOS DFX对其供给的进程溃散检测器做了以下特别规划:

  • 支撑Java/JS/Native全栈检测。
  • 敞开专门的API给运用进程查询自己进程的溃散日志,能且只能获取自己进程的溃散信息,处理了运用无权获取自己溃散日志的问题。
  • 经过对溃散日志信息的去重,删除了许多的无效信息,协助开发者愈加精确地定位信息。
  • 支撑一起抓取多个进程的调用栈,避免抓取日志不全的问题,确保更精确地还原毛病现场。

(2)运用卡死&体系死机检测器

运用卡死和体系死机也是比较常见的毛病,它们一般概率性发生,可是严峻影响用户体会。检测这类问题的难点在于,怎么将软件毛病与用户感知的死机毛病做有效匹配,假如所有软件bug都上报,开发者会无从下手,而假如漏检了则又无法精确定位。为此,HarmonyOS DFX对运用卡死&体系死机检测器,做了以下特别规划:

  • 在体系中布置了32个检测点,全面检测软件死机毛病。
  • 别的添加了4个用户行为检测点,精确检测用户对死机现象的反应。

这些布置的检测点支撑依据不同设备的毛病形式灵敏布置,假如咱们的设备没有屏幕,那么就不用去布置亮灭屏超时及快速点击屏幕检测点。除了测点,判决规矩也能够依据毛病检测成果的大数据剖析动态进行调整。经过上述优化,死机毛病检测率从30%提高到了80%。

11.jpg

图11 运用卡死&体系死机检测

5. 观测剖析

看到这儿,咱们或许会有个疑问,开发者怎么才能运用HarmonyOS DFX所供给的这些日志、事情、盯梢和毛病办理才能呢?那接下来咱们就来介绍一下咱们的观测剖析东西,这些东西能够协助开发者剖析定位问题、调试调优。

(1)信息导出东西(HiDumper)

开发者在开发、调试、测验、保护等进程中,需求频繁观测体系的各种信息,一般这些观测信息都是经过信息导出来获得。虽然一般操作体系都会供给各类信息导出东西,可是这些东西之间或许规矩差异很大,而且很难对主动化测验东西或IDE进行适配。跟着产品种类的添加,体系要导出的信息也变得反常丰富,信息导出接口多、才能杂,适配难的问题也愈加凸显。

为了避免上述信息导出问题,HarmonyOS供给了一致的体系信息导出东西HiDumper,相比于其他信息导出东西,HiDumper对指令参数进行了一致的规格化办理,并对所有导出信息进行分类、调度和输出,减少了后端东西的适配难度。

12.jpg

图12 信息导出东西HiDumper

(2)分布式联动调试东西

目前的APP调试一般都是运用本地调试器,每个待调试设备需求一套独立的调试终端和IDE东西,这明显不能很好地支撑需求多设备之间联动调试的分布式事务场景。为了应对这种场景,HarmonyOS全新开发了分布式联动调试东西,将跨设备的日志、事情、盯梢及毛病日志在同一个IDE调试窗口进行相关展示,给开发者类似单设备调试的窗口体会。IDE运转时能主动捕获反常信息,经过反常信息相关出相关的事情列表和流水日志,再经过反常日志能精确定位到代码行,大大提高调试功率。

13.jpg

图13 分布式联动调试

(3)分布式调优东西

在介绍完观测和调试东西之后,最终咱们再来看一下调优东西。HarmonyOS新开发的分布式调优东西,能精确全栈盯梢JS/Java/C/C++等多语言调用链,记载跨线程、跨进程、跨设备等不同颗粒度的活动,生成规格化的HiTrace文件。经过将HiTrace文件在IDE图形化东西中展示,开发者能够很便当地剖析分布式运用功用瓶颈。

14.jpg

图14 分布式调优

以上便是咱们关于HarmonyOS DFX要害部分的介绍了,相信咱们关于DFX的概念也有了开始的知道。后续,HarmonyOS DFX将在缺陷检测、毛病康复、大数据剖析以及更多调试调优东西方面继续努力,为开发者供给更多才能,助力开发者开发更杰出的产品,咱们敬请期待!

飞书20220324-192740.png