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

╄→гoц情女王★ 提交于 2021-01-08 18:25:47

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



业务场景



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


思路



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



设计



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


基本需求


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

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

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


架构



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

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

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

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

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



总结



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

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

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

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



如果喜欢,欢迎点亮






本文分享自微信公众号 - 雨夜随笔(yuye_suibi)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!