采用Dapr 的IoT 案例
合集 - Dapr(46)
1.Dapr中国社区活动之 分布式运行时开发者日 (2022.09.03)2022-08-312.Dapr 的 gRPC组件(又叫可插拔组件)的提案2022-09-103.Dapr v1.9.0 版本已发布2022-10-214.Dapr 长程测试和混沌测试2022-10-045.Dapr 集成 Open Policy Agent 实现 接口的访问控制2022-09-226.Dapr 证书过期了怎么办? 别慌,有救!2022-09-197.Dapr v1.13 版本已发布03-068.通过 Radius 实现Dapr 云原生应用程序开发协作2023-10-199.Dapr 发布模糊测试报告|Dapr 完成模糊测试审核2023-07-0410.Dapr v1.11 版本已发布2023-06-1411.Dapr Workflow构建块的.NET Demo2023-02-1812.Dapr v1.10.0 版本已发布2023-02-1713.使用 Visual Studio 2022 调试Dapr 应用程序2022-12-1114.读Bilgin Ibryam 新作 《Dapr 是一种10倍数 平台》2022-11-2015.Dapr 与 .NET Aspire 结合使用获得无与伦比的本地开发体验05-1716.用于演示文稿的新 Dapr 幻灯片03-1417.Dapr 正式发布1.02021-02-1718.Dapr Actor 的微服务架构2021-03-1319.为什么 Dapr 如此令人兴奋2021-10-0220.浅析 Dapr 里的云计算设计模式2021-09-0621.Dapr 客户端 搭配 WebApiClientCore 玩耍服务调用2021-08-0522.面向.NET开发人员的Dapr- actors 构建块2021-07-0423.AKS 集群扩展方式提供 Dapr2022-02-1224.在 Dapr 中使用 Cron 绑定的计划任务2022-02-0625.从服务之间的调用来看 我们为什么需要Dapr2022-02-0526.推荐一个基于Dapr的 Red Dog 的完整微服务应用程序2022-02-0427.使用 Dapr 缩短软件开发周期,提高工作效率2022-01-2428.Dapr 集成 APISIX 做API网关2021-11-1529.集成Dapr的 Azure 容器应用2021-11-0430.单体应用 适合采用 dapr 构建吗?2021-10-1531.离线安装 Dapr2022-07-2632.腾讯云EKS 上部署 eshopondapr2022-07-1233.Dapr v1.8 正式发布2022-07-0934.Dapr 1.7 之 Unix Domain socket 他来了2022-06-0435.Dapr 不是服务网格,只是我长的和他很像2022-05-0836.Dapr 远程调试之 Nocalhost2022-04-2137.Dapr 和 Spring Cloud 对比分析2022-04-1838.在边缘计算场景中使用Dapr2022-04-1439.分布式应用运行时 Dapr 1.7 发布2022-04-1340.在非k8s 环境下 的应用 使用 Dapr Sidekick for .NET2022-04-0741.Dapr集成之GRPC 接口2022-03-1542.在 k8s 以外的分布式环境中使用 Dapr2022-03-1343.Dapr 弹性的策略2022-03-1244.Dapr 助力应用架构的可持续性2022-02-2645.Dapr 中文社区汇总2022-02-24
46.采用Dapr 的IoT 案例06-06
收起
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 提供了存储和网络管理功能,简化了微服务架构的运维工作。