使用无服务器架构快速构建和扩展物联网项目
插图:© IoT For All 所以你已经推出了一款新的物联网产品,可能使用了AWS、Azure或其他主要云服务商提供的物联网框架,现在你的设备可以发送和接收来自云端的数据了。那么,你如何处理这些数据以获取有价值的洞察,比如设备健康遥测信息或用户行为追踪呢?目前有多种方法可以在云中搭建数据处理基础设施,这些方法在控制能力和复杂性之间各有取舍。无服务器架构(Serverless architecture)本质上是一种软件设计原则,它允许你在无需管理基础设施的情况下构建、扩展和运行服务,MistyWest 非常看好这种“无服务器”模式,它能帮助团队迅速构建并扩展云解决方案。为了帮助你更好地理解这种模式对物联网产品解决方案的适用性,我们提供了以下不同架构模式的概述,并告诉你在什么情况下应考虑将你的项目转向无服务器模式。 “无服务器架构可以让你完全将服务器的管理任务外包给云服务提供商,而你可以专注于应用程序代码的开发。” — MistyWest 点击推文 使用虚拟机 现在,传统的设置云处理管道的方法是启动一个虚拟机(VM)来运行你的处理代码,如果你希望获得更多的控制权,这也是推荐的方法。Azure Virtual Machines、AWS EC2 或 GCP Compute Engines 是一些常见的选择。你可以获得一个虚拟计算机,其运行代码的方式与在你个人电脑上运行类似。然而,这种方法的限制在于,单个虚拟机的处理能力很快就会跟不上需求,特别是当你处理来自成千上万个物联网设备的数据时。为了获得更多的处理能力,你可以添加更多的虚拟机,并在多个计算机之间分配处理任务。像 Kubernetes 和 Docker Swarm 这样的工具可以让你在多台机器上协调处理任务,而云服务商则提供如 AWS Elastic Kubernetes Service 和 Google Kubernetes Engine 这样的服务,以支持在云中跨多台机器管理任务。例如,AWS Elastic Beanstalk 或 Azure App Services 可以自动化设置和扩展常见网络开发框架(如 Django、Rails 和 Node),是帮助你管理这些任务的良好起点。然而,配置和设置协调工具可能非常复杂,需要大量时间与专业知识,而这些并不直接为客户带来价值。如果你希望快速构建原型以实现客户价值,并且你清楚自己的解决方案将扩展性很强,那么无服务器架构或许是更合适的选择。什么是无服务器架构? 无服务器架构让你可以完全将服务器的管理任务交给云服务提供商,而你可以专注于应用程序代码的开发。一个常见的架构子集是函数即服务(FaaS,Functions-as-a-Service)。但无服务器架构提供的内容远不止于此,从数据库和队列系统,到事件处理服务,每个云服务提供商都提供了丰富的选项以满足你的需求。 图1 - 多个手动配置的服务器 转向无服务器架构的好处 **成本节约**:一个优势在于,无服务器平台通常按函数运行的次数和持续时间来计费,因此你只需为你使用的计算时间付费。这可以在开发阶段降低运营成本,同时也能够自动扩展以应对上线需求。 **快速响应**:无服务器函数通常能够迅速响应需求的激增,因为平台会自动增加可用的计算资源来运行这些函数,负载减少后则自动减少资源。这可以高效利用资源,只在需要时分配计算能力。 **语言选项**:对多种编程语言有良好的支持,因此你很可能会用自己偏好的语言来构建无服务器函数。例如,AWS Lambda 本机支持 Java、Go、PowerShell、Node.js、C#、Python 和 Ruby,并提供运行时 API,允许使用其他编程语言。Azure Functions 支持 C#、JavaScript、F#、Java、PowerShell、Python 和 TypeScript。 **减少错误**:采用无服务器函数开发,会构建一个状态无依赖、无宿主的系统,这可以简化对系统的推理并减少与状态管理相关的一些复杂错误。 **数据管道**:借助你的物联网框架,可以设置自动、事件驱动的数据管道触发器和数据库存储。如果再接入可视化框架或开发内部仪表板,就可以立即监控进展。 **支付更少**:如果你启动了一个虚拟机,无论你是否充分利用其资源,或者只是闲置,你都需要付费。如果你的物联网设备很少发送小数据包,这种方式并不理想。即便你有成千上万个设备持续传输数据,数据包之间的空闲时间也会造成大量资源浪费,效率极低。使用无服务器架构,你可以只为实际使用的资源付费,并且平台会自动处理扩展,无需任何配置更改——无论你有一个设备还是一百万个设备。此外,如果你使用 Azure,并参考论文《Serverless in the Wild》的建议,你可以通过预测调用来显著减少冷启动延迟。 图2 - 在无服务器平台上运行的函数 转向无服务器架构的缺点 **控制较少**:使用无服务器平台的一个缺点是你对运行代码的实例缺乏更精细的控制,因为你无法控制底层硬件的配置。在无服务器环境中,处理能力、内存和处理时间的限制可能会成为瓶颈,而在虚拟机中你可以进行垂直扩展。 **长延迟**:另一个劣势是,由于平台在需求激增时会自动增加可用计算资源(例如启动更多虚拟机来运行函数),因此你对用户等待虚拟机启动时产生的延迟无法完全控制。这有时会导致第一个请求出现较长时间的延迟,称为“冷启动延迟”,这在对延迟高度敏感的应用中可能是个问题,但在大多数情况下并不会造成严重影响。弹性架构 网上有许多关于无服务器架构成本的比较;我们发现 Medium 上的《Serverless Transformation》和《The Burning Monk’s》分析非常有帮助。无服务器架构在物联网解决方案中高度适用,并且正在变得越来越流行。在全球数十亿物联网设备的背景下,拥有一个弹性架构对于快速推出产品是至关重要的。采用无服务器架构可以让你快速建立原型、快速失败,并在长期内战胜竞争者——只需注意所有底层特性,以充分发挥效益。推文分享邮件 大数据连接消费者物联网网络安全数据分析 → 大数据连接消费者物联网网络安全数据分析
查看全文
作者最近更新
-
Edge and IoT Predictions For 2024iotforall2023-12-22
评论0条评论