采用Dapr 的IoT 案例

news/2025/3/13 16:59:46/文章来源:https://www.cnblogs.com/shanyou/p/18235989

CNCF 发布了一篇Dapr 的IoT 案例:Tempestive uses Dapr and K8s to track IoT messages | CNCF。Tempestive 是一家物联网解决方案提供商,其产品 Nuboj 面临着可扩展性、成本和维护方面的挑战。为了解决这些问题,Tempestive 采用 Dapr 和 Kubernetes 构建了一个新的架构,实现了以下优势:

  • 模块化: Nuboj 现在可以灵活地适应不同规模和需求的系统,无需昂贵的基础设施。
  • 平台独立性: Dapr 允许 Nuboj 与底层技术解耦,例如数据库和消息传递软件,从而提高灵活性和可维护性。
  • 多语言支持: Dapr 使 Nuboj 能够使用多种编程语言进行开发,例如 C#、Java 和 Python,从而扩展其功能。
  • 成本降低: 新架构显著降低了产品成本,使 Tempestive 在市场上更具竞争力。


Tempestive 在采用 Dapr 和 Kubernetes 之前,Nuboj 的微服务架构遇到了以下可伸缩性问题:
1. 资源限制: 昂贵的资源: 早期版本 Nuboj 的微服务架构需要昂贵的资源才能实现可伸缩性,这增加了运营成本并限制了其扩展能力。
本地化需求: 一些客户需要一个可以从几台设备扩展到几十万台设备的本地解决方案,而早期版本 Nuboj 难以满足这种需求。
2. 扩展复杂性: 微服务间依赖: 早期版本 Nuboj 的微服务之间存在复杂的依赖关系,这增加了扩展的难度。修改或升级一个微服务可能会影响到其他微服务,导致系统出现故障或性能问题。
手动扩展: 早期版本 Nuboj 的扩展需要手动操作,这不仅效率低下,而且容易出错。
3. 运维挑战: 部署和监控: 早期版本 Nuboj 的微服务架构需要手动部署和管理,这增加了运维成本和复杂性。此外,监控和调试微服务也更加困难。
故障恢复: 早期版本 Nuboj 的故障恢复机制不够完善,这导致系统在出现故障时难以快速恢复,从而影响了系统的可用性。
4. 环境限制: 云依赖: 早期版本 Nuboj 基于云的架构限制了其在本地环境中的部署能力,这无法满足一些客户对数据安全性和成本控制的需求。


Tempestive 在采用 Dapr 和 Kubernetes 之前,Nuboj 的微服务架构面临着资源限制、扩展复杂性、运维挑战和环境限制等问题,这些问题限制了其可伸缩性和可用性。迁移到 Dapr 和 Kubernetes 后,Nuboj 的架构发生了以下关键变化:
1. 微服务架构:
模块化: Nuboj 从单体应用转变为微服务架构,将功能划分为独立的微服务模块。这提高了系统的可扩展性和可维护性,并允许各个模块独立部署和升级。
独立性: 微服务之间通过 Dapr 提供的 gRPC API 进行通信,无需直接依赖。这提高了系统的灵活性和可移植性,并允许使用不同编程语言开发微服务。
2. 发布/订阅消息传递:
解耦: 使用 Dapr 的发布/subscribe API,Nuboj 可以解耦发布者和订阅者。这意味着设备可以独立发送消息,而处理组件可以独立接收消息,无需直接相互依赖。
可扩展性: 发布/subscribe 模式支持消息代理(如 MQTT、Redis 或 Kafka),这些代理可以有效地处理大量消息,并确保消息的可靠传递。
负载均衡: 消息代理可以自动分配消息到不同的订阅者,从而实现负载均衡并提高吞吐量。
3. 容器化和自动化部署:
容器化: Nuboj 的微服务被容器化,这允许它们在不同的环境中一致地运行,并简化了部署和扩展过程。
Kubernetes 集群: Nuboj 使用 Kubernetes 集群来管理容器化的微服务。Kubernetes 提供了自动化部署、扩展和管理功能,并确保了高可用性和可靠性。
4. 基础设施抽象:
平台独立性: Dapr 将底层基础设施技术(如数据库和消息传递系统)抽象化,使 Nuboj 可以轻松地在不同的环境中运行,而无需修改代码。
灵活的配置: Dapr 允许通过配置文件轻松地更改底层基础设施技术,例如使用不同的数据库或消息代理。
5. 多语言支持:
编程语言独立性: Dapr 支持多种编程语言,例如 C#、Java、Python 等。这使得 Nuboj 可以使用最适合特定功能的编程语言开发微服务。

dapriotcase

总而言之,迁移到 Dapr 和 Kubernetes 后,Nuboj 的架构变得更加模块化、可扩展、可维护和灵活。它现在可以处理海量数据流,并支持多种部署环境。这使得 Nuboj 成为更具竞争力的物联网平台。Dapr 和 Kubernetes 分别在解决 Nuboj 微服务架构的可伸缩性问题中发挥了重要作用:


Dapr 的作用:

  • 解耦微服务: Dapr 通过抽象化服务间通信,使得微服务之间可以独立扩展和部署。这降低了微服务之间的依赖,并简化了扩展过程。
  • 发布/订阅模式: Dapr 的发布/subscribe API 支持可扩展的消息传递,允许设备独立发送消息,而处理组件可以独立接收消息。这提高了系统的吞吐量和可扩展性。
  • 基础设施抽象: Dapr 将底层基础设施技术(如数据库和消息传递系统)抽象化,使 Nuboj 可以轻松地在不同的环境中运行,而无需修改代码。
  • 多语言支持: Dapr 支持多种编程语言,这使得 Nuboj 可以使用最适合特定功能的编程语言开发微服务。


