采用Dapr 的IoT 案例
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 可以使用最适合特定功能的编程语言开发微服务。

总而言之,迁移到 Dapr 和 Kubernetes 后,Nuboj 的架构变得更加模块化、可扩展、可维护和灵活。它现在可以处理海量数据流,并支持多种部署环境。这使得 Nuboj 成为更具竞争力的物联网平台。Dapr 和 Kubernetes 分别在解决 Nuboj 微服务架构的可伸缩性问题中发挥了重要作用:
Dapr 的作用:
- 解耦微服务: Dapr 通过抽象化服务间通信,使得微服务之间可以独立扩展和部署。这降低了微服务之间的依赖,并简化了扩展过程。
- 发布/订阅模式: Dapr 的发布/subscribe API 支持可扩展的消息传递,允许设备独立发送消息,而处理组件可以独立接收消息。这提高了系统的吞吐量和可扩展性。
- 基础设施抽象: Dapr 将底层基础设施技术(如数据库和消息传递系统)抽象化,使 Nuboj 可以轻松地在不同的环境中运行,而无需修改代码。
- 多语言支持: Dapr 支持多种编程语言,这使得 Nuboj 可以使用最适合特定功能的编程语言开发微服务。
Kubernetes 的作用:
- 自动化部署和扩展: Kubernetes 提供了自动化部署、扩展和管理功能,简化了微服务的部署和扩展过程,并确保了高可用性和可靠性。
- 负载均衡: Kubernetes 可以自动分配流量到不同的微服务实例,从而实现负载均衡并提高系统的吞吐量。
- 自我修复: Kubernetes 可以自动检测和恢复失败的微服务实例,从而提高了系统的可用性。
- 存储和网络管理: Kubernetes 提供了存储和网络管理功能,简化了微服务架构的运维工作。
采用Dapr 的IoT 案例的更多相关文章
- 单体应用 适合采用 dapr 构建吗?
缘起今天在微信群里有同学问 "纯.net 项目,有必要上dapr吗?" 当时不假思索的说不是微服务没必要,其他群友也说没必要.下午细想了一下,觉得这个和微服务没有关系,如果我的应用 ...
- 敢为人先,从阿里巴巴云原生团队实践Dapr案例,看分布式应用运行时前景
背景 Dapr是一个由微软主导的云原生开源项目,国内云计算巨头阿里云也积极参与其中,2019年10月首次发布,到今年2月正式发布V1.0版本.在不到一年半的时间内,github star数达到了1.2 ...
- windows10 IOT +Azure会议概要总结
windows10 IOT +Azure会议概要总结 会议资料将放到https://channel9.msdn.com/Blogs/WinHEC FAQ:msftsziot@microsoft.com ...
- Spring 事务管理案例
事务管理简介 Spring 事务管理有两种方式:一种是编程式事务管理,即通过编写代码实现事物管理,包括定义事务的开始,程序正常执行后的事物提交,异常时进行的事务回滚.另一种是基于AOP技术实现的声 ...
- Hadoop案例(二)压缩解压缩
压缩/解压缩案例 一. 对数据流的压缩和解压缩 CompressionCodec有两个方法可以用于轻松地压缩或解压缩数据.要想对正在被写入一个输出流的数据进行压缩,我们可以使用createOutput ...
- 走进MEasy的世界:基于STM32MP1的IOT参考设计
前言:在万物互联快速发展的趋势下,板卡处理器性能.内存大小.接口外设等都是人们非常关心的硬件参数,但是如何让硬件的作用实现它的功能最大化,一套完善的软件支持尤为重要. 背景:随着HTML5技术的发展, ...
- 规则引擎在IoT的重要性?
前言 物联网的强大功能主要来自于它使我们能够实时做出更准确的决策的能力,这些在通知.自动化和预测性维护上都有所体现.因此我们需要能对实时数据进行实时响应的工具,答案就是规则引擎.规则引擎可以通过摄取实 ...
- Dapr微服务应用开发系列0:概述
题记:Dapr是什么,Dapr包含什么,为什么要用Dapr. Dapr是什么 Dapr(Distributed Application Runtime),是微软Azure内部创新孵化团队的一个开源项目 ...
- Dapr 正式发布1.0
年前我写了一篇博客<Dapr 已在塔架就位 将发射新一代微服务>, 今天Dapr 正式发布了1.0 : Dapr Runtime v1.0.0 Dapr dotnet SDK v1.0.0 ...
- 浅析 Dapr 里的云计算设计模式
Dapr 实际上是把分布式系统 与微服务架构实践的挑战以及k8s 这三个主题的全方位的设计组合,特别是Kubernetes设计模式 一书作者Bilgin Ibryam 提出的Multi-Runtime ...
随机推荐
- ST语言
CODESYS平台的ST语言笔记 前言: 基于汇川plc软件,底层是CODESYS平台.这回ST语言正儿八经要用 所以要学,做笔记是为了梳理加深基础要点印象,顺便分享交流学习.codesys平台包括汇 ...
- background-blend-mode
由于 mix-blend-mode 这个属性的强大,很多应用场景和动效的制作不断完善和被发掘出来,遂另起一文继续介绍一些使用 mix-blend-mode 制作的酷炫动画. CSS3 新增了一个很有意 ...
- 力扣537(java)-复数乘法(中等)
题目: 复数 可以用字符串表示,遵循 "实部+虚部i" 的形式,并满足下述条件: 实部 是一个整数,取值范围是 [-100, 100]虚部 也是一个整数,取值范围是 [-100, ...
- 基于 Wasm 和 ORAS 简化扩展服务网格功能
简介: 本文将介绍如何使用 ORAS 客户端将具有允许的媒体类型的 Wasm 模块推送到 ACR 注册库(一个 OCI 兼容的注册库)中,然后通过 ASM 控制器将 Wasm Filter 部署到指定 ...
- WPF 对接 Vortice 调用 D2D 使用 IWICBitmap 离屏渲染
通过 Vortice 库可以使用非常底层的方式调用到 Direct2D1 进行渲染,本文将使用 D2D 离屏渲染到 IWICBitmap 上,再使用一点点反射黑科技,直接将此 IWICBitmap 对 ...
- 使用 Docker 搭建 gitea 私有仓库
一.准备材料 安装环境:linux 工具:docker 软件:MySql.gitea 二.安装Docker 安装Docker:https://www.cnblogs.com/jzcn/p/156937 ...
- WebStorm2023安装prettier并生效
1.首先去File > Settings > Plugins 里下载并install插件 Prettier 2.在settings里搜索prettier,按图片所示设置一下Apply 3. ...
- go-zero modd开发配置
目录 go-zero modd开发配置 modd配置 项目打包编排文件 nginx配置文件 各服务中的配置里要写上如下配置 go-zero modd开发配置 modd配置 modd.conf #use ...
- scp本地服务器和远程服务器拷贝文件
上传本地文件到服务器 scp 本地路径 用户名@远程服务器ip:远程路径 下载文件 scp 用户名@远程服务器ip:远程路径 本地路径 -r 是上传下载本地目录到远程 远程文件
- kkfileview搭建指南
最近公司有个需求,需要在线预览pdf,excel,world文档,pdf浏览器是直接支持预览的,vue也有很多插件支持,但是world文档和excel的方案就非常少了,市面上很多付费的,但是咱一般不舍 ...