【云上苏城,以梦为码】华为云MVP李志伟:披荆斩棘,只为研发IoT领域的“万能药”
2020年我们经历很多:新冠疫情、洪灾、新基建、北斗商用……
因为疫情,让一切都慢了下来,李志伟决定趁此机会,定心打磨好公司的物联网赋能产品——数据池,待时机成熟厚积薄发。
在这个过程中,他学习了新的编程语言,接触了新的大数据技术,体验了华为云的一系列服务,最终,如愿完成了数据池从无到有的开发。
小码农的大目标
李志伟自诩是一个小码农,从事软件开发10多年的他,既在小公司独当一面过,也在大公司技术深造过,还有着不为外人道也的创业艰辛史。
谈起做数据池的初衷,李志伟回忆起不少往事。
“记得刚进公司那会儿,跟CEO讨论公司发展现状及未来规划时,他对我说需要一个底层物联网设备接入服务。就这句话让我在这有了明确目标,我决定去设计一款能接入任何物联设备的服务应用。”
然而简单的一句需求,背后却是海量的技术问题。
当前,仅物联网通讯协议就让人眼花缭乱,TCP、UDP、MQTT、COAP、http、WebSoket、串口等等。、通信协议之外,还有不同的消息格式,例如 json、XML、紧凑型Hex数据包、分割型数据包、KTV形式数据等等。如果要满足能接入任何物联设备,势必要先集成各种通信协议,解决各种消息体如何解析的问题。
搞清楚这些基础内容后,李志伟开始用C#写了一个初版数据池服务,然而结果不尽人意,因为物联网设备并发量已经远远超出C#构建的项目承载量。
几经筛选对比,他果断弃C#选择Go作为开发架构,并利用各种碎片化时间强化学习Go。功夫不负有心人,换了Go以后,之前用C#构架的并发问题被Go几行代码解决了。
计算、存储、转发三步走
解决好大的框架后,接下来就要考虑物联网数据的计算、存储、转发。
首先,传感器采集到的是一个电流值或者电压值,这个值需要经过一个计算才能转化成最终值。
基于这个场景,李志伟集成了JavaScript语法糖,虽然JavaScript语法糖性能不佳,但是能满足数据的任意计算。
其次是数据的存储,李志伟采用了开放式的设计理念,支持存储到任意类型的数据库中。不过考虑到物联网数据的特殊性,目前主要以MongoDB为主。它的分布式架构以及特有的数据分桶设计,适合海量的物联数据,同时能大大减少数据存体量,做到物联数据不失真。
最后是数据转发的设计,目前支持任意通信协议以及任意消息体数据转发。李志伟说,“这样的设计理念,能够支持设备平台之间的数据互通,以及平台和平台数据,设备和设备数据的互通。”
在整个产品设计的过程中,李志伟也应用了不少华为云的服务。
比如他们公司在与华为云合作的初期,就用上了免费的鲲鹏云服务器资源,这是一款由华为自研的ARM架构的服务器。
李志伟表示,“公司底层架构服务在上面能完美兼容运行,综合性能表现完美,在同等配置下,性能会优于传统的X86架构的服务器,这点在我们这也得到验证。”
而且由于物联开发应用平台需要整合多个设备的数据,服务器的内存、CPU总是不够用,需要扩充,使用鲲鹏云服务器也节约了不小的一笔硬件成本。
再往后,李志伟接触到了华为云IoT平台,以他在研的数据池服务为例,目前只做到物联数据的解析、分发,诸如物联大数据的资产模型、离线分析、实时分析、时序分析等解决方案则由华为云IoT平台提供,减轻了他们不少的工作量。
最后:
在AI方面,李志伟也深受华为云ModelArts的启发,思迪数据池后续也会身赋AI能力,大家可以拭目以待。
- 点赞
- 收藏
- 关注作者
评论(0)