写点什么

【架构中的物联网】影子机制

用户头像
soolaugust
关注
发布于: 2021 年 01 月 08 日
【架构中的物联网】影子机制

《架构中的物联网》文章主要是记录我在学习和思考物联网架构设计中的思路。主要从架构设计的角度解析物联网业务场景的解决方式。这些解决方式不仅仅局限于物联网领域,我希望能够透过这些设计来看到架构背后的思想。


image


业务场景

物联网领域中,设备的在线和离线是不可预知的。由于设备所在的网络环境复杂,甚至可能是极弱的网络条件。那么当我们需要读取当前的设备属性时,并不能保证一定可以读到。我们没有办法保证我们对设备的操作一定能够传达到设备中。那么在这种情况下如何保证我们服务的可靠性?

思路

我们如果对设计模式有一些了解,我们会发现有一种设计模式的思路很适合这个业务场景,那就是代理模式。既然我们无法保证操作自己的操作一定生效,那么我们就创建一个设备的代理,在物联网领域中,一般称之为设备影子(Device Shadow)。


image


设计

那么我们如何来设计设备影子呢?或者说一个设备影子至少需要具备什么能力才能称之为设备影子?我们来梳理一下:

基本需求

  • 设备影子至少要能缓存设备的状态,这个是基本的需求,也就是满足对设备“”的需求。

  • 设备影子需要能够处理针对设备的操作并保证最后生效,也就是满足对设备“”的需求。

  • 设备影子需要正确处理自身状态,保证和真实设备最终趋于一致。

架构


image.png


基于我们得到的需求,我们设计了四个模块:

  • 同步器:负责与真实设备的同步,主要是解决设备状态的下发和设备状态的检测。

  • 接口层:供上层服务调用,和真实设备的接口一致,可拓展接口。也就是设备的代理。

  • 处理引擎:负责保证设备真实状态和期望状态达成一致。保证设备影子和设备最终一致。

  • 状态存储:包括设备状态和上层操作的存储,也就是真实状态和期望状态。


image


总结

我们回过头来看,设备影子的架构符合了架构设计的以下原则:

  • 低耦合:通过抽象屏蔽了真实业务的复杂性,将上层服务和真实设备解耦。

  • 依赖抽象:上层服务不再依赖多变的真实设备,而是依赖可控的设备抽象。

通过这些原则,我们可以检查设备影子设计的优势。设备影子来源于真实的业务场景,目前被很多物联网架构所采用的。


发布于: 2021 年 01 月 08 日阅读数: 44
用户头像

soolaugust

关注

公众号:雨夜随笔 2018.09.21 加入

公众号:雨夜随笔

评论

发布
暂无评论
【架构中的物联网】影子机制