从零开始搭建物联网系统
联网业务数据语义的业务层协议。目前已经将业务层协议开源,希望对广大爱好者和从业者带来一定参考价值。
云端平台
互联网时代的用户上网终端主要是PC和手机等设备,可以想象,物联网时代,上网终端会呈多样化、海量化趋势。保守估计每人拥有数十套联网设备,数据规模必然也是几何倍增长。所以物联网云端平台注定是一个大规模的海量分布式系统。
目前很多爱好者或者厂商通过搭建简单的web系统(如php、nodejs、python实现的web接口)可以实现设备的联网,但是可以想象,在真正的商用场景中,稳定性、性能、扩展性都必然遭受冲击,无法应对。
在进行技术选型和架构设计时,我们也综合考虑以上因素进行设计和实现:
采用go语言作为主要开发语言。go语言有着简洁的语法,并且能够很方便地进行高并发程序的开发,在高性能云计算系统的开发中有着得天独厚的优势。
采用microservice分布式架构。microservice架构能够构建出更稳定、扩展性更好的分布式系统,也是目前分布式系统中最流行的架构方式。
使用docker降低运维成本。docker能够方便地对系统就行升级和出错回滚,保证了系统发布时的稳定性。
对外接口采用REST风格进行设计。REST风格的接口便于升级和兼容,并拥有非常易于理解的语义,降低开发者的学习门槛。
多副本部署。任何服务模块我们都保证同时至少有两个运行实例,并根据服务发现机制自动进行负载和调度,以增加系统可用性。
大体的云端架构如下图
目前我们的系统已经发布到0.8.0版本,后续会在安装和运维的便捷性上进行优化,并计划在1.0版本时开源发布。
嵌入式
物联网硬件的嵌入式软件除了传统部分,必须加入联网逻辑以及传感器、控制器的管理。为了提高开发效率、方便复用,我们设计并开发了轻量级的物联网嵌入式开发框架,并对物联网业务进行了抽象,以便移植到不同的硬件平台。我们希望做到的是,在不需要更改任何业务层代码的情况下,一个物联网嵌入式应用可以在不同的硬件平台运行。
当前很多大企业(华为、惠普、google等)都纷纷推出了物联网操作系统,后续物联网领域会出现多种操作系统共存的局面。不同的操作系统能运行的最低系统资源以及具体应用场景都不尽相同,但我们相信,物联网的上层业务是通用的,这也是我们设计物联网嵌入式开发框架的原因。
安全
近些日子,各种厂商的物联网设备纷纷传出被黑的消息。从TCL到特斯拉,黑客都成功实现破解和随意操控。和互联网时代一样,安全在物联网目前的早期阶段注定是容易被忽略的问题。为此我们也在设计系统时也没有掉以轻心:
所有接入层通信都采用tls进行加密,包括对app、业务服务器的开放接口。
用户、设备关键信息进行加密保存
针对设备有完善的用户鉴权机制
针对互联网安全场景的其他安全措施
安全不是一朝一夕的事情,需要从系统开始构建时就考虑,并不断完善安全手段和规则。
开发板
为了降低物联网硬件的开发成本,我们基于esp8266设计了物联网开发板Tisan,并在Tisan实现了我们的嵌入式开发框架及物联网协议。开发板相关的代码已经全部开源,目前在淘宝进行众筹。
为什么推出开发板?我们认为这是一种互相学习、交流及沉淀技术的工具,希望更多的爱好者能一起做出好产品。
以开源之名
光阴荏苒,白驹过隙。一路走来,我们执着地将所有设计慢慢付诸实现,为未来的物联网技术贡献自己的力量。物联网技术涉及的方向众多,我们的力量毕竟是有限的,这也是我们从一开始就以开源形式开发项目的原因。
Now, we are calling for contributors!
如果你对物联网和开源技术有着和我们一样的执着和爱好,欢迎关注或加入我们的开源项目。后续我们会逐渐开源发布所有的系统设计和项目。我们希望更多的小伙伴一起为项目做贡献,无论是提交issue,还是贡献代码。
Hope we are not alone.
物联网 相关文章:
- Dust Networks 拓展工业无线以外的领域(10-09)
- 无线传感器可放置在任何地方,以在长距离提供低功耗和可靠的无线传感器网络(12-08)
- 可靠、低功耗无线传感器网络适用于物联网: 使无线传感器像网络服务器一样易于使用(05-06)
- 低功率是物联网的关键(09-14)
- 为工业物联网正确选择无线网格网络协议以实现新应用(04-03)
- 针对工业 IoT 应用的主要无线要求(02-15)