[技术角度科普] 鸿蒙的“分布式”究竟是个啥情况?

2021 年 6 月 6 日
 locoz

文章作者:「夜幕团队 NightTeam 」- Loco

本文首发于微信公众号「 NightTeam 」,如需转载请在微信端发消息告知。


随着鸿蒙的发布,华为又在各个交流平台上引起了一波扯皮,但看起来直到现在仍然有挺多人对鸿蒙的“分布式”了解得并不多啊,扯皮都扯不到点上...

所以...我来分享一下我了解到的东西以及我的理解吧,希望能让大家对鸿蒙的了解更清晰一些,做到既不要因为营销而看不到鸿蒙好的那一面,也不要因为鸿蒙好的那一面而无脑吹鸿蒙或觉得非华为不可、其他厂商和个人都是垃圾,用理性、客观的态度去看待这个(或者说是“这些”?)新生的事物。如果内容中有啥错漏,欢迎友善交流,杠精勿扰。

PS:本来我一直是不想单独发一篇解析文之类的东西来参与这种话题的,容易惹上两边的二极管,搞得一身骚。但是今天在 [ HarmonyOS 的原子化理念是不是也导致应用开发的概念也需要做个转变?] ( https://www.v2ex.com/t/781535 ) 这想着写个评论,结果写着写着就几百字了...就干脆加点东西、润色一下单独拿出来发算了。

华为在“分布式”这一块做了什么实事?

首先,华为先制定了一套协议,把各种基础硬件(比如麦克风、音响、屏幕等)、基础软件(比如文件系统、数据库等)、基础功能(比如启动 APP 、移动鼠标指针位置、点击某个位置等)的操作都给在协议里标准化了。

然后华为基于这个协议做了套设备互联库,会通过各种连接方式尝试寻找其他设备进行连接,并对调用者屏蔽连接细节,只暴露出可以与哪个设备进行什么操作。另外这套库还对一些特殊的操作又包了一层,比如对屏幕的操作可以是显示指定视频流(且可以由其他设备串流)、对音响的操作可以是播放指定音频流(与视频流一样)之类的。最后华为把这套库给塞进了系统层以方便 APP 调用,把整个这一套称之为“分布式”、“万物互联”。

接着华为又对 APP 的形式做了调整,先是做了个可以让 APP 模块化运行的框架,称之为“原子化”;然后又做了个 UI 库,可以让 APP 在不同显示大小(不能说是屏幕大小)的情况下上自适应显示合适的 UI 。这个 UI 库的自适应和一般自适应的直接拉伸还不一样,这个是给显示大小分了级别然后专门做了对应的 UI,并按内容重要度来进行差异化显示,级别内的大小才是直接拉伸。最后华为也同样把这套库给塞进了系统层,把整个这一套称之为“一次开发多端部署”。

这些东西能带来什么好处?

对于 APP 来说,只要基于华为的这些东西做,就可以直接通过调用系统内置标准库的方式来实现各种互联功能,并且可以把 APP 的单个或多个功能拆成一个可以独立运行的模块,可以把每个模块通过各种形式单独使用(比如类似小程序、小卡片一样的各种启动和运行方式),也可以通过协议中定义的基础功能实现所谓的“流转”(也就是把这个模块包到传输另一个设备上运行)。而如果对端设备的性能不足以支持直接运行模块的话,也可以直接串流画面显示,但这对于 APP 和使用者来说是无感知的。

对于硬件厂商来说,能更容易实现互联功能、能参与到一个更容易造噱头的生态里,而且啥设备都能接,小到食指大的小单片机、大到手机 /电脑 /显示器实际上都可以接入进去,只需要把自己这个设备能实现的功能暴露出来就行了,有标准化的就按标准化的来、没标准化的再自己定义一套通信协议去基于华为的设备互联库通信,成本低收益高。

对于用户(尤其是不懂技术的普通用户)来说,由于华为的影响力会带动相关行业的企业和开发者都参与进去,所以整体软硬件生态肯定是被推着向更加能够互联互通且轻量化的方向发展的,一些技术实力没有那么强的企业和个人也能通过华为降低的门槛参与进去,所以那些以往很难见到、用到的功能和设备,以及各种轻量化的 APP 也自然会更快地变得越来越多。虽然事实上没有华为也会朝这个方向发展,但毕竟华为的影响力摆在那,加速发展是必然的事情,制定规则、引领行业发展这种事情本来是大厂的优势。

所以这些东西到底新鲜吗?

总体来说,其实这就是基于云原生里那些服务化、网格化之类的思路来设计的一整套东西,手机、物联网以及其他相关行业以往有部分类似的东西,但没有华为被逼无奈下做出来的东西这么彻底。所以虽然都不是什么新鲜东西,但华为做这事(单指互联这一块的东西)在技术方面也还是应该夸赞而不是骂的,毕竟这方面华为做的东西确实没毛病,做的事情也确实多,能实现的效果也确实很好,而且最关键的也确实是在利用自己的影响力做对大家都有利的事,不是挺好的吗?

顺便说一下两个不懂技术的人经常有意无意混淆的点

(省得每次有人抬杠都得重新打一遍)

这一整套东西是很大的创新吗?

严格来说并不是,华为只是把以前零散的这些东西整合了起来并且制定成了标准,实际是在利用自己的影响力提高所有人的方便性、统一化市场并且方便自己吹牛逼和赚钱而已。说白了,没有华为做也能实现,只是会因为没一个统一标准的生态导致实现麻烦点、功能零散点而已,区别主要还是在于有生态和无生态,而不是华为有没有做。

所以...

高情商:华为整合了市场

低情商:缝合怪

(狗头保命)

没有华为的这些东西,就不能实现那些互联功能吗?性能真的会有明显差异吗?

同样也并不是,互联功能本身只要有能让设备之间进行通信的手段就能做,而华为做的事情只是把复杂的事情简单化,让更多没有精力或能力开发相关功能的人和企业能做出这些功能而已。而性能的话,一个能直接在底层进行操作的库当然能比一般的个人开发者在应用层弄一套的强,但跟同样能魔改系统且有能力把自己魔改的系统拿给别人用的厂商们而言,其实差别并不会有多大。

顺带一提,个人开发者实现的类似功能的魔改也基本不用想着普及给其他人用,没有 Root 权限、没有 Magisk/Xposed 之类的框架,很难拿到那么高的权限,所以市面上基本就是见不到的,这很正常。

所以,不要以为只有华为才能搞,也不要想当然地以为华为的这套性能就一定比别人好,这种想法要不得...

另外,实际上其他手机厂商在当下即使不用鸿蒙也没关系,它们可以只把设备互联的那一套库给塞进自己魔改的系统里,也可以同样接入同一套生态,就看它们愿不愿意了。这种做法肯定要比直接使用一个所谓“兼容 Android”的东西要更稳妥(毕竟普通用户分不清啥是啥,容易产生不必要的误会),而为了保证产品的竞争力,接入生态或者自己做一套同样的东西基本是必然的事情,在接入生态更省事的情况下其他厂商大概率会更优先选择这种方式。

华为真正该被骂的点是什么?

是各种营销手段、是套高大上的名词、是在手机版鸿蒙方面的吹嘘、是做 to C 产品时那种高傲的“我为你好”的设计思路、是 996 、是变相逼迫年龄稍大的员工离职...等等等等,这些与技术无关但非常令人反感的管理人员、运营人员搞出来的事情才是真正该被骂的。

为华为工作的技术人员又没有做错什么,人家做出来的东西也确实没毛病,为什么要连带着技术人员做的东西一起骂呢?更何况还是在自己还不了解实际内容的情况下。

总结

还是那句话:既不要因为营销而看不到鸿蒙好的那一面,也不要因为鸿蒙好的那一面而无脑吹鸿蒙或觉得非华为不可,理性、客观地看待新生事物。什么该骂、什么该夸要分清,作为消费者却去跟饭圈一样把厂商当偶像,又或者虽然不了解但抓到点东西就要拿出来骂,好好的一个人变得跟个二极管一样多没意思?

1372 次点击
所在节点    华为
46 条回复
locoz
2021 年 6 月 6 日
@Jirajine #20
华为想做的本来就不是一个只针对物联网的东西,单有物联网芯片有啥用?更何况华为被制裁受损失最大的是手机、平板这些设备的市场,关物联网设备啥事?手机、平板这些设备没新芯片、没 5G 了,还没“系统”这种特色的话,非粉丝的用户凭什么买呢?
还有啊,你为啥跟华为的营销一样,这么喜欢混淆多个事情到一起说?一边骂华为一边自己学华为?

“为啥 flutter 能在多个平台上运行对生态是利好,而哄蒙应用能在其他系统上运行反而是”重大打击“?”
这种废话问题你是怎么想得出来的? flutter 就是个单纯的框架而已,而华为的 UI 库、设备互联库虽然可以单拿出来,但本质上它们都算是鸿蒙的一部分,这么大的区别你不会不明白吧?如果所谓的“鸿蒙应用”能在 [初期] 就没有任何障碍地在其它系统上运行,那鸿蒙的意义何在?这还不叫重大打击吗?

“那你直说就是,这就是响应式组件啊,你去找找各种组件库,支持响应式的组件都可以在不同尺寸下自动调整布局”
我已经反复强调过很多遍了,华为这套东西里替开发者做的不是那种简单的调整布局,而是直接就是一个新的样式,这两种做法是完全不同的效果。前面我也说了:“这个所谓的“一次开发多端部署”最典型的例子就是一个有列表页的应用可以在手表上直接只展示主体的列表部分,我记得之前看到华为的哪个视频里有演示”,你可以自己找一下。

“数据互通共享标准就是各大”生态链“的核心,多端同步互通都是老掉牙的东西了”
请举例,别打嘴炮。

“明明整个公司从上到下都是一套行事逻辑”
前面已经给你反复举例过了,不再赘述。

“苹果“高价低配”本来就是公司的核心理念和商业模式”
是吗?像苹果的电脑在视频创作领域可并不是高价低配的,相反还很划算,你管这叫核心理念和商业模式?提醒你一下,我前面说的高价低配指天价内存、天价数据线、天价轮子之类的东西,这种是典型的管理层拍脑袋定价弄出来的事情,底下的人有点脑子都不会定出这种价,这定价摆明了就是不想卖。
locoz
2021 年 6 月 6 日
@Jirajine #20 看你扯这些看得有点累了,如果你压根就不想好好交流,只会像前面这样要么只看一半、要么混淆多个事情到一起说,那不聊也罢,直接互 block 不香吗?
Jirajine
2021 年 6 月 6 日
@locoz #21 哄蒙就是物联网系统啊,上面说的不一直都是哄蒙的物联网生态链么,关手机啥事呢,手机上就是个魔改 android 。制裁也是制裁手机、gms 这些,哪里影响到物联网了呢?它想要“弄点特色打败竞争对手”与是否被制裁没有关联。况且也没弄出来啥特色,“非粉丝的用户凭什么买呢?”,很显然,凭营销啊。

用的人越多生态就越好,用户在其他手机上安装哄蒙应用与安装哄蒙系统的硬件交互,就危害生态了?米家 App 开发 iOS 版是否危害了米家生态?除非你这里的生态实际上指的是壁垒,开源开放不会危害生态,只会危害壁垒。

“新的样式”和“调整布局”就是一回事,你用 media query 为不同的尺寸指定不同的样式,做成什么样完全取决于你自己。你可以写一个列表组件,让它在宽屏横排、窄屏竖排,小屏就只展示主体部分。

什么是“生态链”?就是用同样的标准接口交互,你按它的规范传输,你就接入了它的生态链。

苹果所有的产品都是这种理念啊,你要是在乎性价比那苹果的所有东西都是“高价低配”,你就不是它的目标客户。你要真把这些玩意降价了,它的目标客户反而不愿意买呢。明明都是同一套逻辑,只是你自己觉得部分能接受部分不能接受,“公司是好的问题出在管理层”这我都无话可说了,管理层难道不代表公司吗?
sugarkeek
2021 年 6 月 6 日
请问你说的华为分布式观点有出处吗?
locoz
2021 年 6 月 6 日
@Jirajine #23
谁跟你说“鸿蒙就是物联网系统”了?鸿蒙的前身 liteos 才是物联网系统,现在的鸿蒙只能算是个品牌名。

“上面说的不一直都是哄蒙的物联网生态链么,关手机啥事呢”、“制裁也是制裁手机、gms 这些,哪里影响到物联网了呢?”
还搁这绕圈子呢?前面都说了“华为想做的本来就不是一个只针对物联网的东西”,而“手机、平板这些设备没新芯片、没 5G 了”,请问没手机玩啥?如果不搞个“系统”特色,华为手机卖不出去单卖物联网产品能赚几个钱?

“用的人越多生态就越好”的前提是鸿蒙已经成气候、有能力直接吞并别人的用户,现在鸿蒙连个手机操作系统都需要以 AOSP 为主体才能正常用,这时候如果华为自己把所谓的“鸿蒙应用”弄成一个可以直接在其他 Android 系统上运行的状态,别人还凭什么要用所谓的鸿蒙系统?米家 APP 开发 iOS 版跟这有啥关系?米家本来就是个纯物联网设备管理系统(或者说是工具),跟操作系统完全是两码事,你咋又开始故意混淆了?

笑死我了,“新的样式”和“调整布局”就是一回事这种结论都说得出来,PC 版微信和手机版微信的 UI 区别是“新的样式”,所以你对手机版微信“调整布局”能做出和 PC 版微信一样的界面?注意这个“调整布局”可不能动按钮哦。还是前面说的,网上有相关视频,自己去看,别睁着眼睛说瞎话。

“什么是“生态链”?就是用同样的标准接口交互,你按它的规范传输,你就接入了它的生态链。”
还在说废话,你自己看看你这句话跟前面说的“数据互通共享标准就是各大”生态链“的核心,多端同步互通都是老掉牙的东西了”这一句有啥区别?鸿蒙的情况我已经告诉你了是基于分布式文件系统和分布式数据库实现,你倒是举几个同样这么做的例子出来看看?谈到细节就开始扯概念,你这和华为极端粉们谈到技术就开始扯政治有啥区别?

“苹果所有的产品都是这种理念啊,你要是在乎性价比那苹果的所有东西都是“高价低配””
恰恰相反,像前面举的视频创作领域的例子,苹果就是性价比之选,尤其是在 M1 芯片出来之后更是性价比爆表。

“你要真把这些玩意降价了,它的目标客户反而不愿意买呢”
还是以视频创作领域为例,降价了只会卖得更多...

"明明都是同一套逻辑,只是你自己觉得部分能接受部分不能接受"
我自始至终说的不都是 [一个企业里的部分人干出了奇葩事情不代表整个企业都这样] 吗?是你在扯 [一个企业里的人干出了奇葩事情就代表整个企业从上到下都这样] ,这完全是两种不同的逻辑。

“管理层难道不代表公司吗?”
一个管理层的人或者一个事业群的管理层能代表整个公司吗?

---

我累了,你这要么只看一半、要么混淆多个事情到一起说、要么顾左右而言他的样子跟华为的恶俗营销和华为的极端粉没什么两样,身为做技术的却连一些非技术人员都不如,我就不陪你继续浪费时间了,送你个 block,慢走不送。
locoz
2021 年 6 月 6 日
@sugarkeek #24 是基于华为官方发布的的文档、视频、代码,以及华为官方人员和接触过华为官方人员的人的言论,结合一些以往做过、见过的同类功能的实现原理综合而成的理解,所以你要说出处的话,前面说的都是出处。
GrayXu
2021 年 6 月 7 日
我觉得你说的挺客观的吧……我觉得有人愿意在 system level 做一些新 feature 还是挺好的,主要还是终端侧的营销太恶心人。
likai
2021 年 6 月 7 日
@locoz 别的就不评论了.作为一个前端 ,最近也正在边看文档边用 JS 搞鸿蒙 OS APP..UI 这个感觉你的理解偏差很大.
如果你实在理解不了别人说的意思.建议百度一下 bootstrap 这个前端框架
用电脑和手机打开同一个 bootstrap 页面看看
响应式布局在不同环境是拉伸还是换位还是重新排列,不同框架有不同的默认处理方式,
如果不喜欢默认处理方式,自己用媒体查询重写样式就好了.
鸿蒙 JS UI 的媒体查询文档
https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-components-common-mediaquery-0000000000625942
这种响应式布局媒体查询 HTML5 出来时就有的概念真没什么高大上,也不是什么新概念.
就像 android 根据不同的屏幕分辨率加载不同尺寸的图标,这很神奇么?
同一个 class 同一个 ID,在不同媒体下重写样式实现不同背景.不同颜色,不同字体,不同大小.不同布局或者在某个尺寸下不显示不是最基本的么?

https://www.w3.org/html/ig/zh/wiki/CSS3%E5%AA%92%E4%BD%93%E6%9F%A5%E8%AF%A2
locoz
2021 年 6 月 7 日
@likai #28 bootstrap 、vue 之类的前端框架我又不是没用过,加上我本来就是做爬虫的,见过的网站和显示大小不同的情况可能比你们做前端的还多,用不着给我科普...所谓的响应式布局是个啥情况我很清楚。

你说的这个跟我前面说的完全是两个不同的东西,我前面说的是之前华为的一个视频里演示过的,不同显示大小分级的情况下完全就是不同的 UI,不是一般的那种拉伸、换位,而且这个不同的 UI 是预设的。

我从来没说过什么神奇不神奇,只是从目前看到过的情况来说以往的响应式布局和华为那个确实不一样,人家把多端共用一个 UI 的门槛拉得更低了是事实。不要下意识否认,先去了解一下。
wvwking
2021 年 6 月 7 日
251 所謂的分佈式 == 吹牛逼
locoz
2021 年 6 月 7 日
@wvwking #30 “分布式”当然是吹牛逼,所以我打了双引号,但底下的技术实现还是有实际的东西的。
likai
2021 年 6 月 7 日
@locoz
不同分级不同 UI 不就是基于媒体查询重写样式?
预置媒体查询默认样式每个响应式 UI 框架都有.
鸿蒙的 UI 框架有一默认预置样式不也在情理之中?
<div>
<div class="container">
<text class="title">Hello World</text>
</div>
</div>
/* xxx.css */
.container {
width: 300px;
height: 600px;
background-color: #008000;
}
@media (width >= 900) {
.container {
width: 500px;
height: 500px;
background-color: #fa8072;
}
}
@media (width <= 500) {
.container {
width: 300px;
height: 300px;
background-color: #008b8b;
}
}
既然你是作爬虫的.
你觉得有什么布局是在这个里面改不了的?
不同分辨率完全不同的布局能不能改这 css 样式实现?
wvwking
2021 年 6 月 7 日
@locoz iOS 玩剩下的東西, AirPlay + AirDrop + handoff
locoz
2021 年 6 月 7 日
@likai #28 刚刚查了半天想找之前那个视频没找到,然后我又找别的资料确认了一下,按现在华为的说法实现这种效果的东西叫模板,从代码上来看指向的就是你说的媒体查询,这就确实跟 UI 库没啥关系了。如果之前演示的那个东西就是这个模板的话,那它和其他 UI 框架确实没啥区别...就不知道是之前华为那个视频刻意隐藏掉了这部分细节还是我看漏了,又或者是确实有但因为实际没那么好所以没放出来,印象中之前是确实没这方面的描述,视频中的代码也没有相关处理,直接就实现了同样的效果。
locoz
2021 年 6 月 7 日
@likai #32 css 想怎么实现就怎么实现没问题啊,但这个到底是普通的模板还是直接 UI 库里实现的还是存疑吧,之前那个视频我再找一找,看看到底啥情况。
locoz
2021 年 6 月 7 日
@wvwking #33 一个相当于是协议和 SDK,一个是功能,混在一起对比有啥意思...iOS 有这些功能但没法让开发者也轻松地实现类似功能啊。
wvwking
2021 年 6 月 7 日
@locoz 作為系統提供的功能, 開發者本身也不需要再次實現啊. 再者說, AirPlay server 的功能有一堆電視和盒子去做了第三方實現.
likai
2021 年 6 月 7 日
@locoz
华为 JS ui 库其实没啥说头.和各种小程序实现方法应该类似(瞎猜),,
但如果华为能把 java ui 搞得和 JS ui 一样支持跨设备组件,哪确实值得讨论一下.
locoz
2021 年 6 月 7 日
@wvwking #37 跟系统提供的功能没啥关系,系统提供的都是一些比较通用的功能,而华为这套是实现功能用的协议啊...

举个简单的例子,假设你弄了一个所谓的无线扩展坞,插个存储设备上去就能像 NAS 一样提供文件服务,然后你需要能在手机端直接读取上面的文件,在 iOS 上系统有提供这种功能吗?没有吧?

而具体实现起来的话,你是不是得专门写一个或者找一个基于 WIFI 之类的通信+设备发现的库?但是华为这套直接弄了个分布式文件系统,连接部分也被极其简化了,你是不是就可以直接在手机端去跟读本地文件一样读就完事了?省了一大堆麻烦事,这就是它的价值啊。
locoz
2021 年 6 月 7 日
@likai #38 😂慢慢看吧,反正鸿蒙这套东西现在也还没成气候,手机版鸿蒙都还得以 AOSP 为主体才算能用,UI 库这块就更不可能是重点了,毕竟之前挖的“随时可用”的坑都还没填完呢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/781685

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX