更多信息请访问:与华为共建的Harmonyos技术社区https://harmonyos.51cto.com这是HarmonyOS低延迟原理的介绍-延迟和高可靠的消息传输,希望对你有所帮助。01近场通信实例1.1全场景智慧生活的典型问题在全场景智慧生活中,设备的种类和数量都在不断增加。设备(如IOT的智能门锁、摄像头、智能灯、智能窗帘)有不同的近场通信方式,包括wifi、蓝牙、NFC、usb、zigbee等。近场通信方式的选择如此之多,如何让这些设备方便高效的进行通信,让上层应用不需要考虑设备差异,就像使用“一个设备”一样,能够流畅的使用多个设备,才是全世界。场景智慧生活面临的一个典型问题。HarmonyOS分布式软总线为这一问题提供了可靠的解决方案,并通过简单的API接口向开发者开放。1.2如何保证控制消息(Message)的低延时和高可靠性下图是一个家庭场景下富设备和瘦设备的典型组网图。主要包括两类服务,黑线的上网服务和红线的近场服务。横向近场通信业务的物理信道比纵向互联网业务的物理信道种类更多,带宽也不同。HarmonyOS分布式软总线完全屏蔽了底层通信的差异,让上层应用可以使用几条简单的软总线。接口,就像使用本地接口一样,轻松实现多设备间的高速通信。以图1为例,将手机端游戏APP的操作界面投射到PAD上。如何在PAD上实现对手机游戏APP的控制,就像在手机上控制一样顺畅?其中,利用软总线的SendMessage接口完成PAD对手机的反控操作(华为Cast+技术)Message的无延迟传输起到了关键作用。具体实现如下:前提条件:1、手机和PAD均搭载HarmonyOS,具备分布式软总线能力。2、手机已将游戏APP的操作界面投射到PAD上。流程说明:1.发现手机首先使用软总线能力发现PAD设备,将手机上游戏APP的操作界面投射到PAD上。2、由于游戏APP本身是在手机上的,所以在PAD上操作手游APP是PAD对手机的“反控操作”,即将PAD上的控制信息反馈给手机手机执行,PAD与手机的连接需要通过软总线建立控制通道。软总线要选择最优的传输通道,并保证该通道上的数据以高优先级传输。3、PAD调用SendMessage接口将控制消息Message反馈给手机。4、手机接收并执行来自PAD的反控消息,并将执行结果反馈给PAD。整个过程的延迟要求在几百毫秒级别。上面描述的过程看似简单,但底层通信使用的是HarmonyOS分布式软总线的发现、连接和传输能力。本次不讲发现和连接的技术要点,只讲解传输的实现原理。02近场Message/Byte传输实现原理2.1实现过程描述HarmonyOS分布式软总线提供了两个接口,分别用于近场通信场景下长消息和短消息的传输。它们分别是SendMessage和SendByte。实现原理相同,如下图示例:图2中的APPX统一代表不同的上层应用。具体流程描述:1)设备A和设备B的APPX在初始化阶段会向软总线注册一个回调通知接口,用于在传输通道打开并接收到数据后通知APPX。2)设备A的APPX会通知设备B设备A上的APPX发送消息,设备A的APPX先将设备B的设备ID信息和识别APPX的信息发送给软总线,请求发送渠道。3)软总线要根据两台设备已有的物理通道类型(BR/BLE/WIFI2.4/Wifi5G/P2P),以及物理通道的负载和状态选择最优的传输通道装置。底层连接,同时完成传输层的连接建立,以及传输标识的内核态到用户态的映射,最后将传输通道标识传递给两者的上层APPX设备。4)设备A的APPX获取通道ID,然后调用SendMessage/SendByte接口与设备B的APPX进行通信。设备B的APPX也可以使用相同的方法与设备A进行通信。5)发送后结束,设备A的APPX可以调用关闭传输接口完成传输通道资源的释放。2.2Message/Byte传输注意事项1)Message类型主要用于低延迟、高可靠的服务,如游戏控制命令、物联网设备开关(灯开关、门窗开关)等,最大数据量不超过4KB。2)SendMessage传输Message类型的消息,HarmonyOS软总线在底层实现按照最高优先级进行传输,例如空口使用最高优先级的VO队列。所以在实际使用中,为了获得更低的延迟,最好在一帧数据中发送Message消息。例如1.5KB的大小保证了空口可以一帧发送,减少了空口资源竞争和backoff带来的时延开销。3)Byte类型主要用于传输比Message类型更大、要求更小时延的业务。例如,传输图片的缩略图。通常最大尺寸不超过4M。具体大小取决于设备的内存大小。对于一些内存较小的设备,Byte类型的消息不会超过4M。4)SendByte除了用于低延迟要求的基本业务数据传输外,还可以用于检测网络终端之间的延迟,比如检测当前网络传输1MB数据需要多长时间。5)在支持多条物理链路的情况下,不建议上层应用指定具体的物理链路,让HarmonyOS系统自动选择,系统会根据当前网络情况选择最优的传输通道。6)传输的回调接口不要有阻塞动作,尤其是连续传输,如果回调中有阻塞动作,传输性能会下降。本次简单介绍HarmonyOSMessage/Byte类型消息的底层传输原理。两者都是数据量(Byte/M)比较小的消息传输,非持久化的消息传输。对于大规模(G)和持久化的消息传输传输所需要的File和Stream类型的数据传输将在后续的技术分析文章中进行说明,敬请期待!更多信息请访问:与华为官方共建的鸿蒙科技社区https://harmonyos.51cto.com
