分布式任务调度实现原理最为核心的问题是设备之间的通信问题。
PRC主要涉及三方面,即接口定义、序列化和反序列化。要实现PRC,必须要实现IRemoteBroker接口。同时,需要在本地及对端分别实现对外接口一致的代理。一个具备加法能力的代理示例如下:
HarmonyOS设备之间的通信原理如图6-9所示。
图6-9 HarmonyOS设备之间的通信
无论是调用本地设备还是远程设备的Ability,HarmonyOS都是通过RemoteObject来实现的。当初次调用远程设备时,会先通过分布式调度平台获取到远程设备的一个句柄。在后续的通信过程中,本地设备就可以不必再依赖分布式调度平台而直接通过句柄去跟远程设备进行通信,从而提升通信效率。
HarmonyOS设备与其他OS设备之间的通信原理如图6-10所示。
与HarmonyOS设备之间的通信不同,HarmonyOS设备与其他OS设备之间无法直接通过句柄去调用,因此分布式调度平台充当了HarmonyOS设备与其他OS设备之间的代理。所有的通信必须经过分布式调度平台,分布式调度平台会做调用过程中的序列化和反序列化。因此,从通信效率而言,HarmonyOS设备与其他OS设备之间的通信效率肯定要低于HarmonyOS设备之间的通信。
图6-10 HarmonyOS设备与其他OS设备之间的通信