零基础视角解读分布式软总线通讯(绪论)
虽然我看不懂,但我大受震撼。
–《打扰伯格曼》
我们来自OpenHarmony开发者成长计划:啃论文小队,我们在欧建深教练的带领下啃论文。我们是TCCS团队,全意为The Child Collecting Shells。“我并不知道我在世人眼中是什么模样,对我来说,我似乎只像是一个在海边玩耍的男孩,不时找一颗平滑的卵石,或是比较美丽的贝壳来取悦自己,而真理的大海则横陈在我面前,一无发现。”
——牛顿
我们来自三所高校:
赵坤–安阳工学院
张君豪–长江大学,junhao_zhang00@foxmail.com
王羚–黔南科技学院
本篇绪论主要作者为张君豪,虽然我也什么都看不懂,但是我想就算你是一个什么也不懂的小白,我们也要让你通过我们这系列文章读懂分布式软总线通讯,不仅要大受震撼,更要看懂,看懂且大受震撼是我的追求。
一、分布式软总线概述
1.1何为总线?
总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。
说人话,或者举个栗子,把总线比作一条单车道的乡村公路,这条路旁边有很多人家,每户人家都有门口一条小路连接着这条公路。分时和共享是总线的两个特点,分时是同一时刻只允许有一个部件向总线发送信息,共享是总线上可以挂接多个部件,各个部件之间互相交换的信息的可通过这组线路分时共享,多个部件可同时从总线上接收相同的信息。套用我们的例子,就是总线这条公路因为是单车道,所以每次只能走一辆车,如果同时有两辆车就会冲突,这就是分时,每家都有一条小路连接公路,所以每家都可以开车上这条路,每两家都可以在路上没人的时候开车去另一家串门聊天,也可以自己在车上装个喇叭把自己想说的别人让保密的八卦话传达给这条路的每一个人,这就是分时共享。
1.2何为分布式软总线
分布式软总线技术是基于华为多年的通信技术积累,参考计算机硬件总线,在1+8+N(1-手机、8-车机/音箱/耳机/手表/)设备间搭建一条“无形”的总线,具备自发现、自组网、高带宽低时延的特点。全场景设备间可以基于软总线完成设备虚拟化、跨设备服务调用、多屏协同、文件分享等分布式业务。
再借用上面那个例子,你们村子由于交通不好所以本来是对外封闭的,你想聊天最多也只能找找隔壁的翠花或者村头的王大妈,结果后面国家开始给你们逢山开路、遇水搭桥,一夜之间把在一片所有的村子都联通了,这个时候你还没反应过来就有人告诉你隔壁村桂花更漂亮,突然你就发现这个世界多姿多彩了起来,这就是自发现和自组网,于是有一天你决定出门看看风景隔壁村的桂花,你发现这路修的是真不错,又宽又好,能跑的车多了还能跑的更快了,这就是高带宽低时延,走着走着你发现诶有一个地方好漂亮桂花天天在这里跳广场舞,跳广场舞肯定很不错,于是你以后就来这里跳广场舞,尽管你不知道这个地方叫什么,这就是设备虚拟化,最后终于有一天你把隔壁村的桂花娶到了,她从隔壁村嫁到你们村为你服务,这就是跨设备服务调用,结婚那天,你在隔壁村请了个乐队,在隔壁的隔壁村请了个厨子,还在另一个村请了个主持人,一起来为你举办这场婚礼,这就是多屏协调。
1.3分布式软总线架构
通过协议货架和软硬协同层屏蔽各种设备的协议差别,总线中枢模块负责解析命令完成设备间发现和连接,通过任务和数据两条总线实现设备间文件传输、消息传输等功能。
说人话,举个栗子,假如你是一位古代的皇帝,你看上了邻国的一位公主,想娶她和她交个朋友,但是你又不好意思直说,于是你就让手下的大臣揣摩你的心思,总线中枢就好比中枢大臣,负责解析你这位皇帝的命令,在明白了你的意图后,开始去找邻国的公主(设备发现),找到后开始联系威胁邻国国王(设备连接),最后他屈服了,决定将公主嫁给你,设备ABCD就好比公主过来的各种交通方式(马车、船等),而WiFi、BT就比作沿途的各类本国军队(水军、陆军),通过朝廷的圣旨(一道命令)来使各不同的军队(不同协议)完成统一任务(协议货架),然后各类军队配合使用其擅长的交通工具(软硬协同)来护送公主,最后实现你下达的这道命令,不过由于你十分心急,而路途又十分漫长,所以一路士兵快马加鞭负责告诉你公主走到哪了(数据总线实现消息传输),另一路士兵马车来慢慢的运输公主(任务总线实现文件传输),所以你可以时刻知道公主的位置。通过大家将特定的角色代入上图应该就能大致明白这幅图的内容了。
分布式总线的总体目标是实现设备间无感发现,零等待传输。实现这个目标需要解决三个问题:
1.3.1设备间的发现和连接
从手动发现,进化成自发现。
比如手机上有很多照片需要传到个人PC上,我们可以采用蓝牙传输,首先要打开手机和PC的蓝牙发现功能,手机或者PC点击搜索设备,然后互相配对授权即可连接上,成功连上后就可以发送照片了。 在分享照片这个场景中有很多人为的动作:开启蓝牙发现功能、搜索设备、配对授权,这确实有点麻烦,耗费了很多时间,可能会降低分享的意愿。
软总线提出了自动发现的概念,实现用户零等待的自发现体验,附近同账号的设备自动发现无需等待。
而通过我们对分布式软总线的初步窥探,实现自发现依赖于设备虚拟化与普适计算等技术,而设备虚拟化我们即将在下一篇文章通过大佬的学术论文来进行解读希望我还能举出来生动形象的例子,欢迎大家催更哦~
1.3.2多设备互联后的组网技术
软总线组网-异构网络组网
上面的例子中手机传照片是通过蓝牙,假如PC没有蓝牙功能只有WIFI,在传统的场景中这种可能就不能实现分享传输了。因为不同的组网方式之间是隔离的,就好比一个说广东话的人和一个说武汉话的人很难有效沟通一样,因为这是两套方言,也就是两种沟通方式,所以我们要解决很多异构网络之间的组网问题。
软总线提出的异构网络组网可以很好解决设备间不同协议的交互问题,这就好比中间多了一个翻译员又会广东话又会武汉话,所以说广东话的那个人说的话可以被说武汉话的人听懂,就解决了手机通过蓝牙传输,而PC通过WIFI接收照片。解决方案如下图所示。
设备上线后会向网络层注册,同时网络层会与设备建立通道连接,实时检测设备的变换。网络层负责管理设备的上线下线变换,设备间可以监听自己感兴趣的设备,设备上线后可以立即与其建立连接,实现零等待体验。也就是说你可以理解为有一个管家一直盯着如果有设备上线了就会立马进行连接,而你就不再需要手动进行连接了,软总线可以自动构建一个逻辑全连接网络,用户或者业务开发者无需关心组网方式与物理协议。对于软件开发者来说软总线异构组网可以大大降低其开发成本。
传统开发模式:在传统开发模式中开发者需要适配不同网络协议和标准规范。
分布式开发模式:在HarmonyOS分布式开发模式中开发不再需要关心网络协议差异,业务开发与设备组网解耦,业务仅需监听设备上下线,开发成本大大降低。
这方面的相关技术与论文我们也会在对发现和组网结束以后来进行解读,欢迎大家持续关注哦~
1.3.3多设备多协议间的传输技术
传统协议的传输速率差异非常大,时延也难以得到保证。所以软总线传输要实现的目标有:高带宽(High Speed)、低时延(Low Latency)、高可靠(High Reliability)。软总线要实现的这三大目标的尖刀武器是:极简协议。
极简协议将中间的四层协议栈精简为一层提升有效载荷,有效传输带宽提升20%,并且在传统网络协议的基础上进行增强:
- 流式传输:基于UDP实现数据的保序和可靠传输;
- 双轮驱动:颠覆传统TCP每包确认机制;
- 不惧网损:摒弃传统滑动窗口机制,丢包快速恢复,避免阻塞;
- 不惧抖动:智能感知网络变化,自适应流量控制和拥塞控制;
想要理解这方面的协议可能需要计算机网络的前序知识,什么?你没时间不想学?那我们争取在后面一条龙就像前面总线一样给你讲明白!
ps:我们也是初学者,这仅仅是我的个人理解,可能有误以及不准确的地方,感谢各位大佬与前辈批评指正!
各位观众老爷的点赞评论就是我们更新的最大动力!也欢迎大家加入我们分布式软总线啃论文团队!
团队简介