在物联网领域,复杂性往往并非在于传感器,真正的复杂性在于各种传感器产生的大量数据,以及对这些数据的处理,所以开发者不得不花费大量的时间去构建和维护后端服务器来处理这样一个庞大的数据流。而在今天这个敏捷、快速迭代,对业务创新周期要求越来越短的时代,这无疑是难以接受的。本文我们将通过一个简单的物联网场景,基于函数工作流(FunctionGraph,FGS)来介绍一下无服务(Serverless)在物联网领域的应用。
函数工作流是一项基于事件驱动的函数托管计算服务,托管函数具备以毫秒级弹性伸缩、免运维、高可靠的方式运行。通过函数工作流,开发者无需配置和管理服务器,只需关注业务逻辑,编写函数代码,以无服务器的方式构建应用,便能开发出一个弹性高可用的后端系统,并按实际运行消耗的资源计费。极大地提高了开发和运维效率,减小了运作成本。
现在我们假设一种场景:对IOT的实时数据进行处理(比如格式转换),并进行转储。那么我们可以使用华为云的数据接入服务(DIS)采集IOT实时数据流,然后通过函数工作流(FunctionGraph)对采集到的数据进行实时的处理(比如格式转换),并存储到表格存储服务(CloudTable Service)中。架构图如下:
对于开发者来说,完全只需要关注FunctionGraph中函数的内容,即接收到DIS的数据流后对数据处理的业务逻辑(转换格式和存储),无需关注服务器,且整个系统的运行是弹性伸缩,按需计费的。开发者可以在函数工作流创建一个函数,编写代码,实现对数据的格式转换和向CloudTable的存储,然后为函数创建一个DIS触发器,对接DIS服务,通过事件触发的方式,我们的函数就会实时地去处理DIS中采集的IOT数据了,以此构建出一个无服务的IOT系统。
实现流程
1. 搭建用户私有的存储集群。进入虚拟私有云服务,创建虚拟私有云;进入表格存储服务,创建集群。
2. 创建函数,实现格式转换和存储的业务逻辑。进入函数工作流服务,创建函数,我们提供了一份Java语言的Demo供大家参考学习:源码和程序包(包含函数依赖)。
3. 配置DIS事件,测试函数,处理数据。
4. 创建DIS触发器,对接DIS服务。
总结:
通过基于函数工作流的无服务架构和传统架构的对比,我们可以看到其具有如下优点:
1. 无需关注任何服务器,只需关注核心业务逻辑;
2. 函数运行随业务量弹性伸缩,按需付费,执行才计费,低成本;
3. 事件触发,灵活易扩展;
4. 可以通过简单的配置连通函数工作流和其它云服务,比如本例中只需创建一个DIS触发器便可完成数据接入服务和函数工作流的连接,然后在函数中将数据存储到CloudTable,那么函数就像一个粘合剂一样将两个云服务连接在一起。