Kubernetes 的作用:

  • 自动化部署和扩展: Kubernetes 提供了自动化部署、扩展和管理功能,简化了微服务的部署和扩展过程,并确保了高可用性和可靠性。
  • 负载均衡: Kubernetes 可以自动分配流量到不同的微服务实例,从而实现负载均衡并提高系统的吞吐量。
  • 自我修复: Kubernetes 可以自动检测和恢复失败的微服务实例,从而提高了系统的可用性。
  • 存储和网络管理: Kubernetes 提供了存储和网络管理功能,简化了微服务架构的运维工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/721101.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微前端学习笔记(5):从import-html-entry发微DOM/JS/CSS隔离

import-html-entry 是 qiankun 中一个举足轻重的依赖,用于获取子应用的 HTML 和 JS,同时对 HTML 和 JS 进行了各自的处理,以便于子应用在父应用中加载。import-html-entry主要是实现了以下几个能力拉取 url 对应的 html 并且对 html 进行了一系列的处理拉取上述 html 中所有…

知攻善防应急

知攻善防应急靶场一 小李在值守的过程中,发现有 CPU 占用飙升,出于胆子小,就立刻将服务器关机,并找你帮他分析,这是他的服务器系统,请你找出以下内容,并作为通关条件: 1.攻击者的 shell 密码 rebeyond D盾扫网站,什么也没有,估计是靶机开启安全中心了,杀掉了可疑文件…

微前端学习笔记(4):从微前端到微模块之EMP与hel-micro方案探索

页面级别的微前端粒度太粗,有时候需要更细粒度的微前端,例如:组件、函数级别的。这种场景,就可以使用远程模块,来实现微模块的效果。ModuleFederation是啥? Module Federation就是一个JavaScript远程模块加载架构,即:Module federation allows a JavaScript applicatio…

微前端学习笔记(1):微前端总体架构概述,从微服务发微

目前较成熟的微前方案有 qiankun、micro-app、EMP 方案,但是它们与MF有着本质的不同,那就是对“微前端”的定义:方案微的定义微前端的从最初的CS架构,如MFC Java Swing 等,到BS架构,JSP PHP,再到前端后端分离,前端从jquery GWT-Ext 到 Handlebars ,再到angularJS/Vu…

WrodPress基础之前期7个必要的基本设置

不管使用宝塔面板搭建WordPress还是1Panel面板的方式,一个新WordPress网站需要做一些基本设置才能正式的去设计页面,填充网站内容。 1. 确保网站勾选“建议搜索引擎不收录” 网站正式上线前,我们需要反复设计页面,打磨文案,填充内容,操作过程中必然会产生一些无用的链接,…

基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证

1.算法运行效果图预览 FPGA的仿真图如下:将数据导入MATLAB,对比结果如下: 2.算法运行软件版本 MATLAB2022avivado2019.23.部分核心程序`timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2023/01/19 01:47:15 // Design Name: // Module Name: im2b…

令你醍醐灌顶的一句话是什么

令你醍醐灌顶的一句话是什么?职场江湖 ​分享外面看不到的职场经验、人情世故和社会潜规则已关注33 人赞同了该文章1、层次越低的人,反驳欲就越强。2、如果别人说你两句,你就受不了,被两句话干扰得吃不好,睡不好你得有多脆弱,你要明白的,能干扰你的,往往是自己的太在意…

C语言通过socket实现TCP客户端

基于socket,通过C语言实现TCP客户端socket概念 ​ 从wiki上了解,socket这个词追溯到 1971 年 RFC 147 的发布。 ​ 目前我的理解:常用于指操作系统提供的 API,该 API 允许使用 TCP、UDP 进行连接,但不仅限于 TCP、UDP 协议。 实现目的 利用系统提供函数接口,通过C语言实现…

一键云部署:资源编排 ROS 轻松部署 LLM 流程编排服务 Flowise

Flowise是一个开源的低代码工具,供开发者构建定制化的 LLM 流程编排和 AI 代理。资源编排服务(Resource Orchestration Service, ROS)是阿里云提供基于基础设施即代码(Infrastructure as Code, IaC) 理念的自动化部署服务,我们可以通过定义一个 JSON/YAML/Terraform 模板…

CUDA程序优化-1.基础介绍

介绍CUDA的基本概念和架构,帮助读者建立对CUDA的初步认识,包括硬件架构/CUDA基础等内容简介 本合集主要介绍我在开发分布式异构训练框架时的CUDA编程实践和性能优化的相关内容。主要包含以下几个部分:介绍CUDA的基本概念和架构,帮助读者建立对CUDA的初步认识,包括硬件架构/…

第二次博客作业

前言 这次的作业是第一次博客作业的迭代和新的一个大作业的两次迭代三次大作业的组合。 1.第四次大作业 这次大作业输入信息分为5种:题目信息、试卷信息、答卷信息、学生信息、删除题目信息。信息可能会打乱且顺序混合输入。需要正则表达式判断是否满足格式,只有正确的格式才…

第二次blog总结

一、前言:第四次pta作业: 1.知识点:考察类的继承,抽象类的使用。 2.题量:3道简单题,1道迭代难题。 3.难度:这次最后一道题在上次的基础上添加了题目的种类( eg: 选择题、填空题 )等,难度增加的还行,不算太难也不算太容易。第五次pta作业: 1.知识点:考察类实现Comp…