采用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 ...
随机推荐
- Oracle 一些触发器自治事务相关错误
Oracle 一些触发器自治事务相关错误 table XXX is mutating,trigger/function may not see it 在触发器中调用的函数或者语句有查询当前表的操作,比 ...
- 面试题 02.07(Java). 链表相交(简单)
题目: 本题与:力扣160相交链表 一致 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表没有交点,返回 null . 图示两个链表在节点 c ...
- 力扣8(java)-字符串转整数(atoi)(中等)
题目: 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAtoi(string s) 的算法 ...
- 通过部署流行Web框架掌握Serverless技术
简介: 通过学习部署流行Web框架,如SpringBoot,Express,Web IDE,让你掌握Serverless函数计算架构和技术,领略弹性并发,高可用的好处.大家好,我是霍大侠,欢迎来到我的 ...
- 从零开始入门 K8s | 理解 CNI 和 CNI 插件
作者 | 溪恒 阿里巴巴高级技术专家 本文整理自<CNCF x Alibaba 云原生技术公开课>第 26 讲,点击直达课程页面. 关注"阿里巴巴云原生"公众号,回复关 ...
- 携手数字人、数字空间、XR平台,阿里云与伙伴共同建设“新视界”
简介:2022阿里云视觉计算私享会:加速虚拟与现实的交互. 引言:2022年互联网行业里XR.数字孪生.虚拟现实等领域再次"翻红".新旧概念频出,不少人相信这些技术将给当下的互联 ...
- PolarDB 并行查询的前世今生
简介:本文会深入介绍PolarDB MySQL在并行查询这一企业级查询加速特性上做的技术探索.形态演进和相关组件的实现原理,所涉及功能随PolarDB MySQL 8.0.2版本上线. 作者 | ...
- [GPT] 数据分析工具可以使用机器学习技术来预测未来趋势和提供数据可视化?
数据分析工具使用机器学习技术来预测未来趋势和提供数据可视化是靠谱的. 机器学习算法可以通过对历史数据的学习来发现数据中的模式和趋势,并利用这些模式和趋势来预测未来的趋势.这种方法已经被广泛应用于许 ...
- 8.k8s之调动pod到指定节点与创建多容器pod并查找pod日志
官方文档:将pod分配给节点题目1:调度pod到指定节点 设置配置环境kubectl config use-context k8s 按如下要求创建并调度一个pod: - 名称:nginx-kusc00 ...
- 最强AI直播换脸软件,DeepFaceLive下载介绍
DeepFaceLive是一款专注于直播实时换脸的AI软件,使用经过长时间训练的人脸模型替换摄像头中的人脸,能够产生接近电影质量的面部合成效果,提供高保真的视觉体验,在新版本中也支持了图片换脸(视频换 ...